Здравствуйте, хабрасообщество.

Хотелось бы осветить переход сети на IPv6, так как эта теме слабо освещена, тем более на русском языке. Сначала посмотрим на то, как выглядит наша сеть до перехода:

image

Что мы имеем? Маршрутизатор, подключенный к сети интернет, выполняющий функции NAT для внутренних сетей. Сети находятся в vlan10 и vlan20.

Конфигурация маршрутизатора следующая:
Router(config)#int fa0/0
Router(config-if)#ip address 192.0.2.2 255.255.255.252
Router(config-if)#ip nat outside
Router(config)#int fa0/1.10
Router(config-if)#encapsulation dot1Q 10
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#ip nat inside
Router(config)#int fa0/1.20
Router(config-if)#encapsulation dot1Q 20
Router(config-if)#ip address 192.168.2.1 255.255.255.0
Router(config-if)#ip nat inside
Router(config)#ip nat pool natpool 192.0.2.2 192.0.2.2 netmask 255.255.255.252
Router(config)#ip nat inside source list 100 pool natpool overload
Router(config)#ip access-list extended 100
Router(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 any
Router(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 any


Для того, чтобы перейти на IPv6 – необходимо получить блок адресов. Переговоры с двумя провайдерами, к которым подключен офис компании, завершились не так, как хотелось бы – один провайдер тестирует IPv6 внутри своей сети и клиентам пока не выдает блоки, второй же еще даже не задумывался об использовании IPv6. Недолгие поиски привели на TunnelBroker от Hurricane Electric. Из предлогаемых возможностей после регистрации – до 5 блоков /64 или /48 (на выбор). Тем, кто еще не сталкивался с IPv6 довольно таки трудно представить себе сколько это адресов. Для сравнение – весь IPv4 блок – 232=4,2×109 адресов. В IPv6 блок /64 – это 264=1,8×1019 адресов. На 10 порядков больше, нежели весь блок IPv4.

Для получения блока IPv6-адресов необходимо заполнить одну форму, в которой указать внешний IPv4-адрес и выбрать один из серверов (на момент написания статьи всего 18 серверов – 3 в Азии, 6 в Европе и 9 в Северной Америке).

image

После получения блока вносим изменения на маршрутизатор.
Включаем поддержку ipv6 маршрутизации:
Router(config)#ipv6 unicast-routing
Router(config)#ipv6 cef


Создаем тунельный интерфейс с провайдером-IPv6 (TunnelBroker):
Router(config)#interface Tunnel0
Router(config-if)#description Hurricane Electric IPv6 Tunnel Broker
Router(config-if)#no ip address
Router(config-if)#ipv6 address 2001:470:18:11A::2/64
Router(config-if)#ipv6 enable
Router(config-if)#tunnel source GigabitEthernet0/0.510
Router(config-if)#tunnel destination 216.218.221.6
Router(config-if)#tunnel mode ipv6ip


Добавляем маршрут по-умолчанию:
Router(config)#ipv6 route ::/0 Tunnel0

Если на вашем маршрутизаторе настроен DNS, то можно уже насладиться работой через IPv6:
Router#ping ipv6.google.com
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2A00:1450:4008:C00::6A, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 60/69/84 ms


На этом этапе у меня возник вопрос – как перенести старую адресацию, чтобы не пришлось запоминать для каждого компьютера по два IP адреса – IPv4 и IPv6. Выход есть. Для начала необходимо перевести IPv4 в hex, чем и займемся:
192.168.1.0 → C0.A8.1.0
192.168.2.0 → C0.A8.2.0


Запишем в виде, более соответствующем IPv6: C0A8:0100 и C0A8:0200. Ведущие нули можно опускать, поэтому C0A8:100 и C0A8:200.

Наши сети 192.168.1.0 и 192.168.2.0 имели маску 255.255.255.0 (или более коротко — /24). Вспомним немного теории – маска /24 говорит о том, что начальные 24 бита не меняются в пределах сети, а могут меняться лишь оставшиеся 8 бит (IPv4 адрес состоит из 32 бит – 4 разряда по 8 бит). Нам необходимо сделать аналогичную маску для новой IPv6-сети, однако IPv6 адрес состоит из уже 128 бит. Последние 8 бит могут меняться, первые 120 бит – не могут. Маска: /120.

Когда мы определились с нужной маской – необходимо ввести старые сети в новый IPv6-блок.
192.168.1.0/24 → 2001:470:18:11A::C0A8:100/120
192.168.2.0/24 → 2001:470:18:11A::C0A8:200/120


Настраиваем маршрутизатор:
Router(config)#int fa0/1.10
Router(config-if)#ipv6 enable
Router(config-if)#ipv6 address 2001:470:18:11A::C0A8:101/120
Router(config)#int fa0/1.20
Router(config-if)#ipv6 enable
Router(config-if)#ipv6 address 2001:470:18:11A::C0A8:201/120


Настройка маршрутизатора окончена.

Осталось на компьютерах включить поддержку IPv6, прописать адрес, маску и шлюз. Для примера настроим компьютер, с адресом 192.168.2.189:
192.168.2.189 → C0.A8.2.BD → C0A8:2BD → 2001:470:18:11A::C0A8:2BD
Маска: /120
Шлюз по-умолчанию: 2001:470:18:11A::C0A8:201


Отключаем Teredo (если включен):
>netsh interface teredo set state disabled
OK.


Проверяем работу через IPv6:
>ping ipv6.google.com
Обмен пакетами с ipv6.l.google.com [2a00:1450:4008:c00::6a] с 32 байтами данных:
Ответ от 2a00:1450:4008:c00::6a: время=80мс
Ответ от 2a00:1450:4008:c00::6a: время=65мс
Ответ от 2a00:1450:4008:c00::6a: время=81мс
Ответ от 2a00:1450:4008:c00::6a: время=76мс

Статистика Ping для 2a00:1450:4008:c00::6a:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 65мсек, Максимальное = 81 мсек, Среднее = 75 мсек


Вдобавок можно насладиться анимированой черепахой на www.kame.net (если у Вас черепаха не анимирована – значит Вы попали на сайт через IPv4).

Хотелось бы подвести итоги. Нет необходимости настраивать проброс портов, можно зайти с помощью ssh или удаленного рабочего стола на любой компьютер/сервер внутри локальной сети. Однако очень открыто стоит вопрос безопасности – понятие внутренней сети пропадает, теперь это часть интернета.