В настоящее время ресурс свободных 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