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