В настоящее время ресурс свободных IPv4 адресов практически исчерпан и всё ближе и неизбежнее переход на IPv6-адреса. Готовясь к этому переходу администраторам полезно уже сейчас начать приобретать хотя бы базовые навыки работы с IPv6.
В настоящий момент есть несколько способов получить IPv6-адрес. Самый очевидный - вам его выдаёт провайдер. Однако в настоящее время абсолютное большинство провайдеров не спешит внедрять в своих сетях поддержку IPv6 и в такой ситуации для получения IPv6-адреса приходится искать обходные пути.
Самый простой способ это "завернуть" свой IPv6-трафик в туннель teredo до одного из teredo-серверов. Адрес в этом случае у вас будет динамический, но его вполне достаточно для обращения к IPv6-ресурсам. Далее будет показано как можно организовать teredo-соединение и защитить его с помощью ip6tables на машине под управлением Ubuntu Server 10.10.
Для организации teredo-туннелей в Linux и *BSD существует инструмент miredo. Создатели этого инструмента так же поддерживают свой teredo-сервер, которым может воспользоваться любой желающий и на использование которого по умолчанию настроен miredo. Это сильно упрощает задачу. Установим miredo:
apt-get install miredo
После установки miredo автоматически запустится и сразу подключится к "родному" серверу "teredo-debian.remlab.net", создав на локальной машине tun-интерфейс с именем "teredo" и настроив маршрут по умолчанию для IPv6 через этот интерфейс.
Посмотреть настройки интерфейса можно командой:
ifconfig teredo
Для просмотра таблицы маршрутизации для IPv6-трафика можно использовать команду:
ip -6 route show
Убедиться что соединение действительно работает можно пропинговав какой-нибудь хост, доступный только по IPv6. Например "ipv6.google.com". Разумеется надо использовать версию ping с поддержкой IPv6 - "ping6":
ping6 -c 3 ipv6.google.com
Разумеется только что созданное соединение нужно закрыть файрволлом. Для настройки файрволла на ipv4-интерфейсах используется iptables. В случае IPv6-соединение нужно использовать ip6tables. В целом использование ip6tables очень напоминает использование iptables, только с поправкой на особенности протокола.
Рассмотрим пример простейшего скрипта для ip6tables:
#!/bin/sh
# Имя нашего ipv6-интерфейса
IF_EXT="teredo"
# Сбрасываем все правила
ip6tables -F
################################################################################
# Устанавливаем политики по умолчанию:
# Запрещаем входящие пакеты
ip6tables -P INPUT DROP
# Разрешаем исходящие
ip6tables -P OUTPUT ACCEPT
# Запрещаем пересылку
ip6tables -P FORWARD DROP
################################################################################
################################################################################
# Минимально-необходимые правила:
# Разрешаем весь трафик внутри localhost
ip6tables -A INPUT -i lo -j ACCEPT
# Разрешаем входящие пакеты, идущие в ответ на исходящие
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
################################################################################
################################################################################
# Остальные правила:
# Разрешаем HTTP и HTTPS для всех
ip6tables -A INPUT -m tcp -p tcp -m multiport --dports 80,443 -i ${IF_EXT} -j ACCEPT
# Разрешаем SSH для всех
ip6tables -A INPUT -m tcp -p tcp --dport 22 -i ${IF_EXT} -j ACCEPT
Этот скрипт можно сохранить под именем "/usr/local/scripts/firewall6.sh". Чтобы правила применялись при загрузке нужно добавить в файл "/etc/rc.local" строку:
/bin/sh /usr/local/scripts/firewall6.sh
На этом рассмотрение teredo в Linux мы пока закончим. Приятной работы!

Anonymous 2013-05-25 13:54:33 (#)
soko1