Это — старая версия документа!


Раздача 6to4 IPv6 в локальную сеть

Впервые опубликовано 2010-01-21

После настройки 6to4, на ваш роутер «приходит» из Интернета подсеть с маской /48, имеющая адрес, составленный из 2002 и вашего IPv4, закодированного в hex-формате. К примеру, для адреса 123.123.123.123, адрес этой подсети будет выглядеть как 2002:7b7b:7b7b::/48.

Ради простоты примеров, предположим, что вашей подсетью оказалась 2002:aabb:ccdd::/48, раздать машинам в локальной сети вы решили адреса из подсети меньшего размера, 2002:aabb:ccdd:e::/64, а интерфейсом, к которому подключена локальная сеть, является eth0. Рассмотрим процесс настройки роутера на примере Debian GNU/Linux.

1. Настройка файрволла

Поскольку при использовании IPv6 каждый из компьютеров вашей локальной сети будет иметь настоящий, Интернетовский IP-адрес, важно настроить на вашем роутере сетевой экран, который будет блокировать все запросы на входящие соединения из Интернета, но разрешать их, если они исходят из локальной сети. Это может выглядеть примерно так:

iptables -I INPUT  -p ipv6 -j ACCEPT
iptables -I OUTPUT -p ipv6 -j ACCEPT

ip6tables -F

ip6tables -A INPUT -p icmpv6 --icmpv6-type 128 -m limit --limit 900/min -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type 129 -m limit --limit 900/min -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 128 -m limit --limit 900/min -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 129 -m limit --limit 900/min -j ACCEPT
ip6tables -A FORWARD -p icmpv6 --icmpv6-type 128 -m limit --limit 900/min -j ACCEPT
ip6tables -A FORWARD -p icmpv6 --icmpv6-type 129 -m limit --limit 900/min -j ACCEPT

ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -i eth0 -j ACCEPT
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -j REJECT

ip6tables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A FORWARD -i eth0 -j ACCEPT
ip6tables -A FORWARD -j REJECT

ip6tables -A OUTPUT -j ACCEPT

Можно сохранить эти команды в шелл-скрипт, а чтобы он выполнялся при каждом включении компьютера, добавить его вызов в /etc/rc.local.

Либо, если вы как и я, пользуетесь скриптом arno-iptables-firewall, указанные команды достаточно внести в /etc/arno-iptables-firewall/custom-rules и перезапустить файрволл.

2. Назначение адреса внутреннему интерфейсу

IPv6-адрес из раздаваемой в «локалку» подсети необходимо также назначить и сетевому интерфейсу самого роутера. Адрес можно выбрать любой, к примеру для роутеров часто используется адрес с ::1 в конце. Добавляется он так:

ip addr add 2002:aabb:ccdd:e::1/64 dev eth0

Для более перманентного сохранения этой настройки, добавим её в /etc/network/interfaces:

...
iface eth0 inet6 static
	address 2002:aabb:ccdd:e::1
        netmask 64
...

3. Установка и настройка radvd

Устанавливаем radvd:

apt-get install radvd

Изменяем файл /etc/radvd.conf следующим образом:

interface eth0
{
   AdvSendAdvert on;
   prefix 2002:aabb:ccdd:e::/64
   {
       AdvOnLink on;
       AdvAutonomous on;
   };
};

У radvd есть и поддержка 6to4 на динамических IPv4-адресах (заключающаяся в автоопределении используемой подсети, см. опцию Base6to4Interface в man radvd), однако я бы не рекомендовал раздавать такой IPv6 с помощью radvd. Если ваш IPv4 не статичен, лучше воспользуйтесь туннельным брокером.

Включаем маршрутизацию IPv6. Для этого, нужно добавить в /etc/sysctl.conf следующие строки (либо изменить их, если они там есть):

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1

После чего, выполнить с правами root:

sysctl -p

Осталось только перезапустить radvd:

/etc/init.d/radvd restart

Всё, теперь компьютеры локальной сети должны автоматически получить адреса из вашей Routed-подсети /64. Можно проверить это, попинговав ipv6.google.com с любого из них.


6to4/to-lan.1264092693.txt.gz · Последние изменения: 2011-05-31 10:45 UTC (внешнее изменение)
Personal Tools