Teredo - сетевой протокол, предназначенный для передачи IPv6-пакетов через сети IPv4. Он позволяет получить доступ к IPv6-хостам даже машинам, находящимся за NAT, так как работает поверх UDP. Для Teredo зарезервирован отдельный префикс: 2001::/32.
Некоторые ограничения на использование Teredo накладывает тот факт что адреса клиентам выделяются динамически и не являются постоянными. Т.е. Teredo удобен для получения доступа в IPv6, но размещать IPv6-сервисы на машине с Teredo проблематично. Далее будет показано как можно настроить Teredo-клиент на FreeBSD.
Во FreeBSD, как и в Linux, в качестве Teredo-клиента используется Miredo. Установим пакет:
pkg install miredo
Далее приводим файл "/usr/local/etc/miredo/miredo.conf" к виду:
# Демон запускается в режиме клиента RelayType client # Имя виртуального сетевого интерфейса, который будет использоваться InterfaceName teredo # Адрес Teredo-сервера ServerAddress teredo.trex.fi # Адрес запасного Teredo-сервера ServerAddress2 teredo.remlab.net
Добавляем в "/etc/rc.conf" строку:
miredo_enable="YES"
И запускаем сервис:
/usr/local/etc/rc.d/miredo start
Проверить что всё хорошо и получить информацию об используемом IPv6-адресе и таблице маршрутизации можно командой:
ifconfig teredo && netstat -nr6
Теперь остаётся настроить файрволл. Мы будем использовать pf. Создадим файл "/etc/pf.rules" следующего содержания:
# Базовые настройки # Внешний интерфейс нашего сервера if_ext = "bge0" # Teredo-интерфейс if_ext_v6 = "teredo" # Список IP-адресов админов table <admins> { \ 1.2.3.4 \ 1.3.7.5 \ } set block-policy drop set state-policy if-bound scrub all reassemble tcp fragment reassemble # Запрещаем весь лишний трафик block drop all # Разрешаем всё на loopback-интерфейсе pass quick on lo0 all # Разрешаем исходящий трафик # IPv4 pass out quick on $if_ext inet proto tcp from ($if_ext) to any flags S/SA keep state pass out quick on $if_ext inet proto { udp, icmp } from ($if_ext) to any keep state # IPv6 pass out quick on $if_ext_v6 inet6 proto tcp from ($if_ext_v6) to any flags S/SA keep state pass out quick on $if_ext_v6 inet6 proto { udp, icmp6 } from ($if_ext_v6) to any keep state # Разрешаем админам обращаться к серверу по SSH pass in quick on $if_ext inet proto tcp from <admins> to ($if_ext) port 22 flags S/SA keep state
Добавляем в файл "/etc/rc.conf" строки:
pf_enable="YES" pf_rules="/etc/pf.rules"
Запускаем файрволл:
/etc/rc.d/pf start
Осталось убедиться что доступ в IPv6 работает. Сделать это можно командой:
ping6 -q -c 5 ya.ru
Если что-то не так то возможно стоит сменить используемый teredo-сервер. В остальном проблем быть не должно.
На этом всё. Приятной работы!