Сейчас у нас 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
!