Я хотел бы использовать dnspython
для разрешения некоторых имен, но не понимаю, почему некоторые хосты разрешены, а некоторые нет (несмотря на то, что все решаются в оболочке)
На уровне оболочки:
C:\Windows\System32>ping -n 1 google.com
Pinging google.com [216.58.213.174] with 32 bytes of data:
Reply from 216.58.213.174: bytes=32 time=2ms TTL=52
(...)
C:\Windows\System32>ping -n 1 rpi1.swtk.info
Pinging rpi1.swtk.info [192.168.10.239] with 32 bytes of data:
Reply from 192.168.10.239: bytes=32 time=11ms TTL=63
(...)
rpi1.swtk.info
- это внутренний хост, разрешенный через внутренний DNS.
То же упражнение в Python:
C:\Windows\System32>python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import dns.resolver
>>> resolver = dns.resolver.Resolver()
>>> a = resolver.query('google.com', dns.rdatatype.A)
>>> a[0]
<DNS IN A rdata: 172.217.19.238>
>>> a = resolver.query('rpi1.swtk.info', dns.rdatatype.A)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files (x86)\Python36-32\lib\site-packages\dns\resolver.py", line 1002, in query
raise NXDOMAIN(qnames=qnames_to_try, responses=nxdomain_responses)
dns.resolver.NXDOMAIN: None of DNS query names exist: rpi1.swtk.info.
Какой DNS-распознаватель dnspython
использует?
Примечания:
Сервер, настроенный на компьютере с Windows 10, я 127.0.0.1
,
это правильно (это сервер unbound
, используемый для отправки
трафик на разные серверы).
Ожидается, что не использование 127.0.0.1
в качестве DNS-сервера приведет к ошибке при разрешении rpi1.swtk.info
, поэтому я предпочитаю, что dnspython
использует что-то другое, чем сервер по умолчанию (который будет удивительно, хотя).