Общая информация для всех конфигураций
Имя нового туннельного интерфейса. Может быть любым, например 6in4ru
Имя физического интерфейса который уже есть в системе, например eth0, enp0s3, ens3,...
IPv4 адрес сервера туннельного брокера, т.е. нашего сервиса, вы его можете узнать в личном кабинете
Внешний IPv4 адрес с вашей стороны. Адрес обязательно должен быть белым.
IPv6 адрес туннельного интерфейса. Point-to-point (P2P)
IPv6 сеть для адресации устройств внутри вашей домашней сети. Prefix Delegation (PD)
При добавлении IPv6 маршрута, добавляется не default ::/0, а 2000::/3, что очень много.
Это делается для того, чтобы не перебить уже существующие маршруты в системе.
Про белый и серый адрес
Если в настройках микротика в окне IP->"Address list" вы видите адрес из диапазонов ниже
и не видите других адресов, то вероятно у вас только серый адрес и вам нужно попросить у вашего провайдера белый адрес.
Примеры конфигураций
Linux
Mikrotik
Keenetic
OpenWRT
ASUS
Dlink
Про MTU
Максимальное MTU на туннель вычисляется как максимльное MTU принятое в Интернете это 1500 байт - 20 байт на IPv4 заголовок.
Получаем на туннельный интерфейс максимально допустимое значение MTU в размере 1480 байт.
В редких случаях возникает проблема с открытием некоторых сайтов по IPv6, хотя при этом они прекрасно открываются по IPv4.
Вероятно проблема может заключаться в значении TCP MSS, оно может выставляться больше чем MTU на интерфейсе.
Для установления корректной TCP-сессии с удалённым хостом должно соблюдаться следующее условие:
MSS + заголовок TCP + заголовок IPv6 ≤ MTU
Таким образом, максимальный размер
MSS = MTU − размер заголовка IPv6 − размер заголовка TCP.
Максимальное значение MSS при прохождении трафика через туннельный интерфейс составляет
1440(MSS) = 1500(MTU) - 40(IPv6 header size) - 20(TCP header size)
Если у вас PPPoE подключение, то нужно уменьшить MTU до 1420 байт.
Пример конфигурации для Linux
В Linux используется SIT туннель подробнее можно прочитать на Habr
# Настройка point-to-point (SIT) интерфейса в Linux
ip tunnel add NAME1 mode sit remote SERVER IP local LOCAL IP
ip link set NAME1 up
ip addr add IPv6 CLIENT P2P/127 dev NAME1
# Добавление маршрута
ip -6 route add 2000::/3 dev NAME1
# Настройка Prefix Delegation
ip addr add IPv6 PD ADDRESS/64 dev NAME2
Постоянная конфигурация через NetworkManager
Убедитесь, что в /etc/network/interfaces есть строка source /etc/network/interfaces.d/*.
Нужно создать новый файл с именем 6in4ru в /etc/network/interfaces.d/
cat | > /etc/network/interfaces.d/6in4ru
и вставить конфигурацию приведенную ниже, заменив в ней выделенные значения на ваши и нажать Ctrl+D
auto NAME1
iface NAME1 inet6 v4tunnel
local LOCAL IP
endpoint SERVER IP
ttl 64
mtu 1480
address IPv6 CLIENT P2P
netmask 127
gateway IPv6 SERVER P2P
up ip -6 route add 2000::/3 dev NAME1 metric 1
post-up sysctl -w net.ipv4.conf.all.forwarding=1
up ip -6 addr add IPv6 PD ADDRESS/64 dev NAME2
затем перезапускаем сервис networking
systemctl status networking
Данная настройка не является полной, как минимум еще нужно объявить PD префикс внутри домашней сети, но достаточной для IPv6 связности на одном сервере.
Пример конфигурации для Mikrotik
У вас в системе могут быть другие имена интерфейсов
# Включаем IPv6 на микротике
/ipv6/settings/set disable-ipv6=no
# Добавляем туннель 6to4
/interface 6to4 add comment="6in4 Tunnel Broker" disabled=no local-address=LOCAL IP mtu=1480 name=sit1 remote-address=SERVER IP
# Прописываем пиринговый IPv6-адрес и маршрут по-умолчанию
# Обратите внимание, что gateway указывается без /127
/ipv6 route add disabled=no distance=1 dst-address=2000::/3 gateway=IPv6 SERVER P2P scope=30 target-scope=10
/ipv6 address add address=IPv6 CLIENT P2P/127 advertise=no disabled=no eui-64=no interface=sit1
# Прописываем выданный IPv6 Prefix Delegation (PD) префикс на внутреннем интерфейсе
/ipv6 address add address=IPv6 PD ADDRESS advertise=yes disabled=no eui-64=no interface=bridge
# Разрешить раздачу DNSv6 в локальной сети
/ipv6 nd set [ find default=yes ] advertise-dns=yes
# Настройка DNSv6 серверов Яндекс Public DNS
/ip dns set allow-remote-requests=yes servers=2a02:6b8::feed:0ff,2a02:6b8:0:1::feed:0ff
# Правила IPv4 firewall для пропуска IPv6 пакетов внутри IPv4
/ip firewall filter add chain=input action=accept protocol=41
/ip firewall filter add chain=output action=accept protocol=41
# Правила firewall изменяющие TCP MSS значение для IPv6 трафика, назначается на туннельный интерфейс, обычно это sit1
/ipv6 firewall mangle add chain=forward action=change-mss new-mss=clamp-to-pmtu passthrough=no tcp-flags=syn protocol=tcp out-interface=sit1 tcp-mss=1300-65535 log=no
/ipv6 firewall mangle add chain=forward action=change-mss new-mss=clamp-to-pmtu passthrough=no tcp-flags=syn protocol=tcp in-interface=sit1 tcp-mss=1300-65535 log=no
# Базовые настройки IPv6 firewall
# !!! Не применяйте правила firewall если вы не понимаете, что вы делаете!!!
/ipv6 firewall filter
add action=drop chain=input connection-state=invalid in-interface=*WAN*
add action=accept chain=input connection-state=established,related in-interface=*WAN*
add action=accept chain=forward connection-state=established,related in-interface=*WAN*
add action=accept chain=input dst-port=546 in-interface=*WAN* protocol=udp
add action=accept chain=forward in-interface=bridge out-interface=*WAN*
add action=accept chain=input in-interface=*WAN* protocol=icmpv6
add action=accept chain=forward in-interface=*WAN* protocol=icmpv6
add action=drop chain=input in-interface=*WAN* log=yes
add action=drop chain=forward in-interface=*WAN*
Обновление IPv4 EndPoint по запросу от клиента
Пример curl для *nix (Ubuntu)
curl -v --request PUT \ --url https://6in4.ru/tunnel/API KEY/TUNNEL ID \ --header 'Content-Type: application/json' \ --data '{"ipv4remote": "NEW LOCAL IP"}'
Пример для Windows (только для PowerShell)
curl -v --request PUT ` --url https://6in4.ru/tunnel/API KEY/TUNNEL ID ` --header 'Content-Type: application/json' ` --data '{"ipv4remote": "NEW LOCAL IP"}'
Скрипт на Mikrotik
:local api "API_KEY"; :local id "TUNNEL_ID"; :local i; :local p; :set i [/ip cloud get public-address]; :set p ("{\"ipv4remote\":\"$i\"}"); :local url "https://6in4.ru/tunnel/$api/$id"; :local ct "Content-Type: application/json,accept: */*,accept-encoding:*" :local method "put"; /tool fetch http-method=$method http-header-field=$ct http-data=$p url=$url;
Пример конфигурации Keenetic можно найти на самом сайте кинетика и на форуме
Сразу отмечу момент в конфигурации, его многие упускают из виду.
В приведенной конфигурации туннельный IPv6 адрес указывается без маски (без /127).
Так же прошу добавить DNS в настройках подключения.
К примеру Яндекс DNS 77.88.8.8, 77.88.8.1, 2a02:6b8::feed:0ff
OpenWRT
Скрипт обновления IPv4 Endpoint для туннеля на openwrt можно найти по ссылке на Github
Этот скрипт предоставлен нашим пользователем.
# Установка opkg update opkg install luci-proto-ipv6 6in4 # Настройка для интерфейса 6in4 uci set network.6in4ru=interface uci set network.6in4ru.proto='6in4' uci set network.6in4ru.ipaddr='LOCAL IP' uci set network.6in4ru.peeraddr='SERVER IP' uci set network.6in4ru.ip6addr='IPv6 CLIENT P2P' uci add_list network.6in4ru.ip6prefix='IPv6 PD ADDRESS' uci add_list firewall.@zone[1].network='6in4ru' # Добавить в WAN зону firewall uci commit reload_config
ASUS
Значение IPv6-адрес локальной сети должен заполниться автоматически самим роутером, если это не так, то допишите "1" в конце адреса. Как показано на рисунке ниже |
D-Link
Добавляйтесь в Телеграм канал
и чат, где можно проконсультироваться по настройке роутеров
Рассказать друзьям! | Помощь | О проекте | Конфигурации