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

IPv6 работает только после проверки связи шлюза по умолчанию.

Сейчас у нас 2013 год, и я подумал, что давно пора активировать IPv6 на моем сервере. Но, к сожалению, у меня возникли проблемы. Если честно, у меня мало опыта работы с IPv6, поэтому я надеюсь, что вы поможете мне с моей "маленькой" проблемой.

Небольшое замечание: следующие адреса запутаны, это не то, что я использовал в своих конфигах;)

Я использую сжатие Debian (Debian 2.6.32-46) и получил блокировку IPv6 / 64 от моего провайдера: 2a01: 4f8: a0: aaaa :: / 64

Так что я изменил / и т.д. / сеть / интерфейсы файл следующим образом (который также рекомендует мой провайдер):

# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   85.10.xxx.zz
  broadcast 85.10.xxx.yy
  netmask   255.255.255.224
  gateway   85.10.xxx.1


iface eth0 inet6 static
  # Main IPv6 Address of the server
  address 2a01:4f8:a0:aaaa::2
  netmask 64
  gateway fe80::1


auto eth0:1
iface eth0:1 inet static
        address 85.10.xxxx.uu
        netmask 255.255.255.224

# default route to access subnet
up route add -net 85.10.xxx.0 netmask 255.255.255.224 gw 85.10.xxx.1 eth0

После перезагрузки (я ленив и не хотел ничего добавлять, используя route или ip) мой eth0 интерфейс выглядит так:

eth0      < first line removed >  
          inet addr:85.10.xxx.zz  Bcast:85.10.xxx.yy  Mask:255.255.255.224
          inet6 addr: 2a01:4f8:a0:aaaa::2/64 Scope:Global
          inet6 addr: fe80::bbbb:cccc:dddd:eeee/64 Scope:Link <--- from MAC address
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24133 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21712 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3464246 (3.3 MiB)  TX bytes:5776451 (5.5 MiB)
          Interrupt:25 Base address:0x2000 

и маршруты ip -6 route выглядят так:

2a01:4f8:a0:aaaa::/64 dev eth0  metric 1024  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev vboxnet0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
default via fe80::1 dev eth0  metric 1024  mtu 1500 advmss 1440 hoplimit 4294967295

Теперь моя проблема в том, что мой IPv6 не работает должным образом. Если я попытаюсь пропинговать IPv6-адрес, например ping6 ipv6.google.com. Я получил: "Пункт назначения недоступен: адрес недоступен"

Что выглядит так в tcpdump -i eth0 ip6:

00:29:05.386500 IP6 2a01:4f8:a0:aaaa::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32
00:29:05.390869 IP6 2a01:4f8:a0:bbbb::1 > 2a01:4f8:a0:aaaa::2: ICMP6, neighbor advertisement, tgt is fe80::1, length 32

2a01: 4f8: a0: bbbb :: 1 это кстати. указан как мой шлюз (в онлайн-консоли администратора моего провайдера).

Думаю, причиной всего этого является отсутствие записи NDP / отсутствующий MAC-адрес fe80 :: 1. Так как ip -6 neigh дает мне:

fe80::1 dev eth0  router FAILED 

Я так думаю, потому что если я это сделаю: ping6 -I eth0 fe80::1 Я получаю правильный эхо-ответ и желаемый MAC-адрес для моего fe80 :: 1 адрес, а также отлично работающий стек IPv6:

$ip -6 neigh
fe80::1 dev eth0 lladdr ll:mm:nn:oo:pp:qq router REACHABLE

Вот и снова дамп из tcpdump -i eth0 ip6:

00:30:37.555702 IP6 fe80::bbbb:cccc:dddd:eeee > fe80::1: ICMP6, echo request, seq 1, length 64
00:30:37.560219 IP6 fe80::1 > fe80::bbbb:cccc:dddd:eeee: ICMP6, echo reply, seq 1, length 64

(очередной раз: fe80 :: bbbb: cccc: dddd: eeee это мой локальный адрес ссылки, полученный из MAC-адреса)

С этого момента я могу использовать IPv6: я могу пинговать веб-сайты, я могу подключаться к службам с помощью IPv6 или даже подключаться к моему серверу через ssh с помощью IPv6.

Итак, что я здесь делаю не так? Я потратил много времени, пытаясь выяснить, как это «исправить». Бьюсь об заклад, это можно решить с помощью двух команд. Кстати, я впервые имею дело с IPv6 на сервере. Так что, пожалуйста, простите меня за мою неопытность. Кстати. Я также пытался изменить некоторые флаги sysctl net.ipv6. *, Но безуспешно. Если это необходимо для решения, я также могу опубликовать здесь свою конфигурацию.

Любая подсказка приветствуется!

Заранее большое спасибо!

Сегодня, пару недель спустя, я попытался решить эту проблему еще раз. И что тут сказать, исправил. Может кто-нибудь объяснить мне, почему добавление петли ipv6 устранило мою проблему? Вот что я добавил в свой / и т.д. / сеть / интерфейсы файл:

iface lo inet6 loopback

Понятия не имею, почему я вообще забыл добавить его! ^^ Всем спасибо за ответы!

Я смотрю на часть вашего вопроса, где вы говорите:

Теперь моя проблема в том, что мой IPv6 не работает должным образом. Если я попытаюсь пропинговать IPv6-адрес, например ping6 ipv6.google.com. Я получаю: «Пункт назначения недоступен: адрес недоступен»

Это выглядит так в tcpdump -i eth0 ip6:

00:29:05.386500 IP6 2a01:4f8:a0:aaaa::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32 00:29:05.390869 IP6
2a01:4f8:a0:bbbb::1 > 2a01:4f8:a0:aaaa::2: ICMP6, neighbor advertisement, tgt is fe80::1, length 32

Это странно. Ваша система отправляет правильное (насколько я могу судить по вашему tcpdump) запрос соседа, и маршрутизатор отправляет обратно правильное (снова AFAICT) объявление соседа. Это указывало бы на проблему на вашем локальном компьютере.

Вы делаете на этой машине брандмауэр? Фильтрация ICMPv6 сильно отличается от фильтрации ICMP. Гораздо больше частей связи IPv6 необходимость правильно работающий ICMPv6. Если вы фильтруете слишком много или неправильно, вы получаете точно такие же проблемы, как сейчас.

Если вы хотите узнать больше, пожалуйста, посмотрите RFC 4890.

Попробуйте использовать в качестве шлюза по умолчанию один из фактических адресов маршрутизатора вместо fe80::1.

Дело в том, что IPv6 использует ICMPv6 для проверки состояния канала, в отличие от IPv4, где для этой цели служит ARP. Поэтому после пинга все начинает работать. Настройте правила брандмауэра:

ip6tables -A INPUT -p icmpv6 -j ACCEPT

ваш шлюз для IPv6 должен находиться в той же подсети

iface eth0 inet6 static
  # Main IPv6 Address of the server
  address 2a01:4f8:a0:aaaa::2
  netmask 64
  gateway fe80::1

что-то вроде 2a01: 4f8: a0: aaaa :: 1 это установлено в конфигурации маршрутизатора или VLAN, проверьте, что у вас есть в вашем маршрутизаторе. образец:

interface GigabitEthernet0/0/1.201
 encapsulation dot1Q 201
 ipv6 address 2A00:7XXX:100::1/48
!