The setup is rather simple, I have a CHR instance running in a remote dc, and I need to get wireguard working between the CHR and a remote peer.
There's a vrf called dc that has access to the public internet. It's the only uplink, no internet connectivity in the main routing table.
I've tried adding routing/rules aswell as using mangle rules to steer the traffic without success. I see packets getting routed to the internet correctly, but the return traffic never makes it back to the wireguard interface, and I've no idea why.
I assume, that the wireguard data plane, which handels the underlay network connection including handshakes always use the main routing table. Unfortunately, this isn't documented in any way.
my config:
Code: Select all
[sysop@CHR] /ip/vrf> /ip/route pr where routing-table=dc
Flags: D - DYNAMIC; A - ACTIVE; c - CONNECT, s - STATIC
Columns: DST-ADDRESS, GATEWAY, DISTANCE
# DST-ADDRESS GATEWAY DISTANCE
0 As 0.0.0.0/0 195.XXX.XXX.193@dc 1
DAc 195.XXX.XXX.192/26 MGMT@dc 0
Code: Select all
[sysop@CHR] /ip/vrf> /routing/rule/pr where table=dc
Flags: X - disabled, I - inactive
4 dst-address=87.XXX.XXX.191/32 action=lookup-only-in-table table=dc
Code: Select all
[sysop@CHR] /ip/vrf> /tool sniffer quick interface=MGMT port=51820
Columns: INTERFACE, TIME, NUM, DIR, SRC-MAC, DST-MAC, SRC-ADDRESS, DST-ADDRESS, PROTOCOL, SIZE, CPU
INTERFACE TIME NUM DIR SRC-MAC DST-MAC SRC-ADDRESS DST-ADDRESS PROTOCOL SIZE CPU
MGMT 3.385 1 -> 00:50:56:00:91:5E 84:C1:C1:78:98:CE 195.XXX.XXX.206:51800 87.XXX.XXX.191:51820 ip:udp 190 0
MGMT 3.402 2 <- 84:C1:C1:78:98:CE 00:50:56:00:91:5E 87.XXX.XXX.191:51820 195.XXX.XXX.206:51800 ip:udp 134 0
Code: Select all
[sysop@CHR] /interface/wireguard/peers> pr proplist=name,last-handshake,rx,tx
Columns: NAME, RX, TX
4 peer6 0 231.7KiB