Назад | Перейти на главную страницу

Настроить статический IPv6 в Ubuntu

Я пытаюсь настроить 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 (физически или через мостовые интерфейсы).