Домашняя сеть белых ipv6 адресов
Понадобилось мне заиметь ipv6 адрес, так как у одного нужного мне домена, адрес ipv4 отсутствует как класс.
Но, так как у меня дома небольшая сеть, я решил а почему бы каждому компу не дать свой белый ipv6 адрес (как оказалось, это даже проще сделать, чем делать nat, создавать локальную ipv6 сеть и т.п.)
В наличии имеем следующее:
- шлюз на FreeBSD, потому и настраивать буду на примере фряхи(хотя для linux не сильно отличается)
- белый статический ipv4 адрес(можно и динамический, но он должен быть белый, вроде как; если динамический, придётся скриптиком менять IP на сайте и переподнимать туннель). IP должен пинговаться снаружи
- соединение с провайдером по pppoe, поднимаемое на этом шлюзе
- 2 компа с линуксом на борту
Итак:
- Регистрируемся на сайте www.tunnelbroker.net
- После получения email с паролем, авторизуемся и тыкаем Create regular tunner
- Вводим свой ipv4 адрес, и выбираем точку подключения(можно подождать пару секунд и точка будет определена автоматически; я перепроверил – определилась с наименьшей задержкой). Тыкаем submit
- Мы создали туннель, нам выделили сеть. Нужно теперь это настроить на роутере. Для начала просто проверим работоспособность. Для этого в Tunnel Details смотрим в самом низу страницы “Example IPv6 Tunnel Configurations by OS (Windows, Linux, etc.)“
- Выбираем FreeBSD >= 4.4 RELEASE, жмём show config, и видим готовые строки для ввода в консоли
- Копипастим их в консоль шлюза, смотрим чтобы всё было без ошибок и проверям
~ # ping6 ipv6.google.com PING6(56=40+8+8 bytes) 2001:470:1f08:d8c::2 --> 2a00:1450:8005::93 16 bytes from 2a00:1450:8005::93, icmp_seq=0 hlim=56 time=337.278 ms ^C --- ipv6.l.google.com ping6 statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 337.278/337.278/337.278/0.000 ms ~ #
- Теперь надо настроить, чтобы это всё поднималось само при загрузке. Для этого воспользуемся хэндбуком freeBSD
- Смотрим снова на страницу Tunnel Details
Ищем нужные данные. Это- Выделенный префикс(сеть)
Routed /64: 2001:111:1f09:111::/64 - ipv4, ipv6 адреса сервера
Server IPv4 address: 216.66.80.26
Server IPv6 address: 2001:111:1f08:111::1/64 - ipv4, ipv6 адреса клиента. ipv4 адрес – это внешний IP
Client IPv4 address: 123.123.123.123
Client IPv6 address: 2001:111:1f08:111::2/64
У меня ipv6 адрес сервера и ipv6 адрес клиента были из одной сети/64 и эта сеть на 1 символ отличалась от той, что мне выделенна
- Выделенный префикс(сеть)
- У меня в rc.conf за ipv6 отвечают следующие строки
ipv6_enable="YES" # с этим всё понятно ipv6_ifconfig_vr0="2001:111:1f09:111::::1" # первый ip, из выделенного мне префикса(то бишь сети) # vr0 - интерфейс, смотрящий в локальную сеть ipv6_defaultrouter="2001:111:1f08:111::1" # Server IPv6 address gif_interfaces="gif0" gifconfig_gif0="123.123.123.123 216.66.80.26" # Client IPv4 address и Server IPv4 address ipv6_ifconfig_gif0="2001:111:1f08:111::2 2001:111:1f08:111::1 prefixlen 128" # Client IPv6 address и Server IPv6 address ipv6_gateway_enable="YES" # разрешаем быть ipv6 шлюзом radvd_enable="YES" # об этом позже
- Теперь о том, как раздавать. Можно по “умному”, настроить dhcpd и т.п. Но есть другой вей, более простой
Ставим radvd – /usr/ports/net/radvd -
В rc.conf radvd_enable=”YES”, если не сделали этого выше. И создаём конфиг /usr/local/etc/radvd.conf
interface vr0 { AdvSendAdvert on; prefix 2001:111:1f09:111::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };Вместо строки prefix пишем выделенную нам сеть.
- Ребутим шлюз. У меня без ребута radvd не заработало
- После ребута, проверяем что поднялось как ipv6 на шлюза, так и radvd. Пингуем ipv6.google.com с шлюза
- Если выше всё успешно, то пингуем тот же ipv6.google.com с компьютера в сети. На самом компьютере ничего делать не нужно. Всё должно работать
Теперь небольшой хинт, обьяснённый мне в конференции gentoo at conference.gentoo.ru
IPv6 адреса, получаемые компьютерам в сети, зависят(точнее генерируются) от Scope:Link (link-local) ipv6 адреса, уже висящего на интерфейсе. А он, в свою очередь зависит от MAC адреса.
То есть каждому компьютеру, будет всегда выдаваться один и тот же ipv6 адрес.
Этот адрес можно и в ДНС прописать.
Потому схема с radvd проще, чем с dhcpd.



Отличная статейка. Спасибо за подробное описание!