IPv6 и MS Windows 7

Тестировал IPv6 при помощи ноутбука с MS Windows 7 и обнаружил, что консольная утилита netsh может показать много интересного.

Посмотреть информацию об ipv6-адресе:
netsh int ipv6 show addr ETH


Список соседей для интерфейса с названием ETH:
netsh interface ipv6 show neighbors ETH

Вместо имени интерфейса можно указать номер. Можно вообще не указывать название интерфейса — отобразится список для всех интерфейсов.

После каждого параметра утилиты можно ввести "?", нажать Enter и увидеть подсказку.
netsh interface ipv6 show ?


Кроме того параметры можно указывать не полностью:
netsh int ipv6 sh nei ETH

Почти что Cisco )

Конечно, это только один пример, а там есть ещё и команды для изменения настроек.

Cisco: DHCP для выдачи DNS-сервера IPv6-клиентам

Есть PPPoE-клиенты, которые получают IPv6-адреса через SLAAC, префикс сети передаётся Radius-сом, также из Radius-а передаётся маршрут на дополнительную подсеть. Но вот адрес DNS-сервера выдать клиенту можно пока только через DHCP. Команда «ipv6 nd ra-dns-server» не работает, avpair «ipv6-dns-servers-addr» тоже.

Впрочем настройка DHCP-сервера для этих задач совсем несложная, заодно передадим и домен по-умолчанию:
!
ipv6 dhcp server IPV6_DHCP
dns-server 2001:db8:1::1
domain-name elcat.kg
!
interface Virtual-Template1
ipv6 nd other-config-flag
ipv6 dhcp server IPV6_DHCP
!

Опция «ipv6 nd other-config-flag» указывает, кто хостам надо использовать DHCP для других настроек, кроме получения адреса:
Hosts should use DHCP for non-address config

Cisco: IPv6 OSPF

Как настраивать IPv6 на циске писать не буду, да и вообще обойдусь минимумов слов )

Роутер R1
!
interface Vlan111
description R1
ipv6 address FE80::12 link-local
ipv6 address 2001:0db8:1::219/64
ipv6 ospf mtu-ignore
ipv6 ospf 1 area 0
!
router ospfv3 1
router-id 1.1.1.219
passive-interface default
no passive-interface Vlan111
!
address-family ipv6 unicast
area 0 range 2001:0db8::/32
default-information originate
redistribute connected
redistribute static
exit-address-family
!

Роутер R2
!
interface Vlan111
description R2
ipv6 address 2001:0db8:1::247/64
ipv6 ospf 1 area 0
ipv6 ospf mtu-ignore
!
router ospfv3 1
router-id 1.1.1.247
!
address-family ipv6 unicast
passive-interface default
no passive-interface Vlan222
redistribute connected
redistribute static
area 0 range 2001:0db8::/32
exit-address-family
!


Без команды «ipv6 ospf mtu-ignore», заданной на интерфейсах соседи постоянно падают с жалобой «Neighbor Down: Too many retransmissions» и никакие маршруты не передаются.

Команда «default-information originate» на роутере R1 даёт указание роутеру отправлять соседям ещё и default-route.

Несколько команд, чтобы посмотреть интересную информацию:
sh ipv6 route ospf
sh ipv6 ospf database

IPv6 в MS Windows

Посмотреть список IPv6-соседей:
netsh interface ipv6 show neighbors

Отключить обработку RA-сообщений (понятно, что адрес придётся назначит вручную):
netsh int ipv6 set int N routerdiscovery=disabled
— N — это индекс интерфейса.
Посмотреть индексы интерфейсов:
netsh int ipv6 show int
Посмотреть параметры IPv6 на интерфейсе:
netsh int ipv6 show int N

CentOS IPv6

Есть интерфейс из ВЛАН-10, на котором уже имеется IPv4-адрес, надо добавить второй адрес, но уже из IPv6-сети. Это можно сделать вот так:
ip addr add 2001:0db8:3:4:0:0:0:3/64 dev eth0.10

Удалить вот так:
ip addr del 2001:0db8:3:4:0:0:0:3/64 dev eth0.10

А чтобы при перезагрузке компьютера этот адрес появился снова добавляем записи для IPv6 в уже существующий файл /etc/sysconfig/network-scripts/ifcfg-eth0.10:
DEVICE=eth0.10
PHYSDEV=eth0
ONBOOT=yes
VID=10
IPADDR=10.1.1.3
NETMASK=255.255.255.0
BOOTPROTO=static
VLAN=yes
USERCTL=no
GATEWAY=10.1.1.1
PEERDNS=yes
DNS1=10.1.1.1
DNS2=10.1.1.2
DOMAIN=elcat.kg
# Добавляем данные для IPv6:
IPV6INIT=yes
IPV6ADDR=2001:0db8:3:4:0:0:0:3/64
IPV6_DEFAULTGW=2001:0db8:3:4:0:0:0:1

Пингуем командой ping6, а путь смотрим командой tracepath6.

Несколько примеров просмотра, удаления и добавления IPv6-маршрутов:
ip -6 route show
ip -6 route show ::/0
ip -6 route show default
ip -6 route delete ::/0
ip -6 route add default via 2001:0db8:3:4:0:0:0:1
ip -6 route add 2001:0db8:33:44::/64 via 2001:0db8:3:4:0:0:0:1
ip -6 route delete 2001:0db8:33:44::/64

К сожалению маршрут до конкретного хоста из подсети, на которую добавлен маршрут, не показывается:
ip -6 route show 2001:0db8:33:44:0:0:0:13
Только для заданной подсети:
ip -6 route show 2001:0db8:33:44::/64

Ну или старый, добрый netstat:
netstat -rn --inet6

Автоконфигурирование IPv6 на Cisco

Есть роутер Cisco, на соответствующем интерфейсе включен ipv6. Надо убедиться, что роутер не позволяет хостам из этой сети автоматически получать адрес ipv6 при помощи механизма SLAAC (Stateless Address Autoconfiguration).

Отключить выдачу адресов ipv6 по запросу на автоконфигурирование:
interface Vlan66
 ipv6 nd prefix default 300 300 no-autoconfig
!


Запретить отправку объявлений о том, что мы роутер (Router Advertisements — RA):
interface Vlan66
 ipv6 nd ra suppress all
!


Если на роутере запрещёна отправка RA, то хост не сможет получить префикс сети от роутера и, соответственно, назначить себе «реальный» адрес, т.е. хост шлёт запросы Router Solicitation, но не получает ответа от роутера, в котором и должен быть передан префикс сети и прочие данные.
Если отправка RA не запрещена, но запрещено автоконфигурирование, то протокол Neighbor Discovery работает, соседи видны, но только по локальным адресам (link-local), например:
cs#sh ipv6 neighbors
IPv6 Address                              Age Link-layer Addr State Interface
FE80::21D:FFF:FEBE:AF12                     1 001d.0fbe.af12  DELAY Vl66


Если хост получил от роутера префикс сети, то он назначает себе адрес на основе полученного префикса и своего MAC-адреса. И мы можем увидеть его на роутере:
cs#sh ipv6 neighbors
IPv6 Address                              Age Link-layer Addr State Interface
FE80::21D:FFF:FEBE:AF12                     0 001d.0fbe.af12  REACH Vl66
2001:db8::21D:FFF:FEBE:AF12                0 001d.0fbe.af12  REACH Vl66


Короче говоря, чтобы работало автоконфигурирование нужно чтобы на циске были разрешены и автоконфигурирование и RA.

Даже если отключить на роутере RA уже после получения хостом адреса, связь через некоторое время пропадает. По крайней мере у меня так происходит между циской и CentOS 6.5. Обнаружение соседей (Neighbor Discovery) при этом работает. CentOS при попытке пингануть роутер ругается «Network is unreachable».

Дополнение

Прочитал где-то, что RA отключать нельзя в любом случае, а отключать SLAAC нужно опциями на интерфейсе, которые указывают хостам получать адреса и прочие настройки по DHCP:
ipv6 nd managed-config-flag
 ipv6 nd other-config-flag


При просмотре информации о IPv6 для этого интерфейса видим:
cs#sh ipv6 int vl66
...
  Hosts use DHCP to obtain routable addresses.
  Hosts use DHCP to obtain other configuration.
...


Однако, у меня при этом хосты всё равно получали адреса по SLAAC.

Дополнение 2

Ещё одна опция в попытке отключить раздачу SLAAC роутером:
interface Vlan66
 ipv6 nd prefix default no-advertise

Роутер будет отправлять RA, но в них не будет указан префикс сети, т.е. хосты не смогут «создать» адрес.

Т.к. мне до сих непонятно можно ли полностью отключать RA, я попытался сохранить эти анонсы и включил три другие опции:
interface Vlan66
 ipv6 nd prefix default no-advertise
 ipv6 nd managed-config-flag
 ipv6 nd other-config-flag


Проверил с Windows 7 и CentOS — адрес не получаю, но при просмотре списка соседей на этом интерфейсе вижу, что появились SLAAC-адреса других хостов:
cs#sh ipv6 neighbors vl66
...
2001:db8:C:0:211:32FF:FE90:7C23          133 0011.3290.7c23  STALE Vl66
2001:db8:C:0:21D:FFF:FEBE:AF12           219 001d.0fbe.af12  STALE Vl66
...

Возможно, хосты просто сохранили полученные ранее через SLAAC адреса.

Кстати, можно удалить всех соседей на интерфейсе или конкретный адрес одного соседа:
cs#clear ipv6 neighbors vlan66
cs#clear ipv6 neighbors vlan66 2001:db8:C:0:211:32FF:FE90:7C23


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

Утилита управления сетевыми настройками ip

Странно как-то в Линуксе организовано управление сетевыми настройками — какие-то дополнительные утилиты, которые делают то, что во ФриБСД делается уже существующими утилитами. В частности утилита ip, которая частично дублирует функции утилит ifconfig, route и ещё бог весть каких. При этом утилитой ifconfig можно назначить айпишник, а удалить уже не получается.

Несколько примеров применения утилиты ip:

ip addr show dev eth1
ip addr add 10.1.1.224/26 dev eth1 (второй адрес добавляется также)
ip addr del 10.1.1.224/26 dev eth1

Добавить IPv6-адрес на интерфейс, можно как второй для уже существующего IPv4-адреса:
ip addr add 2001:0db8::21d:fff:febe:afec/64 dev eth0.10
ip addr del 2001:0db8::21d:fff:febe:afec/64 dev eth0.10

ip link show dev eth1
ip link set up dev eth1
ip link set down dev eth1

Добавить ВЛАН-интерфейс:
ip link add dev eth1.10 link eth1 type vlan id 10
Удалить интерфейс:
ip link del dev eth1.10

ip route show
Показать маршрут по-умолчанию по слову default или маршруту 0.0.0.0 утилита отказалась — показала всю таблицу, надо вот так:
ip route show 0/0
ip -6 route show ::/0

Показать точный маршрут к хосту (если есть маршрут на подсеть, в которую входит указанный хост, то он не учитывается):
ip route show 10.2.2.1
ip route show to exact 10.2.2.1
ip -6 route show 2001:db8::/64

Показать подходящий маршрут к хосту, например, если есть маршрут на соответствующую подсеть:
ip route show to match 10.2.2.1

ip route add 10.2.2.0/24 via 10.1.1.1
ip route add to 10.2.2.0/24 via 10.1.1.1

ip route delete 10.2.2.1
ip route delete 10.2.2.0/24

Удалить маршрут по-умолчанию и добавить его:
ip route delete default
ip route add default via 10.1.1.1

Первые серьёзные ограничения при получении IPv4

Думаю многие слышали о том, что заканчиваются IP-адреса, но мало кто заметил какие-то реальные проблемы. Но не так давно (14.09.2012) они появилсиь — в RIPE вступили в действие первые серьёзные (на мой взгляд) ограничения при получении IPv4, это произошло в связи с тем, что в расход пошёл последний /8 сегмент.
Ограничение заключается в том, что теперь не выдаются провайдеронезависимые адреса (Provider Independent (PI)), а LIRы могут получить сегмент не больше /22 и только при определённых условиях, в числе которых обязательно наличие у LIRа IPv6, полученных у вышестоящего LIRа или RIPE.

Вкратце написано здесь:
www.ripe.net/internet-coordination/ipv4-exhaustion

Давно надо браться за IPv6, но я их боюсь )