Я пытаюсь настроить IPv6 на выделенном сервере Ubuntu. Мой провайдер дал мне "/ 64" (что бы это ни было - я все еще не понимаю) адресов IPv6.
Однако, когда я пытаюсь их использовать, я ничего не могу пинговать. Что мне делать? :(
# ping6 ipv6.google.com PING ipv6.google.com(vx-in-x63.1e100.net) 56 data bytes From fe80::219:d1ff:fefb:42d8 icmp_seq=1 Destination unreachable: Address unreachable From fe80::219:d1ff:fefb:42d8 icmp_seq=2 Destination unreachable: Address unreachable From fe80::219:d1ff:fefb:42d8 icmp_seq=3 Destination unreachable: Address unreachable --- ipv6.google.com ping statistics --- 3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2014ms # tracepath6 ipv6.google.com 1?: [LOCALHOST] 0.025ms pmtu 1500 1: fe80::219:d1ff:fefb:42d8%eth0 2000.022ms !H Resume: pmtu 1500 # cat /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 64.***.***.*** netmask 255.255.255.248 gateway 64.***.***.*** iface eth0 inet6 static pre-up modprobe ipv6 address 2607:F878:1:***::1 netmask 64 gateway 2607:F878:1:***(same as address)::1 # ifconfig eth0 Link encap:Ethernet HWaddr 00:19:d1:fb:42:d8 inet addr:64.***.***.*** Bcast:64.***.***.*** Mask:255.255.255.248 inet6 addr: fe80::219:d1ff:fefb:42d8/64 Scope:Link inet6 addr: 2607:f878:1:***::1/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:52451 errors:0 dropped:0 overruns:0 frame:0 TX packets:39729 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6817761 (6.8 MB) TX bytes:6153835 (6.1 MB) Interrupt:41 Base address:0xc000 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:16436 Metric:1 RX packets:166 errors:0 dropped:0 overruns:0 frame:0 TX packets:166 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:31714 (31.7 KB) TX bytes:31714 (31.7 KB)
Не устанавливайте шлюз на хосте, действующем как маршрутизатор для самого себя. Если ваш интернет-провайдер предоставил адрес шлюза, используйте его в качестве шлюза на хосте или позвольте хосту использовать объявления маршрутизатора для настройки. Адрес шлюза никогда не должен совпадать с собственным адресом сервера. Адрес, используемый для маршрутизации для других хостов, не должен иметь назначенного шлюза.
Ваш интернет-провайдер мог предоставить вам адрес для вашего внешнего (Интернет) интерфейса. Настройте свой интерфейс eth0, используя его с соответствующим адресом шлюза, если он указан. Используйте адрес / 64 на своем внутреннем интерфейсе (eth1), если он у вас есть. Вы также захотите настроить radvd
для запуска в этом интерфейсе.
Если у вас нет внутреннего интерфейса, вы можете добавить статический адрес в свой диапазон / 64, добавив строку в свою конфигурацию inet6, например.
up ip -6 addr add 2607:F878:***::2 dev eth0
Познакомьтесь с ip
такие команды как ip -6 addr
, ip -6 route
, и ip -6 neigh
. Обычно используется несколько адресов и маршрутов.
Шлюзы по умолчанию в IPv6 работают немного иначе.
Я предлагаю вам начать tcpdump
и смотреть это для Router Advertisements
(возможно, вы захотите проанализировать захват в WireShark - намного проще). Вот как ваш IPv6-хост знает, как выйти в Интернет. Также следите за Neighbor Solicitation
поскольку это замена ARP.
Если вы видите, что эти запросы поступают, но не возвращаются, то ваш внутренний брандмауэр блокирует трафик IPv6. Если вы видите, что они уходят (запросы), но не возвращаются, то вам нужно убедиться, что длина вашего префикса верна (это /64
часть. Хотя я видел много /64
выходят из строя, что на самом деле /48
).
ICMP абсолютно критичен для функциональности IPv6. В IPv4 его можно заблокировать без особого воздействия, но в IPv6 вся сеть полагается на ICMP для всех своих функций. Не блокируйте это.
Что касается
Мой провайдер дал мне "/ 64" (что бы это ни было - я все еще не понимаю) адресов IPv6
Это ваша длина префикса, ранее известная как ваша Маска подсети это используется для CIDR. Чем меньше число, тем больше у вас IP-адресов. Для IPv6, /64
и /48
очень распространены и должны дать вам больше IP-адресов, чем вам когда-либо понадобится за всю жизнь.
Невозможно дать полный ответ, не зная полных данных, которые ваш интернет-провайдер предоставил вам для вашей конфигурации.
Ваш провайдер может отправить вам ваш / 64 двумя способами.
В идеале: провайдер предоставляет два сетевых адреса. Один для вашей ссылки на поставщика (например, 2001: db8: 1001: abcd :: / 64), и в этом случае они скорее всего дадут вам адрес шлюза в этой сети (например, 2001: db8: 1001: abcd :: 1) а также сообщает вам использовать конкретный адрес для вашего хоста (например, 2001: db8: 1001: abcd :: 1001: feaf). Второй сетевой адрес будет вашим / 64 для вашей внутренней сети (например, 2001: db8: 1001: feaf :: / 64). Ваш хост, настроенный с указанным выше адресом интерфейса, будет действовать как шлюз для этой сети. Предполагая, что у вас есть интерфейсы Ethernet eth0, обращенные к провайдеру, и eth1, обращенные к вашей внутренней сети, вы должны настроить файл интерфейсов (части IPv6) следующим образом:
auto eth0
iface eth0 inet6 static
pre-up mod probe ipv6 # This shouldn't be necessary, make IPv6 a default mod
address 2001:db8:1001:abcd::1201:feaf
netmask 64
gateway 2001:db8:1001:abcd::1
auto eth1
face eth1 inet6 static
address 2001:db8:1001:abcd:feaf::1
netmask 64
Это должно привести вас к тому, что вы сможете пинговать различные места в Интернете через вашего провайдера с хоста шлюза.
Чтобы заставить ваши внутренние хосты работать, вам может потребоваться несколько дополнительных шагов, таких как включение пересылки для пакетов IPv6, проверка того, что ip6tables настроен на пересылку пакетов, которые вы хотите пересылать, и т. Д.
Как упоминалось ранее, блокировка ICMP6 нарушит ваше соединение IPv6.
Если ваш провайдер ожидает, что вы будете использовать SLAAC для ссылки, тогда вам понадобится другая (динамическая) конфигурация, которая немного противоречит здравому смыслу, но это маловероятно, потому что вашему провайдеру нужно знать, как направить ваш внутренний / 64 на ваш динамический адрес. .
Второй возможный способ - это, по сути, мостовая сеть, где ваш хост действует как мост, а не как маршрутизатор. В этом случае у вас не было бы соединения eth1, и все ваши хосты были бы в том же сегменте LAN, что и ваш провайдер и eth0 (физически или через мостовые интерфейсы).