Доступ в IPv6 через Teredo во FreeBSD

()

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

Информация о teredo-интерфейсе и таблице маршрутизации на FreeBSD

Теперь остаётся настроить файрволл. Мы будем использовать 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

Тестирование IPv6-соединения с помощью команды ping6

Если что-то не так то возможно стоит сменить используемый teredo-сервер. В остальном проблем быть не должно.

На этом всё. Приятной работы!

Ключевые слова: teredo, miredo, freebsd, pf, ipv6.

Подписаться на обновления: RSS-лента Telegram канал Twitter

Комментарии:

Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2018 Вадим Калинников aka MooSE