Я использую WSL2, Ubuntu 22 в Windows 10. nslookup
Без подключения к VPN я получаю следующие результаты (обратите внимание, что все ответы — это разные IP-адреса для полного доменного имени google.com).
daniel@DESKTOP-6M0RKK1:~
⤷ nslookup google.com
Server: 172.23.144.1
Address: 172.23.144.1#53
Non-authoritative answer:
Name: google.com
Address: 142.251.116.139
Name: google.com
Address: 142.251.116.102
Name: google.com
Address: 142.251.116.100
Name: google.com
Address: 142.251.116.113
Name: google.com
Address: 142.251.116.101
Name: google.com
Address: 142.251.116.138
Однако при подключении к VPN ответы меняются, показывая также ответы IP-адресов некоторых DNS-серверов.
daniel@DESKTOP-6M0RKK1:~
⤷ nslookup google.com
Server: 172.23.144.1
Address: 172.23.144.1#53
Non-authoritative answer:
Name: google.com
Address: 142.251.135.110
Name: ns1.google.com
Address: 216.239.32.10
Name: ns2.google.com
Address: 216.239.34.10
Name: ns3.google.com
Address: 216.239.36.10
Name: ns4.google.com
Address: 216.239.38.10
Я показываю пример с google.com
, но это происходит с любым URL, который я пытаюсь найти. И это симптом, настоящая проблема в том, что другие команды (например curl
) используют случайный(?) IP из списка разрешений при запросе, и иногда запрос отправляется на первый IP, выполняясь успешно, но в других случаях запрос в конечном итоге отправляется на DNS-серверы вместо правильного IP.
Прямо сейчас я понятия не имею, где искать проблемы. Я не знаю, в чем проблема: в неправильной настройке WSL, в сети Windows или, может быть, в DNS-сервере VPN. Поэтому любая помощь будет очень кстати.
Ps.: Разрешение из Windows напрямую работает нормально с подключенным VPN. Проблема только внутри WSL.
Редактировать: Добавление отладочного вывода. Похоже, что записи Authority
и Additional
объединяются, Answers
когда поиск использует шлюз интерфейса WSL в качестве сервера имен.
Вывод nslookup -debug google.com
из системы WSL2.
Эта команда должна использовать шлюз WSL в качестве сервера имен и затем отправлять запрос на сервер имен VPN.
daniel@DESKTOP-6M0RKK1:~
⤷ nslookup -debug google.com
Server: 172.23.144.1
Address: 172.23.144.1#53
------------
QUESTIONS:
google.com, type = A, class = IN
ANSWERS:
-> google.com
internet address = 142.251.133.174
ttl = 0
-> ns1.google.com
internet address = 216.239.32.10
ttl = 0
-> ns2.google.com
internet address = 216.239.34.10
ttl = 0
-> ns3.google.com
internet address = 216.239.36.10
ttl = 0
-> ns4.google.com
internet address = 216.239.38.10
ttl = 0
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name: google.com
Address: 142.251.133.174
Name: ns1.google.com
Address: 216.239.32.10
Name: ns2.google.com
Address: 216.239.34.10
Name: ns3.google.com
Address: 216.239.36.10
Name: ns4.google.com
Address: 216.239.38.10
Вывод nslookup -debug google.com 10.0.24.151
из системы WSL2.
Эта команда должна напрямую использовать сервер имен VPN.
daniel@DESKTOP-6M0RKK1:~
⤷ nslookup -debug google.com 10.0.24.151
Server: 10.0.24.151
Address: 10.0.24.151#53
------------
QUESTIONS:
google.com, type = A, class = IN
ANSWERS:
-> google.com
internet address = 142.251.133.174
ttl = 227
AUTHORITY RECORDS:
-> google.com
nameserver = ns1.google.com.
ttl = 5636
-> google.com
nameserver = ns2.google.com.
ttl = 5636
-> google.com
nameserver = ns4.google.com.
ttl = 5636
-> google.com
nameserver = ns3.google.com.
ttl = 5636
ADDITIONAL RECORDS:
-> ns1.google.com
internet address = 216.239.32.10
ttl = 92272
-> ns2.google.com
internet address = 216.239.34.10
ttl = 92272
-> ns3.google.com
internet address = 216.239.36.10
ttl = 18575
-> ns4.google.com
internet address = 216.239.38.10
ttl = 18575
------------
Non-authoritative answer:
Name: google.com
Address: 142.251.133.174
Вывод nslookup -d google.com
из Windows.
Эта команда должна использовать сервер имен VPN напрямую. Вывод был отредактирован, чтобы не отображать имена, связанные с компанией, в которой я работаю.
PS C:\Users\danie> nslookup -d google.com
------------
Got answer:
HEADER:
opcode = QUERY, id = 1, rcode = NOERROR
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 7, additional = 7
QUESTIONS:
151.24.0.10.in-addr.arpa, type = PTR, class = IN
ANSWERS:
-> 151.24.0.10.in-addr.arpa
name = s2-<redacted>
ttl = 900 (15 mins)
AUTHORITY RECORDS:
-> 10.in-addr.arpa
nameserver = s17-<redacted>
ttl = 900 (15 mins)
-> 10.in-addr.arpa
nameserver = s343-<redacted>
ttl = 900 (15 mins)
-> 10.in-addr.arpa
nameserver = s2-<redacted>
ttl = 900 (15 mins)
-> 10.in-addr.arpa
nameserver = s344-<redacted>
ttl = 900 (15 mins)
-> 10.in-addr.arpa
nameserver = s1-<redacted>
ttl = 900 (15 mins)
-> 10.in-addr.arpa
nameserver = <redacted>
ttl = 900 (15 mins)
-> 10.in-addr.arpa
nameserver = <redacted>
ttl = 900 (15 mins)
ADDITIONAL RECORDS:
-> s1-<redacted>
internet address = 10.0.16.253
ttl = 900 (15 mins)
-> <redacted>
internet address = 10.17.0.4
ttl = 900 (15 mins)
-> s17-<redacted>
internet address = 10.8.74.34
ttl = 900 (15 mins)
-> <redacted>
internet address = 10.58.0.240
ttl = 900 (15 mins)
-> s2-<redacted>
internet address = 10.0.24.151
ttl = 900 (15 mins)
-> s343-<redacted>
internet address = 10.0.29.143
ttl = 900 (15 mins)
-> s344-<redacted>
internet address = 10.0.29.144
ttl = 900 (15 mins)
------------
Server: s2-<redacted>
Address: 10.0.24.151
------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NXDOMAIN
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
google.com.<redated_internal_suffix>, type = A, class = IN
AUTHORITY RECORDS:
-> <redated_internal_suffix>
ttl = 900 (15 mins)
primary name server = s2-<redacted>.<redated_internal_suffix>
responsible mail addr = root.s2-<redacted>
serial = 2023071101
refresh = 86400 (1 day)
retry = 7200 (2 hours)
expire = 2592000 (30 days)
default TTL = 345600 (4 days)
------------
------------
Got answer:
HEADER:
opcode = QUERY, id = 3, rcode = NXDOMAIN
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
google.com.<redated_internal_suffix>, type = AAAA, class = IN
AUTHORITY RECORDS:
-> <redated_internal_suffix>
ttl = 900 (15 mins)
primary name server = s2-<redacted>
responsible mail addr = root.s2-<redacted>
serial = 2023071101
refresh = 86400 (1 day)
retry = 7200 (2 hours)
expire = 2592000 (30 days)
default TTL = 345600 (4 days)
------------
------------
Got answer:
HEADER:
opcode = QUERY, id = 4, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 4, additional = 8
QUESTIONS:
google.com, type = A, class = IN
ANSWERS:
-> google.com
internet address = 142.250.79.14
ttl = 23 (23 secs)
AUTHORITY RECORDS:
-> google.com
nameserver = ns2.google.com
ttl = 6075 (1 hour 41 mins 15 secs)
-> google.com
nameserver = ns4.google.com
ttl = 6075 (1 hour 41 mins 15 secs)
-> google.com
nameserver = ns3.google.com
ttl = 6075 (1 hour 41 mins 15 secs)
-> google.com
nameserver = ns1.google.com
ttl = 6075 (1 hour 41 mins 15 secs)
ADDITIONAL RECORDS:
-> ns1.google.com
internet address = 216.239.32.10
ttl = 92711 (1 day 1 hour 45 mins 11 secs)
-> ns2.google.com
internet address = 216.239.34.10
ttl = 92711 (1 day 1 hour 45 mins 11 secs)
-> ns3.google.com
internet address = 216.239.36.10
ttl = 19014 (5 hours 16 mins 54 secs)
-> ns4.google.com
internet address = 216.239.38.10
ttl = 19014 (5 hours 16 mins 54 secs)
-> ns1.google.com
AAAA IPv6 address = 2001:4860:4802:32::a
ttl = 160225 (1 day 20 hours 30 mins 25 secs)
-> ns2.google.com
AAAA IPv6 address = 2001:4860:4802:34::a
ttl = 160225 (1 day 20 hours 30 mins 25 secs)
-> ns3.google.com
AAAA IPv6 address = 2001:4860:4802:36::a
ttl = 160225 (1 day 20 hours 30 mins 25 secs)
-> ns4.google.com
AAAA IPv6 address = 2001:4860:4802:38::a
ttl = 160225 (1 day 20 hours 30 mins 25 secs)
------------
Non-authoritative answer:
------------
Got answer:
HEADER:
opcode = QUERY, id = 5, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 4, additional = 8
QUESTIONS:
google.com, type = AAAA, class = IN
ANSWERS:
-> google.com
AAAA IPv6 address = 2800:3f0:4004:808::200e
ttl = 41 (41 secs)
AUTHORITY RECORDS:
-> google.com
nameserver = ns1.google.com
ttl = 6075 (1 hour 41 mins 15 secs)
-> google.com
nameserver = ns3.google.com
ttl = 6075 (1 hour 41 mins 15 secs)
-> google.com
nameserver = ns4.google.com
ttl = 6075 (1 hour 41 mins 15 secs)
-> google.com
nameserver = ns2.google.com
ttl = 6075 (1 hour 41 mins 15 secs)
ADDITIONAL RECORDS:
-> ns1.google.com
internet address = 216.239.32.10
ttl = 92711 (1 day 1 hour 45 mins 11 secs)
-> ns2.google.com
internet address = 216.239.34.10
ttl = 92711 (1 day 1 hour 45 mins 11 secs)
-> ns3.google.com
internet address = 216.239.36.10
ttl = 19014 (5 hours 16 mins 54 secs)
-> ns4.google.com
internet address = 216.239.38.10
ttl = 19014 (5 hours 16 mins 54 secs)
-> ns1.google.com
AAAA IPv6 address = 2001:4860:4802:32::a
ttl = 160225 (1 day 20 hours 30 mins 25 secs)
-> ns2.google.com
AAAA IPv6 address = 2001:4860:4802:34::a
ttl = 160225 (1 day 20 hours 30 mins 25 secs)
-> ns3.google.com
AAAA IPv6 address = 2001:4860:4802:36::a
ttl = 160225 (1 day 20 hours 30 mins 25 secs)
-> ns4.google.com
AAAA IPv6 address = 2001:4860:4802:38::a
ttl = 160225 (1 day 20 hours 30 mins 25 secs)
------------
Name: google.com
Addresses: 2800:3f0:4004:808::200e
142.250.79.14
Редактирование 2: Похоже, это связано с проблемой внутреннего DNS-сервера, созданного для WSL, который является внутренним DNS-сервером Hyper-V, который является общим доступом к подключению к Интернету (ICS) Windows.
Я нашел открытую тему на GitHub WSL, на которую жаловались многие люди.