LINUX.ORG.RU
ФорумAdmin

Не пропихиваются пакеты из IPv6 /64 сети в наружу

 , , , ,


2

3

Друзья, не пому в чем засада (опыта большого нет).

Хочу пропихнуть IPv6 глобальную подсеть по VPN-каналу. Соответственно есть Ubuntu 20 сервер с /48 адресом. На нем установлен WireGuard создающий интерфейс wg1 с /64 сетью, кусочком /48-й сети.

Внутри сети все бегает, но не пойму по какой причине пакеты из /64 не уходят на глобальный интерфейс. Явно чего-то не хватает, например, маршрута, но не соображу какого.

Проблема выглядит вот так вот (здесь и далее все пускаю с сервера):

ping -I wg1 -6 ya.ru
ping: connect: Network is unreachable

ifconfig:

ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 185.117.119.101  netmask 255.255.255.0  broadcast 185.117.119.255
        inet6 2a04:5201:2::1  prefixlen 128  scopeid 0x0<global>
        inet6 2a04:5201:2::b8  prefixlen 48  scopeid 0x0<global>
        inet6 fe80::5054:ff:feb6:7c08  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:b6:7c:08  txqueuelen 1000  (Ethernet)
        RX packets 17186312  bytes 1077327023 (1.0 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 75653  bytes 48797200 (48.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 90  bytes 7262 (7.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 90  bytes 7262 (7.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg1: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet6 2a04:5201:2:1::  prefixlen 64  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ip6tables -S:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i ens3 -o wg1 -j ACCEPT
-A FORWARD -i wg1 -j ACCEPT
-A FORWARD -i ens3 -o wg1 -j ACCEPT
-A FORWARD -i wg1 -j ACCEPT

ip -6 route:

::1 dev lo proto kernel metric 256 pref medium
2a04:5201:2::1 dev ens3 proto kernel metric 256 pref medium
2a04:5201:2:1::/64 dev wg1 proto kernel metric 256 pref medium
2a04:5201:2::/48 dev ens3 proto kernel metric 256 pref medium
fe80::/64 dev ens3 proto kernel metric 256 pref medium
default via 2a04:5201:2::1 dev ens3 metric 1024 onlink pref medium

sysctl.conf:

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.ens3.accept_ra=2

wg1 packets 0

Такого не должно быть, как оно работает непонятно, может в обход wg идет трафик просто по локалке не?

naKovoNapalBaran ()
Ответ на: комментарий от naKovoNapalBaran

wg1 packets 0

Такого не должно быть, как оно работает непонятно, может в обход >wg идет трафик просто по локалке не?

Просто клиент не подключен (только сервер поднят). Если запустить клиента, то очутится внутри /64, но из нее наружу ничего уходить не будет. Это с клиента: ping -6 ya.ru

PING ya.ru(ya.ru (2a02:6b8::2:242)) 56 data bytes
From 2a04:5201:2:1:: (2a04:5201:2:1::) icmp_seq=1 Destination unreachable: Address unreachable
From 2a04:5201:2:1:: (2a04:5201:2:1::) icmp_seq=2 Destination unreachable: Address unreachable

traceroute6 ya.ru

traceroute to ya.ru (2a02:6b8::2:242) from 2a04:5201:2:1::3, port 33434, from port 32440, 30 hops max, 60 bytes packets
 1  2a04:5201:2:1:: (2a04:5201:2:1::)  62.309 ms  18.967 ms  *
 2  2a04:5201:2:1:: (2a04:5201:2:1::)  3092.275 ms !H  * 3084.592 ms !H
kvv213 ()
Ответ на: комментарий от Pinkbyte

IPv6-адрес на wg1 совпадает с адресом всей сети (2a04:5201:2:1::/64). Поставь 2a04:5201:2:1::1 например

Не очень понял, где он совпадает. У единственного клиента там :3/128 У сети wg1 2a04:5201:2:1::/64

kvv213 ()
Последнее исправление: kvv213 (всего исправлений: 1 )
Ответ на: комментарий от naKovoNapalBaran

Маршрут в интернет нужен на шлюзе, а не в впн вроде как.

Это я тут согласен. Но не понимаю как этот маршрут сделать, чтобы из /64 шло на /48 и далее везде. Ну и в обратную сторону.

kvv213 ()
Ответ на: комментарий от kvv213

Попробуй сделать как выше посоветовали, какраз один адрес на два интерфейса нужно ставить в ип6 или морочиться с локальными подсетями, потому что может оказаться что впн не может из своей подсети попасть к интерфейсу интернета.

naKovoNapalBaran ()
Последнее исправление: naKovoNapalBaran (всего исправлений: 2 )
Ответ на: комментарий от kvv213

Вам уже пальцем ткнули.

From 2a04:5201:2:1::

anc ★★★★★ ()
Ответ на: комментарий от kvv213

Не очень понял, где он совпадает.

wg1: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet6 2a04:5201:2:1::  prefixlen 64  scopeid 0x0<global>

Это цитата из первого сообщения. Как я понимаю это адрес, назначенный на самом шлюзе. И вот он - неправильный.

Единственный случай когда адрес сети может совпадать с адресом на самой машине - это сети /31 в IPv4. Может подобное есть и в IPv6, но я как-то таким вопросом не задавался.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от Pinkbyte

IPv6-адрес на wg1 совпадает с адресом всей сети (2a04:5201:2:1::/64). Поставь 2a04:5201:2:1::1 например

Попробовал на wg1:

  1. Поставить вторым адресом 2a04:5201:2:1::1/128 + /64 сеть
  2. Поставить вторым адресом 2a04:5201:2:1::10/128 + /64 сеть
  3. Поставить единственным адресом 2a04:5201:2:1::10/128
  4. Поставить единственным адресом 2a04:5201:2:1::1/128

Результат одинаковый:

ping -I wg1 -6 ya.ru ping: connect: Network is unreachable

kvv213 ()
Ответ на: комментарий от kvv213

connect: Network is unreachable

Показывай выхлоп

ip -6 route
nslookup -type=AAAA ya.ru
ip -6 get <тут один из ipv6-адресов ya.ru, полученных выше>

Учитывая что маршрут по умолчанию для IPv6 у тебя в ens3 смотрит, я правда не сильно понимаю чего ты хочешь добиться.

Если нужно завернуть маршрут для ответного трафика только с конкретной подсети, тогда тебе надо смотреть в сторону policy based routing.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от Pinkbyte

Это цитата из первого сообщения. Как я понимаю это адрес, назначенный на самом шлюзе. И вот он - неправильный.

Как я понимаю, вот этот адрес назначен на сервере inet6 2a04:5201:2::b8 prefixlen 48 с сетью /48. Из нее я беру одну сеть /64 inet6 2a04:5201:2:1:: prefixlen 64 и назначаю ее на wg1.

Получается вот так вот:

 ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 185.117.119.101  netmask 255.255.255.0  broadcast 185.117.119.255
        inet6 fe80::5054:ff:feb6:7c08  prefixlen 64  scopeid 0x20<link>
        inet6 2a04:5201:2::b8  prefixlen 48  scopeid 0x0<global>
        ether 52:54:00:b6:7c:08  txqueuelen 1000  (Ethernet)
        RX packets 63477  bytes 3874403 (3.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 685  bytes 195842 (195.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 80  bytes 5920 (5.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 80  bytes 5920 (5.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg1: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet6 2a04:5201:2:1::  prefixlen 64  scopeid 0x0<global>
        inet6 2a04:5201:2:1::1  prefixlen 128  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@vm1760781:/etc/wireguard# ping -I wg1 -6 ya.ru
ping: connect: Network is unreachable

Но пинг не идет.

kvv213 ()
Ответ на: комментарий от Pinkbyte
 ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2a04:5201:2:1::1 dev wg1 proto kernel metric 256 pref medium
2a04:5201:2:1::/64 dev wg1 proto kernel metric 256 pref medium
2a04:5201:2::/48 dev ens3 proto kernel metric 256 pref medium
fe80::/64 dev ens3 proto kernel metric 256 pref medium
default via 2a04:5201:2::1 dev ens3 metric 1024 onlink pref medium
nslookup -type=AAAA ya.ru
Server:         2606:4700:4700::1111
Address:        2606:4700:4700::1111#53

Non-authoritative answer:
Name:   ya.ru
Address: 2a02:6b8::2:242
ip -6 get 2606:4700:4700::1111
Object "get" is unknown, try "ip help".
ping -6 2606:4700:4700::1111
PING 2606:4700:4700::1111(2606:4700:4700::1111) 56 data bytes
64 bytes from 2606:4700:4700::1111: icmp_seq=1 ttl=60 time=6.25 ms
ping -6 -I wg1 2606:4700:4700::1111
ping: connect: Network is unreachable
kvv213 ()
Ответ на: комментарий от kvv213

пинг не идет.

откуда не идет? ты для определенного источника трафика пытаешься переделать маршрутную таблицу? это точно задача для policy based routing, создавай отдельную таблицу маршрутизации и пиши ip rule для нее.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от kvv213

ip -6 get

опечатался я, ip -6 route get

Но я уже вижу что у тебя просто нет маршрута для выбранного источника, т.к. не настроен pbr.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от kvv213

Хотя давай еще раз, по порядку, может я неправильно всё понял. Тесты ты проводишь со шлюза, и просто хочешь, чтобы клиентам за wg1 была доступна определенная ipv6-подсеть, так?

Если да, тогда ты тест неправильно делаешь.

Надо так:

ping -6 -I 2a04:5201:2:1::1%wg1 2606:4700:4700::1111

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от Pinkbyte

Хотя давай еще раз, по порядку, может я неправильно всё понял. Тесты ты проводишь со шлюза, и просто хочешь, чтобы клиентам за wg1 была доступна определенная ipv6-подсеть, так?

Все тесты сейчас гоняю с сервера, где есть /48 IPv6 и установлена «серверная» часть WireGuard (поэтому и -I wg1). Задача раздать глобальные IPv6 адреса на локалку через VPN-туннель.

kvv213 ()
Ответ на: комментарий от Pinkbyte

Так тоже не идет:

ping -6 -I 2a04:5201:2:1::1%wg1 2606:4700:4700::1111
PING 2606:4700:4700::1111(2606:4700:4700::1111) from 2a04:5201:2:1::1 wg1: 56 data bytes
From 2a04:5201:2:1::1 icmp_seq=1 Destination unreachable: Address unreachable

Могу пинговать с клиента wg подключенного в wg1.

kvv213 ()
Ответ на: комментарий от kvv213

Хм, вот это уже не нормально.

А если так:

ping -6 -I 2a04:5201:2:1::1 2606:4700:4700::1111

Смотри при этом что происходит на ens3:

tcpdump -i ens6 -nn ip6

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от Pinkbyte

Тоже не идет:

ping -6 -I 2a04:5201:2:1::1 2606:4700:4700::1111
PING 2606:4700:4700::1111(2606:4700:4700::1111) from 2a04:5201:2:1::1 : 56 data bytes
From 2a04:5201:2:1::1 icmp_seq=1 Destination unreachable: Address unreachable
kvv213 ()
Ответ на: комментарий от Pinkbyte

Опечатался я опять, да что ж такое:

tcpdump -i ens3 -nn ip6

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

По TCP-дампу вот такое вот:

 tcpdump -i ens3 -nn ip6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes
08:59:36.794786 IP6 2a04:5201:2::6c > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:36.930120 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:5897: ICMP6, neighbor solicitation, who has 2a04:5201:2::5897, length 32
08:59:36.931043 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:4d76: ICMP6, neighbor solicitation, who has 2a04:5201:2::4d76, length 32
08:59:36.932749 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:2c1: ICMP6, neighbor solicitation, who has 2a04:5200:68::2c1, length 32
08:59:36.934691 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:213: ICMP6, neighbor solicitation, who has 2a04:5200:68::213, length 32
08:59:37.928592 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:4d76: ICMP6, neighbor solicitation, who has 2a04:5201:2::4d76, length 32
08:59:40.790837 IP6 2a04:5201:2::730 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:41.127334 IP6 2a04:5201:2::682 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:42.060128 IP6 fe80::5054:ff:feb6:7c08 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:42.927865 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:213: ICMP6, neighbor solicitation, who has 2a04:5200:68::213, length 32
08:59:43.068191 IP6 fe80::5054:ff:feb6:7c08 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:43.931679 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:213: ICMP6, neighbor solicitation, who has 2a04:5200:68::213, length 32
08:59:44.092190 IP6 fe80::5054:ff:feb6:7c08 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:44.389390 IP6 2a04:5201:2::389 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:44.441768 IP6 2a04:5201:2::456 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:44.929701 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:213: ICMP6, neighbor solicitation, who has 2a04:5200:68::213, length 32
08:59:45.117394 IP6 fe80::5054:ff:feb6:7c08 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:46.140157 IP6 fe80::5054:ff:feb6:7c08 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:46.983282 IP6 2a04:5201:2::30 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:47.164156 IP6 2a04:5201:2::b8 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:47.166983 IP6 2a04:5201:2::1 > 2a04:5201:2::b8: ICMP6, neighbor advertisement, tgt is 2a04:5201:2::1, length 32
08:59:47.167046 IP6 2a04:5201:2:1::1 > 2606:4700:4700::1111: ICMP6, echo request, seq 4, length 64
08:59:47.167059 IP6 2a04:5201:2::b8.58086 > 2001:67c:1560:8003::c8.123: NTPv4, Client, length 48
08:59:47.186837 IP6 2a04:5201:2::13d > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
08:59:47.202494 IP6 2001:67c:1560:8003::c8.123 > 2a04:5201:2::b8.58086: NTPv4, Server, length 48
08:59:47.948673 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:f327: ICMP6, neighbor solicitation, who has 2a04:5200:68::f327, length 32
08:59:47.949382 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:a89: ICMP6, neighbor solicitation, who has 2a04:5200:68::a89, length 32
08:59:47.951266 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:55cf: ICMP6, neighbor solicitation, who has 2a04:5201:2::55cf, length 32
kvv213 ()

Стоп! Я слепой! У тебя там /48 маска на ens3 !!! Если так и задумано и этот адрес выдается тебе провайдером, то без proxy_ndp ничего не взлетит.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от kvv213

Что и требовалось доказать, там у тебя не prefix delegation, а плоская сеть /48. Тут нужен аналог proxy arp(который только для ipv4), называется proxy ndp. Гугли как его настроить, там всё просто.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Что и требовалось доказать, там у тебя не prefix delegation, а плоская сеть /48. Тут нужен аналог proxy arp(который только для ipv4), называется proxy ndp. Гугли как его настроить, там всё просто.

А нельзя ли просто маршрутами прописать? Я пока прописываю адреса в /64 руками.

Как я понимаю, NDPPD требуется для поиска других машин в рамках одной подсети. И по идее она должна связать ens3 и wg1 каким-то магическим IPv6 способом, построится маршрут и пакеты забегают в нужном направлении.

/48 сеть выдается провайдером VPS-са, прописана руками в интерфейс.

kvv213 ()
Ответ на: комментарий от kvv213

А нельзя ли просто маршрутами прописать? Я пока прописываю адреса в /64 руками.

Сложность твоей задачи в том, что тебе нужно прописать маршрут НА РОУТЕРЕ провайдера :-). Иначе он будет слать всё напрямик в интерфейс, а не через твой шлюз.

Такое возможно, если используется prefix delegation, но в таком случае маска на ens3 у тебя была бы /64, а дополнительные префиксы ты бы как раз получал через специальный DHCPv6-атрибут.

Но у тебя там плоская сеть /48, тут есть два способа разбить ее на части:

1) объединить ens3 и wg1 в мост;
2) воспользоваться proxy_ndp

С пунктом 1 ты в пролете, т.к. насколько мне известно WireGuard - это L3-интерфейс, в мост его добавить невозможно.

Остается proxy ndp. Не знаю зачем тебе NDPPD, я делал всё без него - достаточно включить proxy_ndp на обоих интерфейсах и прописать соответствия IPv6-подсетям через ip neighbor add.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от Pinkbyte

Остается proxy ndp. Не знаю зачем тебе NDPPD, я делал всё без него - достаточно включить proxy_ndp на обоих интерфейсах и прописать соответствия IPv6-подсетям через ip neighbor add.

Понял, спасибо. Попробую сделать. Отпишусь в ветку.

PS. NDPPD по поиску proxy_ndp нашелся.

PSS. А как можно понять, плоская у меня сеть или нет?

PSSS. Правильно ли я понимаю, что «объединить ens3 и wg1 в мост;» это можно сделать «роутером»? Например, OpenWRT взять. Хотя, тогда можно и через ip add route сделать ведь. И я не могу разве прописать маршрут с wg1 и указать в качестве gw адрес на моем VPS? Разве маршрутизатор провайдера не отправляет все пакеты /48 на мой VPS?

Хочу разобраться до конца.

kvv213 ()
Последнее исправление: kvv213 (всего исправлений: 1 )
Ответ на: комментарий от kvv213

что «объединить ens3 и wg1 в мост;» это можно сделать «роутером»? Например, OpenWRT взять.

Нет, OpenWRT тебе в этом не поможет.

Маршрутизация работает на третьем уровне модели tcp/ip(межсетевом), мост - на втором(канальном). Любой интерфейс, предоставляющий внутри себя канальный уровень(то есть обладающий Ethernet-заголовком) можно добавить в мост(вырожденные случае, когда Wi-Fi устройствам подобное запрещено на уровне драйверов пока опустим).

Туннельные интерфейсы(частным случаем которых как раз и являются VPN) работают поверх существующей Ethernet-сети и могут как эмулировать Ethernet-среду целиком(включая канальный уровень), так и эмулировать только межсетевой уровень, то есть начиная с IP заголовка и выше(потому что IP протокол в общем-то не привязан к Ethernet-у и может работать поверх чего угодно - вырожденный шуточный пример).

Последний тип интерфейсов в мост добавить не получится, т.к. у них внутри Ethernet-заголовков НЕТ.

Из примеров: Wireguard как раз относится к таким. OpenVPN может работать и в режиме эмуляции Ethernet(tap-интерфейс) и без нее(tun-интерфейс). ZeroTier работает только в режиме эмуляции Ethernet.

Разве маршрутизатор провайдера не отправляет все пакеты /48 на мой VPS?

Он направляет все пакеты /48 в сеть. Не на твой интерфейс, а именно в сеть. То есть он считает что все устройства находятся в пределах ОДНОГО канального сегмента.

Если нет понимания как работает маршрутизация в принципе, рекомендую цикл статей/видео «Сети для самых маленьких». Там про IPv4 конечно, но общий принцип работы маршрутизации сохраняется и для IPv6 (хотя конечно маршрутизация link-local адресов - это отдельный новый мир, непричный для тех кто уже знает как работает IPv4)

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2 )
Ответ на: комментарий от Pinkbyte

Спасибо за детальное разъяснение.

Т.е., как я понимаю, мой провайдер VPS выдал мне /48 сеть, но маршрутизирует на нее только один адрес 2a04:5201:2::b8 вместо целой сети. Это как-то можно проверить находясь на машине? Пока идея назначить еще один IPv6 адрес на ens3 и попробовать его пропинговать извне.

Тем не менее по прокси ndp прописал следующее, но результат остался тот же…

sysctl -p
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.ens3.accept_ra = 2
net.ipv6.conf.all.proxy_ndp = 1

ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 185.117.119.101  netmask 255.255.255.0  broadcast 185.117.119.255
        inet6 fe80::5054:ff:feb6:7c08  prefixlen 64  scopeid 0x20<link>
        inet6 2a04:5201:2::b8  prefixlen 48  scopeid 0x0<global>
        ether 52:54:00:b6:7c:08  txqueuelen 1000  (Ethernet)
        RX packets 7445166  bytes 485972382 (485.9 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 39521  bytes 40377205 (40.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 97  bytes 8256 (8.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 97  bytes 8256 (8.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg1: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet6 2a04:5201:2:1::  prefixlen 64  scopeid 0x0<global>
        inet6 2a04:5201:2:1::1  prefixlen 128  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 247  bytes 204000 (204.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 156  bytes 126864 (126.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ip -6 ne add proxy 2a04:5201:2:1::1 dev ens3

ping -6 -I wg1 ya.ru
ping: connect: Network is unreachable

Дополнительно вот что ip пишет:

ip -6 ne show
fe80::5054:ff:fe50:5b24 dev ens3 lladdr 52:54:00:50:5b:24 STALE
fe80::5054:ff:fe50:f8f9 dev ens3 lladdr 52:54:00:50:f8:f9 STALE
fe80::5054:ff:fe50:8c75 dev ens3 lladdr 52:54:00:50:8c:75 STALE
2a04:5201:2::d5 dev ens3  FAILED
fe80::5054:ff:fe50:94b9 dev ens3 lladdr 52:54:00:50:94:b9 STALE
fe80::5054:ff:fe50:cb7c dev ens3 lladdr 52:54:00:50:cb:7c STALE
fe80::5054:ff:fe50:f3f0 dev ens3 lladdr 52:54:00:50:f3:f0 STALE
fe80::5054:ff:fe50:eb37 dev ens3 lladdr 52:54:00:50:eb:37 STALE
fe80::9618:82ff:fe67:229c dev ens3 lladdr 94:18:82:67:22:9c STALE
fe80::f603:43ff:fe55:fac8 dev ens3 lladdr f4:03:43:55:fa:c8 STALE
2a04:5201:2::1 dev ens3  router INCOMPLETE
fe80::5054:ff:fe50:83c5 dev ens3 lladdr 52:54:00:50:83:c5 STALE
fe80::52c5:8d01:5489:a7c2 dev ens3  FAILED
fe80::5054:ff:fe50:dace dev ens3 lladdr 52:54:00:50:da:ce STALE
fe80::5054:ff:fe50:1254 dev ens3 lladdr 52:54:00:50:12:54 STALE
fe80::5054:ff:fe50:cce2 dev ens3 lladdr 52:54:00:50:cc:e2 STALE

Попробовал добавить еще один адрес IPv6 на ens3:

ip -6 addr add 2a04:5201:2:2::1/128 dev ens3

Локально он пингуется, а вот из внешней сети нет (Address unreachable). Traceroute уходит куда-то в he.net и на 20-м хопе обрывается. Может быть я как-то адреса не так выделяю/назначаю?

kvv213 ()
Последнее исправление: kvv213 (всего исправлений: 3 )
Ответ на: комментарий от kvv213

Т.е., как я понимаю, мой провайдер VPS выдал мне /48 сеть, но маршрутизирует на нее только один адрес 2a04:5201:2::b8 вместо целой сети.

Нет, маршрутизирует он именно всю сеть /48, но не на твой хост, а просто в интерфейс.

Если говорить по логике ipv4(там это проще): вот смотри, у тебя есть сеть 192.168.1.0/24. 192.168.1.1 - шлюз провайдера, 192.168.1.2 - твоя машина. Но в этой сети, теоретически, могут находиться еще компьютеры, так? Поэтому когда снаружи пойдет обращение, например на адрес 192.168.1.10, то этот трафик уйдет именно в саму сеть, а не на твой шлюз.

Варианта добиться получения машиной с адресом 192.168.1.2 трафика для 192.168.1.10 в мире IPv4 всего три:

1) организовать интерфейс-мост и иметь за одним из членов моста хост с адресом 192.168.1.10;
2) назначить адрес 192.168.1.10 дополнительным на тот же интерфейс на самой машине;
3) настроить proxy arp.

В случае IPv6 всё примерно также, только вместо proxy arp у нас proxy ndp. Вариант 2 нас в принципе не устраивает, потому что нам дальше надо трафик передавать, а не на саму машину принимать(хотя в случае если у нас NAT один к одному, то такой вариант имеет право на жизнь). Вариант 1 мы отбросили ранее, т.к. wg1 нельзя добавить в мост.

Тем не менее по прокси ndp прописал следующее, но результат остался тот же…

Не вижу настроек в ip neigh для proxy_ndp, одного включения на интерфейсах недостаточно.

Пример конфигурации можно посмотреть например тут.

Может быть я как-то адреса не так выделяю/назначаю?

Надо смотреть tcpdump.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от Pinkbyte

Если говорить по логике ipv4(там это проще): вот смотри, у тебя есть сеть 192.168.1.0/24. 192.168.1.1 - шлюз провайдера, 192.168.1.2 - твоя машина. Но в этой сети, теоретически, могут находиться еще компьютеры, так? Поэтому когда снаружи пойдет обращение, например на адрес 192.168.1.10, то этот трафик уйдет именно в саму сеть, а не на твой шлюз.

Варианта добиться получения машиной с адресом 192.168.1.2 трафика для 192.168.1.10 в мире IPv4 всего три:

  1. организовать интерфейс-мост и иметь за одним из членов моста хост с адресом 192.168.1.10;
  2. назначить адрес 192.168.1.10 дополнительным на тот же интерфейс на самой машине;
  3. настроить proxy arp.

В моем понимании на примере IPv4, если мы говорим про наиболее популярную сеть с маршрутизатором и подключением через коммутаторы, то общение пакетами идет на уровне L2. В случае если L3 адреса получены, то пакеты уже не будут бегать через роутер, а будут маршрутизироваться на коммутаторе. В Ethernet чтобы получить пакеты от другой машины, то нужно подключиться к концентратору (где его только нынче найти) и включить неразборчивый режим на сетевой карте и слушать все пакеты, что прибегают на интерфейс, соответственно в драйвере должен быть включен аналогичный режим.

Если у нас есть две сети или два сегмента одной сети, то соединить их можно мостом, который на L2 будет гонять пакеты, включая широковещательные, по наличию получателя (его физического адреса) в том или ином сегменте.

Однако, соединение можно сделать и на L3 при помощи роутера. Если есть маршруты правильные. Если есть определенная иерархия сетей, допустим /48 сеть содержит 65 тысяч /64-х сетей. Эта /48 сеть входит в /32 сеть. В /32 и /48 сетях должны быть гейтвеи. Если пакет, предназначенный любому адресу в /48 сети приходит на /32 сеть, то он должен быть отправлен на гейтвей в /48 сети, а там он уже должен разобраться куда этот пакет конкретно запихнуть, в какую /64-ю сеть его пристроить. Настраивается это маршрутизацией.

Правильна ли моя логика?

Идем далее. Вероятно, что на гейтвее /32 сети может не быть «DHCP6» и все адреса там заводятся руками. Т.е. если я выделяю внутри своей /48 сети еще одну /64 сеть, то гейтвей на /32 просто не знает о ее существовании и по прежнему отправлять пакеты со всеми адресами из моей /48 сети в утиль. Правильно ли понимание проблемы с моей стороны?

Я обратил внимание, что IPv6 адрес у моего VPS прописан как 2a04:5201:2::b8/48 а не как 2a04:5201:2::b8/128 при этом указан шлюз 2a04:5201:2::1. Верно ли это, что весь 2a04:5201:2::/48 диапазон адресов мой?

В этом есть сомнения, либо я не так выделяю адреса как следует, либо происходить что-то не ясное, поскольку добавляют на ens3 дополнительный IPv6 и получаю вот это вот:

ip -6 addr add 2a04:5201:2:22::1/48 dev ens3

ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 185.117.119.101  netmask 255.255.255.0  broadcast 185.117.119.255
        inet6 fe80::5054:ff:feb6:7c08  prefixlen 64  scopeid 0x20<link>
        inet6 2a04:5201:2::b8  prefixlen 48  scopeid 0x0<global>
        inet6 2a04:5201:2:22::1  prefixlen 48  scopeid 0x0<global>
        ether 52:54:00:b6:7c:08  txqueuelen 1000  (Ethernet)
        RX packets 9850333  bytes 632411861 (632.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 52593  bytes 43117002 (43.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ping -6 -I ens3 ya.ru
PING ya.ru(ya.ru (2a02:6b8::2:242)) from 2a04:5201:2:22::1 ens3: 56 data bytes
From 2a04:5201:2:22::1 icmp_seq=1 Destination unreachable: Address unreachable
From 2a04:5201:2:22::1 icmp_seq=2 Destination unreachable: Address unreachable

traceroute6 ya.ru
traceroute to ya.ru (2a02:6b8::2:242) from 2a04:5201:2:22::1, 30 hops max, 24 byte packets
 1  2a04:5201:2:22::1 (2a04:5201:2:22::1)  60.1584 ms !H  3074.6161 ms !H  3071.8484 ms !H

Т.е. если у меня появляется дополнительный IPv6 адрес на интерфейсе, у меня вообще отваливается IPv6 выход внаружу. Видимо по-умолчанию идет все от нового адреса, т.к. если использовать параметр -B (Use sticky address) то пинги возобновляются.

Пример конфигурации можно посмотреть например тут.

Буду изучать, спасибо.

kvv213 ()
Последнее исправление: kvv213 (всего исправлений: 1 )
Ответ на: комментарий от kvv213

Попробовал по инструкции. Не помогло :)

 tcpdump -i ens3 -nn ip6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes
16:06:06.440444 IP6 2a04:5201:2::85 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
16:06:06.492148 IP6 fe80::5054:ff:feb6:7c08 > fe80::52c5:8d01:5489:a7c2: ICMP6, neighbor solicitation, who has fe80::52c5:8                                              d01:5489:a7c2, length 32
16:06:07.035209 IP6 fe80::5054:ff:fe50:7947.5678 > ff02::1.5678: UDP, length 128
16:06:07.571549 IP6 2a04:5201:2::31e > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
16:06:08.391497 IP6 2a04:5201:2::b8.57895 > 2606:4700:4700::1111.53: 9723+ AAAA? ya.ru. (23)
16:06:08.398504 IP6 2606:4700:4700::1111.53 > 2a04:5201:2::b8.57895: 9723 1/0/0 AAAA 2a02:6b8::2:242 (51)
16:06:08.423188 IP6 2a04:5201:2::4ef > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
16:06:09.002501 IP6 2a04:5201:2::9c > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
16:06:09.553012 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:213: ICMP6, neighbor solicitation, who has 2a04:5200:68::213,                                               length 32
16:06:09.554658 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2:2::1, len                                              gth 32
16:06:10.202170 IP6 2a04:5201:2::6c9 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2::1, length 32
16:06:10.236227 IP6 fe80::5054:ff:feb6:7c08 > fe80::52c5:8d01:5489:a7c2: ICMP6, neighbor advertisement, tgt is 2a04:5201:2:                                              2::1, length 32
16:06:10.556338 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:6074: ICMP6, neighbor solicitation, who has 2a04:5201:2::6074,                                               length 32
16:06:10.556965 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2:2::1, len                                              gth 32
16:06:10.559117 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:213: ICMP6, neighbor solicitation, who has 2a04:5200:68::213,                                               length 32
16:06:10.561103 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:82ca: ICMP6, neighbor solicitation, who has 2a04:5201:2::82ca,                                               length 32
16:06:11.068152 IP6 fe80::5054:ff:feb6:7c08 > fe80::52c5:8d01:5489:a7c2: ICMP6, neighbor advertisement, tgt is 2a04:5201:2:                                              2::1, length 32
16:06:11.552771 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:213: ICMP6, neighbor solicitation, who has 2a04:5200:68::213,                                               length 32
16:06:11.589031 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:6074: ICMP6, neighbor solicitation, who has 2a04:5201:2::6074,                                               length 32
16:06:11.590360 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2a04:5201:2:2::1, len                                              gth 32
16:06:11.615029 IP6 fe80::52c5:8d01:5489:a7c2 > ff02::1:ff00:82ca: ICMP6, neighbor solicitation, who has 2a04:5201:2::82ca,                                               length 32
16:06:11.732444 IP6 fe80::5054:ff:feb6:7c08 > fe80::52c5:8d01:5489:a7c2: ICMP6, neighbor advertisement, tgt is 2a04:5201:2:                                              2::1, length 32

Это при попытке ping -6 -I wg1 ya.ru

ip -6 ne show
fe80::5054:ff:fe50:5b24 dev ens3 lladdr 52:54:00:50:5b:24 STALE
fe80::5054:ff:fe50:f8f9 dev ens3 lladdr 52:54:00:50:f8:f9 STALE
fe80::5054:ff:fe50:8c75 dev ens3 lladdr 52:54:00:50:8c:75 STALE
2a04:5201:2::d5 dev ens3  FAILED
fe80::5054:ff:fe50:94b9 dev ens3 lladdr 52:54:00:50:94:b9 STALE
fe80::5054:ff:fe50:cb7c dev ens3 lladdr 52:54:00:50:cb:7c STALE
fe80::5054:ff:fe50:f3f0 dev ens3 lladdr 52:54:00:50:f3:f0 STALE
fe80::5054:ff:fe50:eb37 dev ens3 lladdr 52:54:00:50:eb:37 STALE
fe80::9618:82ff:fe67:229c dev ens3 lladdr 94:18:82:67:22:9c STALE
fe80::f603:43ff:fe55:fac8 dev ens3 lladdr f4:03:43:55:fa:c8 STALE
2a04:5201:2::1 dev ens3  router FAILED
fe80::5054:ff:fe50:83c5 dev ens3 lladdr 52:54:00:50:83:c5 STALE
fe80::52c5:8d01:5489:a7c2 dev ens3  FAILED
fe80::5054:ff:fe50:dace dev ens3 lladdr 52:54:00:50:da:ce STALE
fe80::5054:ff:fe50:1254 dev ens3 lladdr 52:54:00:50:12:54 STALE
fe80::5054:ff:fe50:cce2 dev ens3 lladdr 52:54:00:50:cc:e2 STALE
 ip -6 route show
::1 dev lo proto kernel metric 256 pref medium
2a04:5201:2:1:: dev wg1 metric 1024 pref medium
2a04:5201:2:1::/64 dev wg1 proto kernel metric 256 pref medium
2a04:5201:2::/48 dev ens3 proto kernel metric 256 pref medium
fe80::/64 dev ens3 proto kernel metric 256 pref medium
default via 2a04:5201:2::1 dev ens3 metric 1024 onlink pref medium
ifconfig
ens3: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
        inet 185.117.119.101  netmask 255.255.255.0  broadcast 185.117.119.255
        inet6 fe80::5054:ff:feb6:7c08  prefixlen 64  scopeid 0x20<link>
        inet6 2a04:5201:2::b8  prefixlen 48  scopeid 0x0<global>
        ether 52:54:00:b6:7c:08  txqueuelen 1000  (Ethernet)
        RX packets 10529191  bytes 673619214 (673.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 57973  bytes 44049807 (44.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg1: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet6 2a04:5201:2:1::  prefixlen 64  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 58  bytes 6612 (6.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 37  bytes 5484 (5.4 KB)
        TX errors 2  dropped 0 overruns 0  carrier 0  collisions 0
sysctl -p
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.ens3.accept_ra = 2
net.ipv6.conf.all.proxy_ndp = 1
kvv213 ()
Ответ на: комментарий от kvv213

inet6 2a04:5201:2:1:: prefixlen 64

адрес на интерфейсе ПО-ПРЕЖНЕМУ пересекается с адресом сети, это СРАЗУ фэйлит ВСЁ. УБИРАЙ этот адрес с интерфейса.

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte
 ifconfig
ens3: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
        inet 185.117.119.101  netmask 255.255.255.0  broadcast 185.117.119.255
        inet6 fe80::5054:ff:feb6:7c08  prefixlen 64  scopeid 0x20<link>
        inet6 2a04:5201:2::b8  prefixlen 48  scopeid 0x0<global>
        ether 52:54:00:b6:7c:08  txqueuelen 1000  (Ethernet)
        RX packets 10838641  bytes 693982753 (693.9 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60890  bytes 46045574 (46.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg1: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet6 2a04:5201:2:55::  prefixlen 64  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ping -6 -I wg1 ya.ru
ping: connect: Network is unreachable

Не понимаю, что значит пересекается. Поменял его на 2a04:5201:2:55::/64

kvv213 ()
Ответ на: комментарий от kvv213

Не понимаю, что значит пересекается.

Я был не прав, думал что в IPv6 отменили только broadcast-адреса, а оказывается отменили и резервирование для адреса сети.

Так в ipv4-сети нельзя использовать первый и последний адрес(для 192.168.0.0/24 это соответственно 192.168.0.0 и 192.168.0.255).

Так и тут, я думал что использовать 2a04:5201:2:1:: НЕЛЬЗЯ, можно только начиная с 2a04:5201:2:1::1. Но, как я уже сказал - был не прав.

По теме, если всё ты проделал точно по инструкции и ничего не помогло, тогда могу посоветовать только обратиться в саппорт твоего хостера. Возможно они и вовсе не выделяют тебе подсеть(если используют ip unnumbered, например)

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2 )
Ответ на: комментарий от Pinkbyte

По теме, если всё ты проделал точно по инструкции и ничего не помогло, тогда могу посоветовать только обратиться в саппорт твоего хостера. Возможно они и вовсе не выделяют тебе подсеть(если используют ip unnumbered, например)

Говорят, что выделяют сеть.

Попробую сделать следующий момент: сделать новый интерфейс, на него повесить адрес из сети, прописать все прокси и посмотреть будет ли работать, чтобы исключить влияние WireGuard.

kvv213 ()
Ответ на: комментарий от kvv213

Попробую сделать следующий момент: сделать новый интерфейс, на него повесить адрес из сети, прописать все прокси и посмотреть будет ли работать, чтобы исключить влияние WireGuard.

Пока ничего не получилось. Надо еще погуглить.

kvv213 ()
Ответ на: комментарий от kvv213

Получил по 6to4 /64-ю и /48-ю сети от HE на VPS. Все завелось. Правда пока маршруты руками забиваю со стороны сервера, но все работает.

PS. Пропихнул всю сеть /64-ю в туннель. Осталось только на той стороне научиться адреса выдавать как-то автоматически.

kvv213 ()
Последнее исправление: kvv213 (всего исправлений: 1 )
Ответ на: комментарий от pinachet

Это «сервер»

[Interface]
Address = 2001:xxxx:xxxx:xxxx::3/64
ListenPort = 55521
PrivateKey = +=
PostUp   = ip -6 route del 2001:xxxx:xxxx:xxxx::/64 dev he-ipv6
PostDown = ip -6 route add 2001:xxxx:xxxx:xxxx::/64 dev he-ipv6

[Peer]
PublicKey = k=
PresharedKey = B=
AllowedIPs = 2001:xxxx:xxxx:xxxx::/64

he-ipv6 это соответственно интерфейс от туннельного брокера.

Это «сервер во внутренней сети»:

[Interface]
PrivateKey = 0=
Address = 2001:xxxx:xxxx:xxxx::5/64
DNS = 1.1.1.1,8.8.8.8

[Peer]
PublicKey = j=
PresharedKey = B =
Endpoint = 185.xxx.xxx.xxx:55521
AllowedIPs = ::/1,8000::/1

Обмен пакетами идет через маршруты которые создаются WireGuard плюс отмена маршрута на he-ipv6. Хотя там можно было просто метрику для маршрута на he-ipv6 поменять, тогда будет еще проще. Файрволл не крутил, так как он и так:

ip6tables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

Кстати, ip6 форвардинг, ra и nd на серверной стороне отключил. Пока они мне не нужны, т.к. делаю статику. Потом буду мутить динамику, но скорее всего возьму DHCP6, так как хочу поделить эту /64 на более мелкие сегменты (хочется извращений немного).

В результате все пингуется в всех возможных вариантах.

Ну и 2001:xxxx:xxxx:xxxx::1 это маршрут по умолчанию, 2001:xxxx:xxxx:xxxx::2 это VPS.

kvv213 ()
Последнее исправление: kvv213 (всего исправлений: 1 )
Ответ на: комментарий от kvv213

Спасибо! Еще плиз два вопроса :

1 немного не понял это ?

Обмен пакетами идет через маршруты которые создаются WireGuard плюс отмена маршрута на he-ipv6. Хотя там можно было просто метрику для маршрута на he-ipv6 поменять, тогда будет еще проще.

2 Встречал ли какой то такой мануал, но для микротика ?

pinachet ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.