Перейти к содержанию

Вопрос

Опубликовано

Добрый день!

Может кому-то пригодится выборочная маршрутизация через Wireguard по ipv6.

На версии 3.7.4 ipv6 адрес на интерфейсе nwg можно было задать командой:

interface Wireguard2 ipv6 address fd01:5ca1:ab1e:891f:c4fc:4a2e:e64d:503d

На версии 3.8.2 эта команда не работает. Поэтому был модифицирован скрипт /opt/etc/ndm/ifstatechanged.d/000-fix-Wireguard2.sh

#!/bin/sh

[ "$1" == "hook" ] || exit 0
[ "$change" == "link" ] || exit 0
[ "$id" == "Wireguard2" ] || exit 0

ip6t() {
	if ! ip6tables -C "$@" &>/dev/null; then
		ip6tables -A "$@"
	fi
}

case ${id}-${change}-${connected}-${link}-${up} in
	${id}-link-yes-up-up)
	cat << EOF >/tmp/fix-${id}.conf
[Interface]
PrivateKey = MMVM2wVNQqUyug1cBY=
[Peer]
PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = engage.cloudflareclient.com:2408
EOF

		ip -6 addr add fd01:5ca1:ab1e:891f:c4fc:4a2e:e64d:503d/128 dev nwg2
		wg setconf nwg2 /tmp/fix-${id}.conf
		ip6t POSTROUTING -t nat -o nwg2 -j MASQUERADE
	;;
esac

exit 0

Сам тест:

wg show nwg2
ifconfig nwg2

ip -6 rule add from all lookup 123 priority 1123
ip -6 route add table 123 2a03:1b20:1:f410::ff1 dev nwg2

ip -6 rule
ip -6 route show table 123

traceroute6 2a03:1b20:1:f410::ff1

Результат:

~ # uname -a
Linux ZyAvenger 4.9-ndm-5 #0 SMP Tue Jun 21 16:39:31 2022 mips GNU/Linux
~ # wg show nwg2
interface: nwg2
  public key: JL+TtFAHd2heTNrACYj8tlkn9f4rrZi7auvuQRBkajY=
  private key: (hidden)
  listening port: 49203

peer: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
  endpoint: [2606:4700:d0::a29f:c001]:2408
  allowed ips: 0.0.0.0/0, ::/0
  latest handshake: 1 minute, 33 seconds ago
  transfer: 15.29 KiB received, 6.19 KiB sent
~ # ifconfig nwg2
nwg2      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:172.16.0.2  P-t-P:172.16.0.2  Mask:255.255.255.255
          inet6 addr: fd01:5ca1:ab1e:891f:c4fc:4a2e:e64d:503d/128 Scope:Global
          UP POINTOPOINT RUNNING NOARP  MTU:1280  Metric:1
          RX packets:52643 errors:0 dropped:53 overruns:0 frame:0
          TX packets:63283 errors:3 dropped:1 overruns:0 carrier:0
          collisions:0 txqueuelen:50
          RX bytes:14968865 (14.2 MiB)  TX bytes:8037372 (7.6 MiB)

~ # ip -6 rule
0:      from all lookup local
233:    from all fwmark 0x2333 lookup 233
1123:   from all lookup 123
1778:   from all fwmark 0xd1001 lookup 1001
32766:  from all lookup main
~ # ip -6 route show table 123
2a03:1b20:1:f410::ff1 dev nwg2  metric 1024  pref medium
~ # traceroute6 2a03:1b20:1:f410::ff1
traceroute to 2a03:1b20:1:f410::ff1 (2a03:1b20:1:f410::ff1) from fd01:5ca1:ab1e:891f:c4fc:4a2e:e64d:503d, port 33434, from port 45415, 30 hops max, 60 bytes packets
 1  fd01:5ca1:ab1e::1 (fd01:5ca1:ab1e::1)  10.845 ms  10.961 ms  10.997 ms
 2  2400:cb00:87:1000::1 (2400:cb00:87:1000::1)  11.906 ms  17.869 ms  20.842 ms
 3  mow-b4-link.ip.twelve99.net (2001:2000:3080:539::1)  11.994 ms  11.797 ms  11.299 ms
 4  mow-b8-v6.ip.twelve99.net (2001:2034:0:220::1)  11.474 ms  11.974 ms  12.476 ms
 5  kbn-bb2-v6.ip.twelve99.net (2001:2034:1:78::1)  40.321 ms  41.409 ms  72.470 ms
^C22% completed...

 

Рекомендуемые сообщения

  • 0
Опубликовано (изменено)
В 09.11.2022 в 13:45, Le ecureuil сказал:

Все будет в версии 4.0.

interface ipv6 address уже появилась опять, и работает правильно + можно задавать allow-ips в ipv6-формате + роутинг через force-default позволяет сделать дефолтным.

Осталось доделать NAT66, но тут больше вопросов компоновки чем технических проблем.

Спасибо. @Le ecureuil На версии 3.8.4.5/3.9 можно задавать allow-ips в ipv6 формате? Смущают фразы "уже появилась опять" и "можно задавать"

Изменено пользователем avn
  • 0
Опубликовано
В 09.11.2022 в 13:45, Le ecureuil сказал:

Все будет в версии 4.0.

interface ipv6 address уже появилась опять, и работает правильно + можно задавать allow-ips в ipv6-формате + роутинг через force-default позволяет сделать дефолтным.

Осталось доделать NAT66, но тут больше вопросов компоновки чем технических проблем.

а это все будет доступно только в CLI или и в CLI и в WebGUI

  • 0
Опубликовано (изменено)

Для истории и тех, кто держит wg-server. Для того, что бы избавиться от ната, надо:

1.  Прописать sysctl

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

net.ipv6.conf.eth0.forwarding=1
net.ipv6.conf.eth0.proxy_ndp=1

2. Модифицировать скрипт запуска Wireguard, добавив в него строки с "proxy", где ipv6 - адреса из Вашего диапазона у поставщика wg

[Unit]
Before=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT
ExecStart=/usr/sbin/iptables -A FORWARD -i wg0 -j ACCEPT
ExecStart=/usr/sbin/iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
ExecStop=/usr/sbin/iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT
ExecStop=/usr/sbin/iptables -D FORWARD -i wg0 -j ACCEPT
ExecStop=/usr/sbin/iptables -D POSTROUTING -t nat -o eth0 -j MASQUERADE
ExecStart=/usr/sbin/ip6tables -A FORWARD -i wg0 -j ACCEPT
#ExecStart=/usr/sbin/ip6tables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
ExecStart=/usr/sbin/ip -6 neigh add proxy 2a00:bbbb:1000:1022::97:91 dev eth0 nud permanent
ExecStop=/usr/sbin/ip6tables -D FORWARD -i wg0 -j ACCEPT
#ExecStop=/usr/sbin/ip6tables -D POSTROUTING -t nat -o eth0 -j MASQUERADE
ExecStop=/usr/sbin/ip -6 neigh del proxy 2a00:bbbb:1000:1022::97:91 dev eth0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

3. Модифицировать серверный и клиентский конфиги wg, прописав туда адреса, указанные выше в п.2

[Interface]
PrivateKey = ....
Address = 172.16.97.91/32, 2a00:bbbb:1000:1022::97:91/128
DNS = 1.1.1.1, 8.8.8.8

[Peer]
PublicKey = ....
Endpoint = aa.bb.cc.dd:993
AllowedIPs = 0.0.0.0/0, 2000::/3
PersistentKeepalive = 25

4. Ну и поиск по proxy_ndp в google.

 

P/S/ В принципе вариантов использования proxy_ndp море. Можно к примеру раскидать из домашней сети - кинетика адреса для клиентов wg-кинетик-сервера аналогичным способом.

Изменено пользователем avn
  • 0
Опубликовано
10 минут назад, avn сказал:

Для истории и тех, кто держит wg-server. Для того, что бы избавиться от ната, надо:

1.  Прописать sysctl

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

net.ipv6.conf.eth0.forwarding=1
net.ipv6.conf.eth0.proxy_ndp=1

2. Модифицировать скрипт запуска Wireguard, добавив в него строки с "proxy", где ipv6 - адреса из Вашего диапазона у поставщика wg

[Unit]
Before=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT
ExecStart=/usr/sbin/iptables -A FORWARD -i wg0 -j ACCEPT
ExecStart=/usr/sbin/iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
ExecStop=/usr/sbin/iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT
ExecStop=/usr/sbin/iptables -D FORWARD -i wg0 -j ACCEPT
ExecStop=/usr/sbin/iptables -D POSTROUTING -t nat -o eth0 -j MASQUERADE
ExecStart=/usr/sbin/ip6tables -A FORWARD -i wg0 -j ACCEPT
#ExecStart=/usr/sbin/ip6tables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
ExecStart=/usr/sbin/ip -6 neigh add proxy 2a00:bbbb:1000:1022::97:91 dev eth0 nud permanent
ExecStop=/usr/sbin/ip6tables -D FORWARD -i wg0 -j ACCEPT
#ExecStop=/usr/sbin/ip6tables -D POSTROUTING -t nat -o eth0 -j MASQUERADE
ExecStop=/usr/sbin/ip -6 neigh del proxy 2a00:bbbb:1000:1022::97:91 dev eth0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

3. Модифицировать серверный и клиентский конфиги wg, прописав туда адреса, указанные выше в п.2

[Interface]
PrivateKey = ....
Address = 172.16.97.91/32, 2a00:bbbb:1000:1022::97:91/128
DNS = 1.1.1.1, 8.8.8.8

[Peer]
PublicKey = ....
Endpoint = aa.bb.cc.dd:993
AllowedIPs = 0.0.0.0/0, 2000::/3
PersistentKeepalive = 25

4. Ну и поиск по proxy_ndp в google.

 

P/S/ В принципе вариантов использования proxy_ndp море. Можно к примеру раскидать из домашней сети - кинетика адреса для клиентов wg-кинетик-сервера аналогичным способом.

@Le ecureuil Будет ли возможность штатно раздать ipv6-адреса клиентам сети кеенетик-а?

  • 0
Опубликовано
7 минут назад, avn сказал:

@Le ecureuil Будет ли возможность штатно раздать ipv6-адреса клиентам сети кеенетик-а?

Я запутался уже. Поясните, пожалуйста, а разве это всё  ( allow-ips в ipv6-формате и прочее) будет не в  keen os 3.10 ? 

  • 0
Опубликовано
2 минуты назад, krass сказал:

Я запутался уже. Поясните, пожалуйста, а разве это всё  ( allow-ips в ipv6-формате и прочее) будет не в  keen os 3.10 ? 

Я вообще рассчитываю на версии 3.8.4.5(6)/3.9, что бы задавать allow-ips в ipv6 формате через cli. Смущают фразы "уже появилась опять" и "можно задавать"

  • 0
Опубликовано

"Появилась опять" - это из-за того, что раньше можно было задавать на Wireguard ipv6 адреса в cli, но мы такое не тестировали и потому это было "случайной фичей". Потом в 3.08 и дальше мы активно занялись IPv6 внутри и все неподдерживаемые и непроверенные варианты были запрещены. Теперь в будущей 4.0 специально заново добавлена поддержка IPv6 и протестирована, что "возвращает" возможность задания адресов, но уже в официальном варианте.

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

  • 0
Опубликовано
25 минут назад, Le ecureuil сказал:

Теперь в будущей 4.0

В будущей keen os 4.0 ? А 3.х уйдет в небытие , так? :?:

  • 0
Опубликовано
В 17.11.2022 в 23:42, krass сказал:

В будущей keen os 4.0 ? А 3.х уйдет в небытие , так? :?:

Судя по тому, что уже тестируется 4.0 alfa 5 и в списке есть, например, интересующая меня Ultra II надежда есть!

  • 0
Опубликовано
В 29.06.2022 в 14:00, avn сказал:

Добрый день!

Может кому-то пригодится выборочная маршрутизация через Wireguard по ipv6.

На версии 3.7.4 ipv6 адрес на интерфейсе nwg можно было задать командой:

interface Wireguard2 ipv6 address fd01:5ca1:ab1e:891f:c4fc:4a2e:e64d:503d

На версии 3.8.2 эта команда не работает. Поэтому был модифицирован скрипт /opt/etc/ndm/ifstatechanged.d/000-fix-Wireguard2.sh

#!/bin/sh

[ "$1" == "hook" ] || exit 0
[ "$change" == "link" ] || exit 0
[ "$id" == "Wireguard2" ] || exit 0

ip6t() {
	if ! ip6tables -C "$@" &>/dev/null; then
		ip6tables -A "$@"
	fi
}

case ${id}-${change}-${connected}-${link}-${up} in
	${id}-link-yes-up-up)
	cat << EOF >/tmp/fix-${id}.conf
[Interface]
PrivateKey = MMVM2wVNQqUyug1cBY=
[Peer]
PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = engage.cloudflareclient.com:2408
EOF

		ip -6 addr add fd01:5ca1:ab1e:891f:c4fc:4a2e:e64d:503d/128 dev nwg2
		wg setconf nwg2 /tmp/fix-${id}.conf
		ip6t POSTROUTING -t nat -o nwg2 -j MASQUERADE
	;;
esac

exit 0

Сам тест:

wg show nwg2
ifconfig nwg2

ip -6 rule add from all lookup 123 priority 1123
ip -6 route add table 123 2a03:1b20:1:f410::ff1 dev nwg2

ip -6 rule
ip -6 route show table 123

traceroute6 2a03:1b20:1:f410::ff1

Результат:

~ # uname -a
Linux ZyAvenger 4.9-ndm-5 #0 SMP Tue Jun 21 16:39:31 2022 mips GNU/Linux
~ # wg show nwg2
interface: nwg2
  public key: JL+TtFAHd2heTNrACYj8tlkn9f4rrZi7auvuQRBkajY=
  private key: (hidden)
  listening port: 49203

peer: bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
  endpoint: [2606:4700:d0::a29f:c001]:2408
  allowed ips: 0.0.0.0/0, ::/0
  latest handshake: 1 minute, 33 seconds ago
  transfer: 15.29 KiB received, 6.19 KiB sent
~ # ifconfig nwg2
nwg2      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:172.16.0.2  P-t-P:172.16.0.2  Mask:255.255.255.255
          inet6 addr: fd01:5ca1:ab1e:891f:c4fc:4a2e:e64d:503d/128 Scope:Global
          UP POINTOPOINT RUNNING NOARP  MTU:1280  Metric:1
          RX packets:52643 errors:0 dropped:53 overruns:0 frame:0
          TX packets:63283 errors:3 dropped:1 overruns:0 carrier:0
          collisions:0 txqueuelen:50
          RX bytes:14968865 (14.2 MiB)  TX bytes:8037372 (7.6 MiB)

~ # ip -6 rule
0:      from all lookup local
233:    from all fwmark 0x2333 lookup 233
1123:   from all lookup 123
1778:   from all fwmark 0xd1001 lookup 1001
32766:  from all lookup main
~ # ip -6 route show table 123
2a03:1b20:1:f410::ff1 dev nwg2  metric 1024  pref medium
~ # traceroute6 2a03:1b20:1:f410::ff1
traceroute to 2a03:1b20:1:f410::ff1 (2a03:1b20:1:f410::ff1) from fd01:5ca1:ab1e:891f:c4fc:4a2e:e64d:503d, port 33434, from port 45415, 30 hops max, 60 bytes packets
 1  fd01:5ca1:ab1e::1 (fd01:5ca1:ab1e::1)  10.845 ms  10.961 ms  10.997 ms
 2  2400:cb00:87:1000::1 (2400:cb00:87:1000::1)  11.906 ms  17.869 ms  20.842 ms
 3  mow-b4-link.ip.twelve99.net (2001:2000:3080:539::1)  11.994 ms  11.797 ms  11.299 ms
 4  mow-b8-v6.ip.twelve99.net (2001:2034:0:220::1)  11.474 ms  11.974 ms  12.476 ms
 5  kbn-bb2-v6.ip.twelve99.net (2001:2034:1:78::1)  40.321 ms  41.409 ms  72.470 ms
^C22% completed...

 

Здравствуйте.

Если подключение WG уже имеется в системе и нужно только повесить для него адрес, то можно параметры подключения из скрипта убрать?

  • 0
Опубликовано
В 29.06.2022 в 12:00, avn сказал:

Может кому-то пригодится ... через Wireguard по ipv6.

...

Спасибо, мил человек!!! Немного подправил и вуляля!

Может кому то тоже пригодится:

#!/bin/sh

WGIPV4="172.16.0.2"
WGFACE=$(ip addr|grep "inet $WGIPV4"|sed -En 's/.* nwg([[:digit:]]+)/\1/p')

[ "$1" == "hook" ] || exit 0
[ "$change" == "link" ] || exit 0
[ "$id" == "Wireguard$WGFACE" ] || exit 0

ip6t() {
    if ! ip6tables -C "$@" &>/dev/null; then
        ip6tables -A "$@"
    fi
}

case ${id}-${change}-${connected}-${link}-${up} in
    ${id}-link-yes-up-up)
    TABLE=$(ip -4 rule|grep "from $WGIPV4"|sed -En 's/.*lookup ([[:digit:]]+).*/\1/p')
    if [ "$TABLE" != "" ]; then
        /opt/bin/wg set nwg$WGFACE peer bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo= allowed-ips 0.0.0.0/0,::/0
        ip -6 addr add 2606:4700:####:####:####:####:####:####/128 dev nwg$WGFACE
        ip6t POSTROUTING -t nat -o nwg$WGFACE -j MASQUERADE
        ip -6 rule del pref 10$TABLE
        ip -6 rule add from 2606:4700:####:####:####:####:####:#### lookup $TABLE pref 10$TABLE
        ip -6 route add 2606:4700:####:####:####:####:####:####/128 dev nwg$WGFACE table $TABLE
        ip -6 route add default dev nwg$WGFACE table $TABLE
    fi
    ;;
esac

exit 0

  • 0
Опубликовано (изменено)

У меня ничего не появилось Wireguard не работает через IPv6, идёт утечка DNS также. Через официальные клиенты Wireguard  работает IPv6 и утечки DNS нет, независимо на какую OS ставишь клиент. Поэтому IPv6 пришлось отключить, с утечкой DNS смириться. Там где эти вопросы критичны, использую официальные клиенты wireguard. По другому никак...

Изменено пользователем MiDvaler
  • 0
Опубликовано (изменено)
8 минут назад, VladMgn сказал:

Интересно есть какие то сроки по реализации поддержки IPv6 в Wireguard ?

"IPv6 in Wireguard is not supported and not planned for the next major release yet."

 

 

Можно проголосовать:

 

И вот здесь:

 

Изменено пользователем krass
  • 0
Опубликовано (изменено)
1 час назад, Denis P сказал:

еще с 4.0 работает, вы всё проспали)

А точно ipv6 WG работает полностью
там есть такая запись : "so endpoint is not allowed to be v6 address stil"

И обычно ( при включении требуемого функционала) тогда  перемещают в тему реализованного.

Изменено пользователем krass

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.