4 ms·
Quick follow-up. If the premise "the peer public key is sort of the peer's lladdr" is correct, here's an idea off my chest. (Beware that I am blissfully unawa
by phragma 9y ago
Quick follow-up.
If the premise "the peer public key is sort of the peer's lladdr" is correct, here's an idea off my chest. (Beware that I am blissfully unaware of wireguard internals, just brainstorming.)
If the peer pubkey identifies the port on the other end, just like a MAC address would identify the NIC on the other end of a switched network;
Then would it be possible to give the kernel the peer pubkey as the lladdr when it asks for a next-hop's lladdr?
If so, all the IP routing stuff could be moved out of wireguard and taken care of by the kernel's IP router.
Without the internal IP routing function, L2 traffic could possibly be forwarded.
If the lladdr field is not large enough, maybe allow the user to give to wg a mapping between fx. a 6-byte locally assigned peer lladdr, and the 32-byte peer pubkey. Or ask Linus to extend the field. ;-)
Could be hidden behind an "l2-mode" flag or something.
In my opinion, being able to forward L2 would help a lot towards building a GUI in a sensible way, but yeah, just an idea.
I'll find an IRC client soon, promise.
- phragma 9y agoOr maybe a sub-interface per peer: # ip link add dev wg0 type wireguard # wg set wg0 listen 0.0.0.0:51820 listen ::/0:51820 private-key /path/to/private-key # ip link add dev wg0-peer1 type wireguard-peer # wg set wg0-peer1 local-endpoint wg0 remote-endpoint 209.202.254.14:8172 public-key ABCDEF Then routing via kernel: # ip route add 192.0.2.0/24 dev wg0-peer1 And/or layer something else on top: # ip link add link wg0-peer1 name peer1-vlan100 type vlan id 100 Perhaps enslave that to a VRF: # ip link set peer1-vlan100 vrf blue The peering interfaces could also be assigned an MTU that matches the path to each peer, if known: # ip link set wg0-peer1 mtu 1328