Общая информация для всех конфигураций

NAME1

Имя нового туннельного интерфейса. Может быть любым, например 6in4ru

NAME2

Имя физического интерфейса который уже есть в системе, например eth0, enp0s3, ens3,...

SERVER IP

IPv4 адрес сервера туннельного брокера, т.е. нашего сервиса, вы его можете узнать в личном кабинете

LOCAL IP

Внешний IPv4 адрес с вашей стороны. Адрес обязательно должен быть белым.

IPv6 CLIENT P2P/127

IPv6 адрес туннельного интерфейса. Point-to-point (P2P)

IPv6 PD ADDRESS/64

IPv6 сеть для адресации устройств внутри вашей домашней сети. Prefix Delegation (PD)

При добавлении IPv6 маршрута, добавляется не default ::/0, а 2000::/3, что очень много.
Это делается для того, чтобы не перебить уже существующие маршруты в системе.

Про белый и серый адрес

Если в настройках микротика в окне IP->"Address list" вы видите адрес из диапазонов ниже

и не видите других адресов, то вероятно у вас только серый адрес и вам нужно попросить у вашего провайдера белый адрес.

Про 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) = 1480(MTU) - 40(IPv6 header size) - 20(TCP header size)
Если у вас PPPoE подключение, то нужно уменьшить MTU до 1460 байт.

Пример конфигурации для 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
systemctl restart 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


На главную

Добавляйтесь в Телеграм канал
и чат, где можно проконсультироваться по настройке роутеров

Рассказать друзьям! | Помощь | О проекте | Конфигурации