Вы находитесь здесь: version6.ru » Провайдеры с IPv6 » IPv6 от провайдера Дом.ru » IPv6 от Дом.ru (ЭР-Телеком) на сервере Ubuntu/Debian
Различия
Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
|
isp:domru:ubuntu-server-howto [2016-09-12 06:15 UTC] vazhnov Добавил ссылку на инструкцию с картинками: https://domru.ru/clients/instructions/nastroika-pppoe-dlya-ubuntukubuntuxubuntu |
isp:domru:ubuntu-server-howto [2019-10-06 17:00 UTC] (текущий) rm |
||
|---|---|---|---|
| Строка 14: | Строка 14: | ||
| </code> | </code> | ||
| - | [[https://domru.ru/clients/instructions/nastroika-pppoe-dlya-ubuntukubuntuxubuntu|Здесь]] официальная инструкция от ЭР-Телекома, с картинками. | + | [[https://domru.ru/service/knowledgebase/article/174|Здесь]] официальная инструкция от ЭР-Телекома, с картинками. |
| - | Потом поправить проверить получившиеся настройки (обычно необходимо добавить одну из опций — ''ipv6 ,'' или ''+ipv6''): | + | Потом поправить получившиеся настройки (обычно необходимо добавить одну из опций — ''ipv6 ,'' или ''+ipv6''): |
| Пример: | Пример: | ||
| Строка 27: | Строка 27: | ||
| noauth | noauth | ||
| persist | persist | ||
| + | maxfail 0 | ||
| plugin rp-pppoe.so eth1 | plugin rp-pppoe.so eth1 | ||
| user "v1234567" | user "v1234567" | ||
| </file> | </file> | ||
| + | |||
| + | Для сервера, желательно указать опцию ''maxfail 0'', чтобы в случае проблем у провайдера, pppd пытался подключиться вечно, а не 10 раз, как это настроено по умолчанию. | ||
| Пример системных настроек сетевых интерфейсов (тут обычно править ничего не нужно): | Пример системных настроек сетевых интерфейсов (тут обычно править ничего не нужно): | ||
| Строка 39: | Строка 42: | ||
| provider dsl-provider | provider dsl-provider | ||
| </file> | </file> | ||
| + | |||
| + | ===== Межсетевой экран ===== | ||
| + | |||
| + | ==== ip6tables ==== | ||
| + | |||
| + | Разрешаем любые исходящие соединения, а также входящие icmpv6 и tcp на 80-й (http) и 22 порт (ssh): | ||
| + | |||
| + | <file shell /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 -s fe80::/10 --sport 547 --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 | ||
| + | </file> | ||
| + | |||
| + | ==== shorewall6 ==== | ||
| + | Раздел ещё не дописан. | ||
| ===== DHCPv6-PD ===== | ===== DHCPv6-PD ===== | ||
| - | Получение IPv6 можно настроить с помощью любого из этих демонов: | + | Получение IPv6 адреса по DHCPv6-PD можно настроить с помощью любого из этих демонов: |
| - | * wide-dhcpv6-client | + | |
| - | * dhcpcd | + | |
| * dhcpcd5 | * dhcpcd5 | ||
| + | * wide-dhcpv6-client | ||
| + | * dibbler-client | ||
| + | |||
| + | ==== dhcpcd ==== | ||
| + | |||
| + | Получить DHCPv6-PD можно с помощью пакета dhcpcd5. | ||
| + | Установка: | ||
| + | <code> | ||
| + | sudo apt-get update | ||
| + | sudo apt-get install dhcpcd5 | ||
| + | </code> | ||
| + | |||
| + | Конфигурация: | ||
| + | <file text /etc/dhcpcd.conf> | ||
| + | allowinterfaces ppp0 eth0 | ||
| + | duid | ||
| + | ipv6only | ||
| + | noipv6rs | ||
| + | interface ppp0 | ||
| + | ia_pd 1/::/64 eth0/0/64 | ||
| + | </file> | ||
| + | |||
| + | При остановке (или обрыве) PPPoE, dhcpcd5 сам удалит IPv6 адрес с eth0, а при переподключении сам получит новый IPv6 адрес. А вот о маршруте по умолчанию надо позаботиться самим: | ||
| + | |||
| + | <file shell /etc/ppp/ipv6-up.d/20-route6> | ||
| + | #!/bin/sh | ||
| + | ip -6 route add default dev $IFNAME | ||
| + | </file> | ||
| ==== wide-dhcpv6-client ==== | ==== wide-dhcpv6-client ==== | ||
| - | Установить пакет wide-dhcpv6-client: | + | Если не устраивает dhcpcd5, можно установить пакет wide-dhcpv6-client (но имейте в виду, что проект не развивается с 2008 года: [[https://sourceforge.net/p/wide-dhcpv6/git/ci/master/tree/|git репозиторий]]). |
| + | |||
| + | Вначале убедитесь, что PPPoE соединение установлено, иначе установка будет завершена с ошибкой. | ||
| + | |||
| + | Установка: | ||
| <code> | <code> | ||
| sudo apt-get update | sudo apt-get update | ||
| sudo apt-get install wide-dhcpv6-client | sudo apt-get install wide-dhcpv6-client | ||
| </code> | </code> | ||
| + | |||
| + | На вопрос «Интерфейсы, на которые клиент DHCPv6 должен отправлять запросы» ответить ppp0. | ||
| <file text /etc/wide-dhcpv6/dhcp6c.conf> | <file text /etc/wide-dhcpv6/dhcp6c.conf> | ||
| Строка 69: | Строка 133: | ||
| активируем автозапуск: | активируем автозапуск: | ||
| - | <file shell /etc/wide-dhcpv6/dhcp6c.conf> | + | <file shell /etc/default/wide-dhcpv6-client> |
| INTERFACES="ppp0" | INTERFACES="ppp0" | ||
| </file> | </file> | ||
| - | Т.к. в случае остановки PPPoE надо удалить IPv6 адрес с eth0, вобьём небольшой костыль: | + | Т.к. в случае остановки PPPoE надо удалить IPv6 адрес с eth0, но wide-dhcpv6-client почему то не делает этого сам, поэтому вобьём небольшой костыль: |
| <file shell /etc/ppp/ipv6-down.d/20-wide-client-stop> | <file shell /etc/ppp/ipv6-down.d/20-wide-client-stop> | ||
| #!/bin/sh | #!/bin/sh | ||
| Строка 85: | Строка 149: | ||
| </file> | </file> | ||
| - | запускаем: | + | делаем файлы исполняемыми: |
| + | <code> | ||
| + | sudo chmod +x /etc/ppp/ipv6-down.d/20-wide-client-stop /etc/ppp/ipv6-up.d/20-wide-client-start | ||
| + | </code> | ||
| + | |||
| + | и запускаем: | ||
| <code> | <code> | ||
| sudo service wide-dhcpv6-client start | sudo service wide-dhcpv6-client start | ||
| Строка 96: | Строка 165: | ||
| </code> | </code> | ||
| - | ==== dhcpcd ==== | + | ===== Раздача IPv6 в локальную сеть ===== |
| - | Если не устраивает wide-dhcpv6-client, можно то же самое сделать с помощью пакета dhcpcd. | + | В дополнение ко всему написанному выше, надо сделать ещё три пункта: |
| + | * Нужно раздать ip-адреса, | ||
| + | * настроить межсетевой экран, | ||
| + | * разрешить проброс трафика между интерфейсами. | ||
| - | Данная конфигурация ещё не проверена: | + | ==== Раздача IP-адресов ==== |
| - | <file text /etc/dhcpcd.conf> | + | |
| - | allowinterfaces ppp0 eth0 | + | Раздачу IPv6 можно организовать с помощью radvd или dnsmasq. |
| - | duid | + | |
| - | ipv6only | + | === radvd === |
| - | noipv6rs | + | |
| - | interface ppp0 | + | Установка: |
| - | ia_pd 1 eth0 | + | <code> |
| + | sudo apt-get update | ||
| + | sudo apt-get install radvd | ||
| + | </code> | ||
| + | |||
| + | Настройка: | ||
| + | <file text /etc/radvd.conf> | ||
| + | interface eth0 | ||
| + | { | ||
| + | AdvSendAdvert on; | ||
| + | MaxRtrAdvInterval 60; | ||
| + | |||
| + | prefix ::/64 | ||
| + | { | ||
| + | AdvValidLifetime 600; | ||
| + | AdvPreferredLifetime 120; | ||
| + | }; | ||
| + | }; | ||
| </file> | </file> | ||
| - | ===== Межсетевой экран ===== | + | Указание префикса в виде ''::/64'' включает автоматическое его определение из адресов, имеющихся на интерфейсе. При этом в некоторых версиях ''radvd'' возможно появление в логах сообщения "invalid all-zeros prefix in /etc/radvd.conf", однако его вывод является ошибочным (позже это было [[https://github.com/reubenhwk/radvd/commit/b37baa1137d0bd5b9cceb2e447550f1c0a105ac6|исправлено]]), и даже с таким сообщением всё должно [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891324|работать нормально]]. |
| - | ==== ip6tables ==== | + | === dnsmasq === |
| - | Разрешаем любые исходящие соединения, а также входящие icmpv6 и tcp на 80-й (http) и 22 порт (ssh): | + | Раздел ещё не дописан. |
| + | |||
| + | ==== Межсетевой экран ==== | ||
| + | |||
| + | Межсетевой экран будет отличаться от предыдущего варианта, где не надо было пробрасывать трафик и защищать локальную сеть. | ||
| + | |||
| + | === ip6tables === | ||
| + | |||
| + | В этом примере разрешаем: | ||
| + | * любые исходящие соединения, в том числе из локальной сети; | ||
| + | * любые входящие icmpv6, в том числе в локальную сеть; | ||
| + | * любые входящие на 80-й порт tcp (http), в том числе в локальную сеть; | ||
| + | * входящие на сервер (но не в локальную сеть) tcp на 22-й порт (ssh). | ||
| <file shell /etc/ppp/ipv6-up.d/10-ip6tables> | <file shell /etc/ppp/ipv6-up.d/10-ip6tables> | ||
| #!/bin/sh | #!/bin/sh | ||
| + | |||
| + | # Default value (if unset): | ||
| + | IFNAME=${IFNAME:-ppp0} | ||
| + | |||
| ip6tables -F | ip6tables -F | ||
| ip6tables -X | ip6tables -X | ||
| + | ip6tables -P FORWARD DROP | ||
| # Accept DHCPv6 from WAN | # Accept DHCPv6 from WAN | ||
| - | ip6tables -A INPUT -i ${IFNAME} -p udp --dport 546 -j ACCEPT | + | ip6tables -A INPUT -i $IFNAME -p udp -s fe80::/10 --sport 547 --dport 546 -j ACCEPT |
| ip6tables -A INPUT -p icmpv6 -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 80 -j ACCEPT | ||
| ip6tables -A INPUT -p tcp -m tcp --dport 22 -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 -m state --state ESTABLISHED,RELATED -j ACCEPT |
| - | ip6tables -A INPUT -i ${IFNAME} -j REJECT | + | ip6tables -A INPUT -i $IFNAME -j REJECT |
| - | ip6tables -A OUTPUT -o ${IFNAME} -j ACCEPT | + | 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 | ||
| </file> | </file> | ||
| - | ===== Раздача IPv6 в локальную сеть ===== | + | === shorewall6 === |
| - | + | ||
| - | Раздачу IPv6 можно организовать с помощью radvd или dnsmasq. | + | |
| Раздел ещё не дописан. | Раздел ещё не дописан. | ||
| + | ==== Проброс трафика ==== | ||
| + | |||
| + | Чтобы разрешить трафик между интерфейсами (т.е., чтобы из локальной сети можно было получить доступ в Интернет по IPv6): | ||
| + | |||
| + | <file ini /etc/sysctl.d/60-ipv6-forwarding.conf> | ||
| + | net.ipv6.conf.all.forwarding=1 | ||
| + | net.ipv6.conf.default.forwarding=1 | ||
| + | net.ipv6.conf.ppp0.accept_ra=2 | ||
| + | </file> | ||
| + | |||
| + | Применяем: | ||
| + | <code> | ||
| + | sudo sysctl -p /etc/sysctl.d/60-ipv6-forwarding.conf | ||
| + | </code> | ||
| + | |||
| + | ===== Известные проблемы ===== | ||
| + | |||
| + | * Иногда при подключении по PPPoE не работает DHCPv6, попробуйте перезапустить PPPoE: | ||
| + | <code> | ||
| + | sudo poff dsl-provider | ||
| + | sudo pon dsl-provider | ||
| + | </code> | ||
| + | * dhcpcd5 (по крайней мере версии 6.0.5, из Ubuntu 14.04) иногда может падать: | ||
| + | <code> | ||
| + | Sep 27 22:55:24 ubuntuhost dhcpcd[2802]: ppp0: REPLY6 received from fe80::7e20:64ff:fe84:2765 | ||
| + | Sep 27 22:55:24 ubuntuhost kernel: [84643.202100] show_signal_msg: 48 callbacks suppressed | ||
| + | Sep 27 22:55:24 ubuntuhost kernel: [84643.202112] dhcpcd[2802]: segfault at 454c456c ip 08060531 sp bfb0af50 error 4 in dhcpcd5[8048000+26000] | ||
| + | </code> | ||
| + | * а radvd при этом продолжит раздавать адресацию, которой уже нет (bugreport: [[https://github.com/reubenhwk/radvd/issues/53|radvd doesn't announce prefix added at runtime]]). | ||
| + | * При использовании dhcpcd5 (по крайней мере версии 6.0.5, из Ubuntu 14.04) на роутере с двумя сетевыми интерфейсами, в случае если интерфейс, на котором прописывается IPv6 адрес, переходит в состояние down (например выключили коммутатор за роутером), то IPv6 адрес удаляется и сервер остаётся без IPv6. После поднятия интерфейса адрес не восстанавливается. Такой проблемы нет с wide-dhcpv6-client, благодаря скриптам /etc/network/if-down.d/wide-dhcpv6-client и /etc/network/if-up.d/wide-dhcpv6-client. | ||
isp/domru/ubuntu-server-howto.1473660948.txt.gz · Последние изменения: 2016-09-12 06:15 UTC От vazhnov


