Проблема IPv6 с DNS
У меня есть виртуальная машина, доступ к которой осуществляется только через IPv6 (IPv4 недоступен). Это сервер Ubuntu 16.04 LTS. Раньше я никогда не использовал машину, использующую только IPv6, и поэтому я должен пропустить что-то тривиальное.
Моя конфигурация:
- Ifconfig
eth0 Link encap:Ethernet HWaddr aa:00:08:d0:f9:b2 inet6 addr: myIPv6Address/64 Scope:Link inet6 addr: myIPv6Address/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:206 errors:0 dropped:0 overruns:0 frame:0 TX packets:187 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:27034 (27.0 KB) TX bytes:44976 (44.9 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:82 errors:0 dropped:0 overruns:0 frame:0 TX packets:82 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:34008 (34.0 KB) TX bytes:34008 (34.0 KB)
- и т.д. / сети
source /etc/network/interfaces.d/* iface eth0 inet6 static address myIPv6Address netmask 64 dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888
Моя проблема в том, что, хотя я могу пинговать Google, у меня нет доступа к остальной части Интернета. Я не могу пинговать или wget из любого места, кроме Google (!!!)
ping6 ipv6.google.com PING ipv6.google.com(fra16s14-in-x0e.1e100.net)56 data bytes 64 bytes from fra16s14-in-x0e.1e100.net: icmp_seq=1 ttl=54 time=61.2 ms 64 bytes from fra16s14-in-x0e.1e100.net: icmp_seq=2 ttl=54 time=61.3 ms 64 bytes from fra16s14-in-x0e.1e100.net: icmp_seq=3 ttl=54 time=61.3 ms
Например, хотя я могу wget http://www.google.com/ я ничего не могу получить от github:
wget -6 https://github.com/somefile --2017-01-02 13:43:54-- https://github.com/somefile Resolving github.com (github.com)... failed: Name or service not known. wget: unable to resolve host address ‘github.com’
Что мне не хватает? Не должно быть в состоянии wget? Кажется, что мой DNS не работает должным образом. У меня есть ошибки в моей конфигурации?
1 ответ
То, что вы видите, именно так, как и ожидалось. Ваша машина имеет только IPv6. У Google есть как IPv4, так и только IPv6, поэтому вы можете обращаться к ним по IPv6. Но у GitHub есть только IPv4. IPv4 и IPv6 - это разные протоколы, поэтому они не общаются друг с другом.
По сути, ваш сервер и GitHub говорят на разных языках, и вы не используете службу перевода.
Протокол трансляции, который позволяет клиентам IPv6 общаться с серверами IPv4, называется NAT64 + DNS64. В идеале интернет-провайдер, на котором размещен ваш сервер, должен предоставлять такую услугу. Если нет, то вы можете попробовать экспериментальные услуги, которые мой хороший друг (Ян Жорж) проводит в своей лаборатории. Вы можете найти инструкции на https://go6lab.si/current-ipv6-tests/nat64dns64-public-test/.
Помните, что NAT64 разрешает клиентам IPv6 только доступ к серверам IPv4, а не наоборот. Таким образом, ваш сервер IPv6 не будет доступен для клиентов, которые имеют только IPv4. Для этого вам понадобится услуга SIIT-DC, но я не знаю никого, кто бы предлагал такую услугу.