LINUX.ORG.RU
решено ФорумAdmin

Настройка WireGuard #3

 , , , ,


0

1

Любопытства ради решил попробовать завернуть все интерфейсы в Network Namespaces и пустить весь трафик по IPv6 через wg0. Взяв пример с сайта https://wireguard.io/netns/ , сделал unit для systemd.

[client]$ cat /etc/systemd/system/wireguard.service

[Unit]
Description=WireGuard Client

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/ip netns add vpn0
ExecStart=/bin/ip link set enp3s0 down
ExecStart=/bin/ip link set wlp2s0b1 down
ExecStart=/bin/ip link set enp3s0 netns vpn0
ExecStart=/bin/iw phy phy0 set netns name vpn0
ExecStart=/bin/ip -n vpn0 link add wg0 type wireguard
ExecStart=/bin/ip -n vpn0 link set wg0 netns 1
ExecStart=/bin/ip netns exec vpn0 wpa_supplicant -B -i wlp2s0b1 -c /etc/wpa_supplicant/wpa_supplicant-wlp2s0b1.conf
ExecStart=/bin/ip netns exec vpn0 dhcpcd wlp2s0b1
ExecStart=/bin/ip address add fc00::10/128 dev wg0
ExecStart=/bin/wg setconf wg0 /etc/wireguard/client.conf
ExecStart=/bin/ip link set wg0 up
ExecStart=/bin/ip -6 route add default dev wg0

ExecStop=/bin/ip -n vpn0 link set enp3s0 down
ExecStop=/bin/ip -n vpn0 link set wlp2s0b1 down
ExecStop=/bin/ip -n vpn0 link set enp3s0 netns 1
ExecStop=/bin/ip netns exec vpn0 iw phy phy0 set netns 1
ExecStop=/bin/killall wpa_supplicant dhcpcd
ExecStop=/bin/ip link set wg0 down
ExecStop=/bin/ip link del wg0
ExecStop=/bin/ip netns del vpn0

[Install]
WantedBy=multi-user.target

[client]$ cat /etc/wireguard/client.conf

[Interface]
PrivateKey=private_client_key
ListenPort=50510

[Peer]
PublicKey=public_server_key
EndPoint=[2a01:***136f::5]:50505
AllowedIPs=::/0
PersistentKeepalive=25

Юнит на сервере.

[server]$ cat /etc/systemd/system/wireguard.service

[Unit]
Description=WireGuard Server

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/ip link add dev wg0 type wireguard
ExecStart=/bin/ip address add fc00::5/128 dev wg0
ExecStart=/bin/wg setconf wg0 /etc/wireguard/server.conf
ExecStart=/bin/ip link set wg0 up

ExecStop=/bin/ip link set wg0 down
ExecStop=/bin/ip link del dev wg0

[Install]
WantedBy=multi-user.target

[server]$ cat /etc/wireguard/server.conf

[Interface]
PrivateKey=private_server_key
ListenPort=50505

[Peer]
PublicKey=public_client_key
AllowedIPs=::/128

После запуска сервисов handshake установлен, судя по выхлопу wg на сервере и клиенте.

[client]$ wg

interface: wg0
  public key: ***
  private key: (hidden)
  listening port: 50505

peer: ***
  endpoint: [2a01:***:136f::5]:50505
  allowed ips: ::/0
  latest handshake: 6 seconds ago
  bandwidth: 89 B received, 328 B sent
  persistent keepalive: every 25 seconds

[server]$ wg

interface: wg0
  public key: ***
  private key: (hidden)
  listening port: 50505

peer: ***
  endpoint: [2a02:***:2c88::dd1]:50510
  allowed ips: ::/128
  latest handshake: 4 second ago
  bandwidth: 145 B received, 89 B sent

Но ping с клиента не проходит ни на fc00::5, ни на ipv6.google.com. Из Network Namespaces (NN) пинг в интернет есть, с сервера ping на клиентский ip ( 2a02:***:2c88::dd1 ) проходит, сервер из NN тоже пингуется. Forwarding на сервере включен. Пробовал включить маскарадинг, но что с ним, что без него - не завелось. Куда копать - без понятия. Ниже прикладываю некоторые логи.

[client]$ ping -6 -c 3 fc00::5

PING fc00::05(fc00::05) 56 data bytes

--- fc00::05 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2007ms

[client] # Выхлоп tcpdump -i wg0 -t -vv

IP6 (flowlabel 0xbec67, hlim 64, next-header ICMPv6 (58) payload length: 64) localhost > fc00::5: [icmp6 sum ok] ICMP6, echo request, seq 1
IP6 (flowlabel 0xbec67, hlim 64, next-header ICMPv6 (58) payload length: 64) localhost > fc00::5: [icmp6 sum ok] ICMP6, echo request, seq 2
IP6 (flowlabel 0xbec67, hlim 64, next-header ICMPv6 (58) payload length: 64) localhost > fc00::5: [icmp6 sum ok] ICMP6, echo request, seq 3

[client] # Выхлоп ip netns exec vpn0 tshark -V -i wlp2s0b1 -f «src port 50510» http://pastebin.com/9NdkZY93

[server] # Выхлоп tshark -V -i ens3 -f «src port 50510» http://pastebin.com/3nedZmvt

Т.е. пакеты все-таки на сервер попадают, но дальше они походу просто уходят в никуда.

[server]$ ifstat -s -p http://pastebin.com/3wEXb1ST

Пробовал на сервере ловить пакеты через tshark/tcpdump на wg0, но там тишина полная. В общем не знаю уже, куда копать.


Никто ничего не подскажет?...

Sorcus ()

Отбой. Все внезапно заработало само по себе...

Sorcus ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.