Развертывание IPV6
1. Разбиение ipv6 на подсети
----------------------------------------------------------------------------------------
Мы получили блок 2a03:1800::/32
Согласно каким-то там рекомендациям каждому клиенту надо выделять подсеть /64.
Так же всякие автоконфигурации интерфейсов (есть такое удобство ipv6) в windows и unix тоже привыкли иметь дело c /64.
Очень много ipv6-адресов помещается в подсети /64, если не ошибаюсь - 2^64, т.е. 65535*65535.
Пусть это не кажется расточительным.
Короче - каждому клиенту - /64.
Внутри сети /32 помещается 65536*65536 сетей /64. Нумеруем их так:
2a03:1800:x:y::
где x=0....ffff
y=0....ffff
в общем блока /32 хватит на всех.
Пример.
2a03:1:2::/64 - подсеть
2a03:1:2::1/64 - шлюз
2a03:1:2::2 - клиент
2a03:1:2::3 - тоже клиент:)
2a03:1:2:3:4:3::10 - тоже клиент, и тоже все в той же подсети 2a03:1:2::/64
2a03:1:3::/64 - другая подсеть
loopback в ipv6 будет иметь адрес с маской /128, т.е. это как /32 в ipv4.
2. Конфигурация cisco
----------------------------------------------------------------------------------------
Роутинг
conf t
ipv6 unicast-routing
Секьюрность
ipv6 access-list deny-any
deny ipv6 any any
line vty 0 4
ipv6 access-class deny-any in
Интерфейсы
interface Loopback6
no ip address
ipv6 address 2A03:1800:1:1::1/128
ipv6 enable
interface Vlan23
description Uplink, AS8359, Comstar-Direct (MTU)
ip address 195.34.38.98 255.255.255.252
ip access-group Garbage-Excl-Private in
no ip redirects
no ip unreachables
no ip proxy-arp
ip flow ingress
load-interval 60
ipv6 address 2A02:28:1:2::23:2/112
ipv6 enable
hold-queue 4096 in
hold-queue 4096 out
BGP
ipv6 route 2A03:1800::/32 Null0
ipv6 prefix-list me-v6 seq 5 permit 2A03:1800::/32
route-map to-mtu6 permit 10
match ipv6 address prefix-list me-v6
router bgp 25308
neighbor 2A02:28:1:2::24:1 description MTUv6
address-family ipv4
no neighbor 2A02:28:1:2::24:1 activate
address-family ipv6
network 2A03:1800::/32
neighbor 2A02:28:1:2::24:1 activate
neighbor 2A02:28:1:2::24:1 send-community
neighbor 2A02:28:1:2::24:1 soft-reconfiguration inbound
neighbor 2A02:28:1:2::24:1 route-map to-mtu6 out
Как смотреть:
sh ip bgp ipv6 uni su
sh ip bgp ipv6 u n 2A02:28:1:2::24:1 ro
cle ip bgp ipv6 u 8359 soft out #вместо ip нейбора указывается as-ка
3. Клиенты
---------------------------------------------------------------------------
1) linux
Как только на интерфейсе роутера появился ipv6 из сетки /64, клиентские
компы словят себе ipv6 адрес, который генерится на основе ipv6 интерфейса
роутера и MAC-адреса клиента.
Например:
eth0.2 Link encap:Ethernet HWaddr 00:17:31:b4:8d:55
inet addr:172.16.10.12 Bcast:172.16.10.255 Mask:255.255.255.0
inet6 addr: 2a03:1800:1:4:217:31ff:feb4:8d55/64 Scope:Global
inet6 addr: fe80::217:31ff:feb4:8d55/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3222533 errors:0 dropped:0 overruns:0 frame:0
TX packets:433391 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:534246967 (509.4 MiB) TX bytes:145408314 (138.6 MiB)
тут fe80::217... какая-то несущественная байда, про которую более подробно сказано в
википедии.
Если в компе с юниксом не включен ipv6 форвардинг, то дефолт тоже словится
автоматом.
Посмотреть таблицу маршрутизации можно так:
ip -6 ro li
или
route -A inet6
Принудительно назначить какой-то ipv6 на интерфейс:
/sbin/ifconfig vlan18 inet6 add 2A03:1800:1:3::4/64 up
Если форвардинг включен, можно ручками добавить дефолт:
/sbin/route -A inet6 add default gw 2a03:1800:1:3::2
Включить форвардинг, если комп будет ipv6-роутером:
sysctl -w net.ipv6.conf.all.forwarding=1
Так же есть команды ping6 и traceroute6
2) windows
Если в виндах не установлен протокол tcp/ip версии 6, надо это сделать.
После чего винда чудесно сама ловит себе ipv6, как и линукс.
Но вот если протокол был добавлен до того, как у винды повилась возможность
получить native ipv6, она начинает включать всякие туннели через всякие
тунельброкреы.
В XP по умолчанию ipv6 выключен.
В vista и win7 - включен, поэтому там как правило уже работает тунель. Надо
избавляться:).
Как избавиться от этих автоматических наворотов в winXP:
http://social.technet.microsoft.com/Forums/ru-RU/xpru/thread/8716e8e7-1223-4e53-87ae-25086943b452
http://www.twibble.org/Articles/IPv6/ipv6-for-xp
http://www.fir3net.com/Windows/XP/how-do-i-configure-ipv6-in-windows-xp.html
Простой метод назначения ipv6 в XP:
ipv6 install
ipv6 if # эта команда выведет список сетевых интерфейсов и из номера
ipv6 adu 5/2a03:1800:1:6::2 # тут 5 - номер интерфейса, которому назначается ipv6 адрес 2a03:1800:1:6::2
ipv6 rtu ::/0 5/2a03:1800:1:6::1 pub life 1800 # прописываем дефолт через 2a03:1800:1:6::1
Обычные команды винды ping и tracert спокойно работают с ipv6 адресами.
Узнать, есть ли у сайта ipv6 связность можно командой юникса host:
host www.citylan.ru
www.citylan.ru has address 212.118.32.74
www.citylan.ru has IPv6 address 2a03:1800:1:3::4
4. ДНС
---------------------------------------------------------------------------------------
1) Прямая зона:
Просто вместо А для ipv6 пишем АААА:
www IN A 212.118.32.74
IN AAAA 2a03:1800:1:3::4
2) обратная зона: используйте http://www.fpsn.net/
5. МАК-адреса и ARP'ы
------------------------------------------------------------------------------------------
В ipv6 нет ARP-запросов. Есть там что-то другое, читайте в википедии.
Практически это значит, что в линуксе нет ipv6 в выводе arp.
Зато есть в выводе команды
ip neighbors
вместе с ipv4'мы арпами.
Так же я иногда привязваю ipv6 к маку статически:
/sbin/ip neigh add 2a03:1800:1:3::4 lladdr 00:16:76:D2:C1:7C nud permanent dev vlan18
6. Туннели
----------------------------------------------------------------------------------------
Есть 2 вида туннелей ipv6 через ipv4:
- 6to4 (использует блок 2002::/16)
- Teredo (2001::/32)
оба поддерживаются windows, для teredo на юниксе есть софт miredo, для 6to4
разные фичи в ядре, типа tun6to4.
Напомню, в windows vista и windows7 по-умолчанию включен ipv6. Т.к. native ipv6 вы
своим клиентам еще не дали :) то винда автоматически сконфигурила один из
туннелей и получила ipv6-связность через туннель.
1) 6to4 очень прост, к 2002: добавляется ipv4 в 16-ричном виде. Запаковывается
у клиента и распаковывается где угодно на хосте с ip 192.88.99.1/24. Т.е.
192.88.99.1 - такой специальный адрес, который анонсируют многие провайдеры,
кто-то глобально, кто-то только на локальных точках обмена трафиком, кто-то
только своим клиентам. Хост, на котором рабтает туннель 6to4, посылает весь
ipv6 трафик через ipv4 на 192.88.99.1. Если вы посмотрите свой netflow, то
обнаружите, что трафик к 192.88.99.1 имеет место быть. Сделаете трейс на
192.88.99.1 и скорее всего это будет какой-то хост в европе. Т.е. кто-то из ваших
клиентов даже на российские ресурсы ipv6 ходит через европу.
Поэтому лучше если 192.88.99.1 будет на вашей циске, а не на чужой. Делаем так:
interface Loopback4
description 6to4 Anycast Relay Service
ip address 192.88.99.1 255.255.255.0 secondary
ip address 212.118.33.44 255.255.255.255
no ip redirects
ipv6 address 2002:D476:212C::1/128
ipv6 enable
ipv6 mtu 1280
no ipv6 redirects
2002:D476:212C::1/128 - это преобразованный 212.118.33.44 из вашей сети ipv4
(D4 это 212 , 76 это 118 и т.д.)
interface Tunnel2002
description anycast 6to4 Relay Interface
no ip address
no ip redirects
ipv6 address 2002:C058:6301::/128 anycast
ipv6 unnumbered Loopback4
ipv6 mtu 1280
tunnel source Loopback4
tunnel mode ipv6ip 6to4
tunnel path-mtu-discovery
ipv6 route 2002::/16 Tunnel2002
теперь покрайней мере часть ваших клиентов с туннелями 6to4 будет работать
чуть быстрее ;)
(Практика показала, что таким методом (cisco обрабатывает этот туннель CPU)
много трафика не пропустишь, а вот консоль тупить будет. Так что use unix.
Но и у юниксовых решений есть проблема с производительностью. Т.е. похоже
дело в количестве пакетов. Юниксовый бокс спокойно обслуживает десяток
туннелей на любых скоростях, но как только клиентов становится по-настоящему
много (скажем, вы анонсировали туннельный префикс на точке обмена трафиком),
то даже очень производительные сервера под юниксом начинают затыкаться.
Проблема актуальна и для решений 6to4, и для teredo. Посему мы (и не только
мы) анонсируем туннельные префиксы только своим клиентам.)
2) Teredo
чисто виндовый протокол, который однако описан в RFC4380 и реализован в unix
в софте miredo: http://www.remlab.net/miredo/
Миредо может работать в режиме клиента или режиме сервера.
По умолчанию все teredo клиенты с виндов коннектятся на
teredo.ipv6.microsoft.com, после чего получают ipv6 из блока 2001::/32
Этот блок анонсируют многие провайдеры от имени своих AS'ок, так же как и
192.88.99.0/24. Что происходит дальше описано в rfc4380.
7. Полезные ссылки
---------------------------------------------------------------------------------------------
http://www.ripe.net/meetings/regional/moscow-2010/presentations/ripe-ncc-rm-2010-comstar.pdf
http://www.getipv6.info/index.php/Main_Page