Ik ben aan het proberen om mijn werkende WireGuard VPN configuratie te migreren van een fysieke RPI4 naar een Proxmox PVE host in een LXC container. In't kort wat ik gedaan heb:
1) Extra poort geforward (51821) naar de container om naast de bestaande config de nieuwe config te kunnen testen.
2) debian template container gestart
3) apt update && apt upgrade -y && apt install wireguard tcpdump qrencode
4) rsync rpi4:/etc/wireguard /etc/wireguard
5) poort aangepast naar 51821 op server en peer config files
6) onderste 2 lijnen toegevoegd aan de configuratiefile (/etc/pve/lxc/105.conf) van de container op de PVE host:
7) container herstart.
8] wg show wg0 en de peer (android smartphone) zeggen een handshake te hebben uitgewisseld en ik zie traffiek lopen. Dat zeg mij toch dat er al niets mis kan zijn met de key configuratie. Als je daar iets mist, heb je geen handshake, nul noppes niets.
Wat me wel opviel is de discrepantie tussen Tx en Rx. Normaal is dat zonder surfen (alleen handshake-verkeer) min of meer in evenwicht. Ik zie tientallen kB Tx en maar enkele honderden bytes Rx. Dat wordt ook bevestigd door een tcpdump te doen op de wireguard server.
Ik heb al eens geprobeerd om de firewall van de ProxMox server uit te schakelen (pve-firewall stop) maar dat maakte geen verschil uit.
Ik vermoed dat de config nu (onbedoeld) verkeer toelaat tussen het IP adres van de peer en de server. Dat wordt me ook bevestigd door een ping te doen. Ik krijg ICMP replies van het IP van de WireGuard server interface, maar bijv. niet van mijn router (die ik dan weer wel kan pingen vanop de console op de wireguard server, ook 8.8.8.8).
Dus ik vermoed dat er iets mis is met routering. Routering is altijd mijn zwak punt geweest, dus ik zie het niet wat er mis is. Ook vermoed ik dat er in mijn /etc/wireguard/wg0.conf file routering (postroute/preroute) lijnen mogelijk zouden kunnen missen. Maar ik heb die wel gersynced van mijn werkende WireGuard server op de RPI. Dus waarom werkt het daar wel en in de LXC container dan niet?
1) Extra poort geforward (51821) naar de container om naast de bestaande config de nieuwe config te kunnen testen.
2) debian template container gestart
3) apt update && apt upgrade -y && apt install wireguard tcpdump qrencode
4) rsync rpi4:/etc/wireguard /etc/wireguard
5) poort aangepast naar 51821 op server en peer config files
6) onderste 2 lijnen toegevoegd aan de configuratiefile (/etc/pve/lxc/105.conf) van de container op de PVE host:
code:
1
2
3
4
5
6
7
8
9
| hostname: fqdn.example.org memory: 512 net0: name=eth0,bridge=vmbr0,gw=IP-GATEWAY,hwaddr=11:22:33:44:55:66,ip=IP-PEER/24,type=veth onboot: 1 ostype: debian rootfs: local-lvm:vm-105-disk-0,size=4G swap: 512 lxc.cgroup.devices.allow: c 10:200 rwm lxc.mount.entry: /dev/net dev/net none bind,create=dir |
7) container herstart.
8] wg show wg0 en de peer (android smartphone) zeggen een handshake te hebben uitgewisseld en ik zie traffiek lopen. Dat zeg mij toch dat er al niets mis kan zijn met de key configuratie. Als je daar iets mist, heb je geen handshake, nul noppes niets.
Wat me wel opviel is de discrepantie tussen Tx en Rx. Normaal is dat zonder surfen (alleen handshake-verkeer) min of meer in evenwicht. Ik zie tientallen kB Tx en maar enkele honderden bytes Rx. Dat wordt ook bevestigd door een tcpdump te doen op de wireguard server.
Ik heb al eens geprobeerd om de firewall van de ProxMox server uit te schakelen (pve-firewall stop) maar dat maakte geen verschil uit.
Ik vermoed dat de config nu (onbedoeld) verkeer toelaat tussen het IP adres van de peer en de server. Dat wordt me ook bevestigd door een ping te doen. Ik krijg ICMP replies van het IP van de WireGuard server interface, maar bijv. niet van mijn router (die ik dan weer wel kan pingen vanop de console op de wireguard server, ook 8.8.8.8).
Dus ik vermoed dat er iets mis is met routering. Routering is altijd mijn zwak punt geweest, dus ik zie het niet wat er mis is. Ook vermoed ik dat er in mijn /etc/wireguard/wg0.conf file routering (postroute/preroute) lijnen mogelijk zouden kunnen missen. Maar ik heb die wel gersynced van mijn werkende WireGuard server op de RPI. Dus waarom werkt het daar wel en in de LXC container dan niet?
code:
1
2
3
4
5
| root@wireguard:~# ip r default via [IP-GATEWAY] dev eth0 onlink [MIJNLANSUBNET]/24 dev eth0 proto kernel scope link src [IP-PEER] [WIREGUARD-SUBNET]/24 dev wg0 proto kernel scope link src [IP-WIREGUARD-SERVER] root@wireguard:~# |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| root@wireguard:~# tcpdump -nli any port 51821 tcpdump: data link type LINUX_SLL2 tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes 11:35:40.599567 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 148 11:35:40.599948 eth0 Out IP [IP-SERVER].51821 > [IP-PEER].21805: UDP, length 92 11:35:40.678199 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 96 11:35:40.678308 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 96 11:35:41.499786 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 96 11:35:41.551730 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 96 11:35:43.544775 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 96 11:35:43.575748 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 96 11:35:47.644954 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 96 11:35:47.659427 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 96 11:35:50.893761 eth0 Out IP [IP-SERVER].51821 > [IP-PEER].21805: UDP, length 32 11:36:08.399493 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 112 11:36:13.420689 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 112 11:36:13.830532 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 112 11:36:18.541703 eth0 Out IP [IP-SERVER].51821 > [IP-PEER].21805: UDP, length 32 11:36:18.834705 eth0 In IP [IP-PEER].21805 > [IP-SERVER].51821: UDP, length 112 |
code:
1
2
3
4
5
6
7
8
9
10
11
| root@wireguard:~# cat /etc/wireguard/wg0.conf [Interface] PrivateKey = REDACTED Address = [IP-SERVER]/24 MTU = 1420 ListenPort = 51821 [Peer] PublicKey = REDACTED PresharedKey = REDACTED AllowedIPs = [IP-PEER]/32 |