Вы находитесь здесь: version6.ru » Провайдеры с IPv6 » IPv6 от провайдера Дом.ru » IPv6 от Дом.ru (ЭР-Телеком) на сервере Ubuntu/Debian
Это — старая версия документа!
IPv6 от Дом.ru (ЭР-Телеком) на сервере Ubuntu/Debian
Теория: используется PPPoE с IPv4, поверх него можно воспользоваться протоколом DHCPv6-PD для получения IPv6 prefix delegation.
Внимание! Если вы настроите IPv6 без настройки межсетевого экрана, то предоставите полный доступ к ресурсам сервера. Если сервер выполняет роль роутера, то и доступ ко всем ресурсам локальной сети.
PPPoE
Для удобства, можно установить пакет pppoeconf, запустить сам pppoeconf от суперпользователя root, пройти через вопросы-ответы (в т.ч., надо будет ввести логин и пароль для PPPoE соединения):
sudo apt-get update sudo apt-get install pppoeconf sudo pppoeconf
Здесь официальная инструкция от ЭР-Телекома, с картинками.
Потом поправить получившиеся настройки (обычно необходимо добавить одну из опций — ipv6 ,
или +ipv6
):
Пример:
- /etc/ppp/peers/dsl-provider
+ipv6 noipdefault defaultroute replacedefaultroute hide-password noauth persist plugin rp-pppoe.so eth1 user "v1234567"
Пример системных настроек сетевых интерфейсов (тут обычно править ничего не нужно):
- /etc/network/interfaces
… auto dsl-provider iface dsl-provider inet ppp pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf provider dsl-provider
Межсетевой экран
ip6tables
Разрешаем любые исходящие соединения, а также входящие icmpv6 и tcp на 80-й (http) и 22 порт (ssh):
- /etc/ppp/ipv6-up.d/10-ip6tables
#!/bin/sh # Default value (if unset): IFNAME=${IFNAME:-ppp0} ip6tables -F ip6tables -X ip6tables -P FORWARD DROP # Accept DHCPv6 from WAN ip6tables -A INPUT -i $IFNAME -p udp --dport 546 -j ACCEPT ip6tables -A INPUT -p icmpv6 -j ACCEPT ip6tables -A INPUT -m state --state INVALID -j DROP ip6tables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT ip6tables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT ip6tables -A INPUT -i $IFNAME -m state --state ESTABLISHED,RELATED -j ACCEPT ip6tables -A INPUT -i $IFNAME -j REJECT ip6tables -A OUTPUT -o $IFNAME -j ACCEPT
shorewall6
Раздел ещё не дописан.
DHCPv6-PD
Получение IPv6 адреса по DHCPv6-PD можно настроить с помощью любого из этих демонов:
- dhcpcd5
- wide-dhcpv6-client
- dibbler-client
dhcpcd
Получить DHCPv6-PD можно с помощью пакета dhcpcd5. Установка:
sudo apt-get update sudo apt-get install dhcpcd5
Конфигурация:
- /etc/dhcpcd.conf
allowinterfaces ppp0 eth0 duid ipv6only noipv6rs interface ppp0 ia_pd 1 eth0
При остановке (или обрыве) PPPoE, dhcpcd5 сам удалит IPv6 адрес с eth0, а при переподключении сам получит новый IPv6 адрес. А вот о маршруте по умолчанию надо позаботиться самим:
- /etc/ppp/ipv6-up.d/20-route6
#!/bin/sh ip -6 route add default dev $IFNAME
wide-dhcpv6-client
Если не устраивает dhcpcd5, можно установить пакет wide-dhcpv6-client:
sudo apt-get update sudo apt-get install wide-dhcpv6-client
- /etc/wide-dhcpv6/dhcp6c.conf
interface ppp0 { send ia-pd 0; }; id-assoc pd 0 { prefix-interface eth0 { sla-len 0; ifid 1; }; };
активируем автозапуск:
- /etc/wide-dhcpv6/dhcp6c.conf
INTERFACES="ppp0"
Т.к. в случае остановки PPPoE надо удалить IPv6 адрес с eth0, но wide-dhcpv6-client почему то не делает этого сам, поэтому вобьём небольшой костыль:
- /etc/ppp/ipv6-down.d/20-wide-client-stop
#!/bin/sh service wide-dhcpv6-client stop
и к нему второй костыль:
- /etc/ppp/ipv6-up.d/20-wide-client-start
#!/bin/sh service wide-dhcpv6-client start
запускаем:
sudo service wide-dhcpv6-client start
проверяем:
ip -6 addr show eth0 ping6 2600::
Раздача IPv6 в локальную сеть
Тут будет три этапа:
- Нужно раздать ip-адреса,
- настроить межсетевой экран,
- разрешить проброс трафика между интерфейсами.
Раздача IP-адресов
Раздачу IPv6 можно организовать с помощью radvd или dnsmasq.
radvd
Установка:
sudo apt-get update sudo apt-get install radvd
Настройка:
- /etc/radvd.conf
interface eth0 { AdvSendAdvert on; MaxRtrAdvInterval 60; prefix ::/64 { AdvValidLifetime 600; AdvPreferredLifetime 120; }; };
dnsmasq
Раздел ещё не дописан.
Межсетевой экран
Межсетевой экран будет отличаться от предыдущего варианта, где не надо было пробрасывать трафик и защищать локальную сеть.
ip6tables
В этом примере разрешаем:
- любые исходящие соединения, в том числе из локальной сети;
- любые входящие icmpv6, в том числе в локальную сеть;
- любые входящие на 80-й порт tcp (http), в том числе в локальную сеть;
- входящие на сервер (но не в локальную сеть) tcp на 22-й порт (ssh).
- /etc/ppp/ipv6-up.d/10-ip6tables
#!/bin/sh # Default value (if unset): IFNAME=${IFNAME:-ppp0} ip6tables -F ip6tables -X ip6tables -P FORWARD DROP # Accept DHCPv6 from WAN ip6tables -A INPUT -i $IFNAME -p udp --dport 546 -j ACCEPT ip6tables -A INPUT -p icmpv6 -j ACCEPT ip6tables -A INPUT -m state --state INVALID -j DROP ip6tables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT ip6tables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT ip6tables -A INPUT -i $IFNAME -m state --state ESTABLISHED,RELATED -j ACCEPT ip6tables -A INPUT -i $IFNAME -j REJECT ip6tables -A OUTPUT -o $IFNAME -j ACCEPT ip6tables -A FORWARD -p icmpv6 -j ACCEPT ip6tables -A FORWARD -i eth0 -o $IFNAME -j ACCEPT ip6tables -A FORWARD -i $IFNAME -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT ip6tables -A FORWARD -i $IFNAME -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT ip6tables -A FORWARD -m state --state INVALID -j DROP ip6tables -A FORWARD -j REJECT
shorewall6
Раздел ещё не дописан.
Проброс трафика
Чтобы разрешить трафик между интерфейсами (т.е., чтобы из локальной сети можно было получить доступ в Интернет по IPv6):
- /etc/sysctl.d/99-ipv6-forwarding.conf
net.ipv6.conf.all.forwarding=1 net.ipv6.conf.default.forwarding=1 net.ipv6.conf.ppp0.accept_ra=2
Применяем:
sudo sysctl -p /etc/sysctl.d/60-ipv6-forwarding.conf
Известные проблемы
- Иногда при подключении по PPPoE не работает DHCPv6, попробуйте перезапустить PPPoE:
sudo poff dsl-provider sudo pon dsl-provider