Hi Pim, IIRC you should specify the endpoint on vpp1. At least it was true about a year ago. I even prepared a patch to enable this dynamic endpoint updating, but I don't remember what went wrong (there should be a reason why I didn't send it upstream).
Could you give it a try by specifying the endpoint on vpp1 while I'm trying to find that patch? On Mon, 10 Jan 2022 at 13:01, Pim van Pelt <p...@ipng.nl> wrote: > Hoi folks, > > On a reasonably recent VPP, I'm trying to create a Wireguard tunnel, it's > not working for me and I have a few questions (and found a few small bugs > along the way) - I'm hoping you can help me further :) > This is on two instances of VPP running on a hypervisor (KVM so interfaces > are virtio) and the version is *vpp v22.02-rc0~347-gb28df767d built by > pim on hippo at 2021-11-30T15:22:48* > > After bringing up basic connectivity, machine vpp1 has a > loopback 192.168.10.0 and vpp2 has a loopback 192.168.10.3 -- they can > reach each other fine, and there is no additional configuration (like ACLs > and such) -- > > vpp1# ping 192.168.10.3 > > 116 bytes from 192.168.10.3: icmp_seq=1 ttl=62 time=5.7011 ms > > 116 bytes from 192.168.10.3: icmp_seq=2 ttl=62 time=4.4814 ms > > 116 bytes from 192.168.10.3: icmp_seq=3 ttl=62 time=4.4962 ms > > 116 bytes from 192.168.10.3: icmp_seq=4 ttl=62 time=23.2758 ms > > 116 bytes from 192.168.10.3: icmp_seq=5 ttl=62 time=5.6050 ms > > > Statistics: 5 sent, 5 received, 0% packet loss > > > vpp1# wireguard create listen-port 50869 src 192.168.10.0 generate-key > > vpp1# set int state wg0 up > > vpp1# set int mtu packet 1420 wg0 > > vpp1# set interface ip address wg0 10.0.123.1/24 > > vpp1# set interface ip address wg0 2001:db8::1/64 > > > vpp1# show wireguard interface > > [0] wg0 src:192.168.10.0 port:50869 > private-key:CJ5whwpgaWQRFGfU6PzJXYs06ix8IOfrE63iKDSl9lU= > 089e70870a606964111467d4e8fcc95d8b34ea2c7c20e7eb13ade22834a5f655 > public-key:x3ULwpplNvNRq5vl0ejj9ixlA5vEMLjip5M89Jvv3F0= > c7750bc29a6536f351ab9be5d1e8e3f62c65039bc430b8e2a7933cf49befdc5d mac-key: > ce323661f94c40e14e6efcfd5ca4827e5d4ea53cdc3cd4c3b0413462de99b539 > > > vpp1# wireguard peer add wg0 public-key > qZz6XPwtrrEJw2rnzFHXYCm5KGm7+Cc9clpoP+B6kQc= allowed-ip 10.0.123.2/32 > > vpp1# show wireguard peer > > [0] endpoint:[192.168.10.0:50869->202c:8103:ab7f:0:ff00:::0] wg0 > keep-alive:0 flags: 0, api-clients count: 0 > > adj: > > key:qZz6XPwtrrEJw2rnzFHXYCm5KGm7+Cc9clpoP+B6kQc= > a99cfa5cfc2daeb109c36ae7cc51d76029b92869bbf8273d725a683fe07a9107 > > allowed-ips: 10.0.123.2/32 > > I noticed right off the bat that the endpoint seems > weird: 192.168.10.0:50869->202c:8103:ab7f:0:ff00:::0 is off considering > nothing has been configured on machine vpp2 yet. That sounds like a > formatting bug to me, so I continued with the other machine: > > vpp2# wireguard create listen-port 50869 src 192.168.10.3 generate-key > > vpp2# set int state wg0 up > > vpp2# set int mtu packet 1420 wg0 > > vpp2# set interface ip address wg0 10.0.123.2/24 > > vpp2# set interface ip address wg0 2001:db8::2/64 > > > vpp2# wireguard peer add wg0 public-key > x3ULwpplNvNRq5vl0ejj9ixlA5vEMLjip5M89Jvv3F0= allowed-ip 10.0.123.0/24 > port 50869 endpoint 192.168.10.0 > > vpp2# show wireguard peer > > [0] endpoint:[192.168.10.3:50869->192.168.10.0:50869] wg0 keep-alive:0 > flags: 0, api-clients count: 0 > > adj: > > key:x3ULwpplNvNRq5vl0ejj9ixlA5vEMLjip5M89Jvv3F0= > c7750bc29a6536f351ab9be5d1e8e3f62c65039bc430b8e2a7933cf49befdc5d > > allowed-ips: 10.0.123.0/24 > > Observations: > * On vpp2, the relationship seems correct to me 192.168.10.3:50869-> > 192.168.10.0:50869 but on vpp1, the relationship is > still 192.168.10.0:50869->202c:8103:ab7f:0:ff00:::0 > * If I don't specify an "allowed-ip" argument, VPP crashes. It seems we > can catch that and return an error instead. > * The usage of 'wireguard peer add' claims the argument is 'dst-port', but > it's "port" instead. There's also a formatting error there (between > <pub_key_other> and endpoint, missing space: > > wireguard peer add <wg_int> public-key <pub_key_other>endpoint <ip4_dst> > allowed-ip <prefix>dst-port [port_dst] persistent-keepalive > [keepalive_interval] > > The tunnel is not functional, If I look at the connection between vpp1 and > vpp2, I do see that vpp2 is sending handshake packets: > > pim@hvn0:/srv/kvm$ sudo tcpdump -evni vpp1-vpp2 udp and port 50869 > > tcpdump: listening on vpp1-vpp2, link-type EN10MB (Ethernet), snapshot > length 262144 bytes > > 12:51:28.929809 52:54:00:02:10:01 > 52:54:00:01:10:02, ethertype IPv4 > (0x0800), length 190: (tos 0x0, ttl 62, id 0, offset 0, flags [none], proto > UDP (17), length 176) > > 192.168.10.3.50869 > 192.168.10.0.50869: UDP, length 148 > > 12:51:33.945859 52:54:00:02:10:01 > 52:54:00:01:10:02, ethertype IPv4 > (0x0800), length 190: (tos 0x0, ttl 62, id 0, offset 0, flags [none], proto > UDP (17), length 176) > > 192.168.10.3.50869 > 192.168.10.0.50869: UDP, length 148 > > 12:51:39.216163 52:54:00:02:10:01 > 52:54:00:01:10:02, ethertype IPv4 > (0x0800), length 190: (tos 0x0, ttl 62, id 0, offset 0, flags [none], proto > UDP (17), length 176) > > 192.168.10.3.50869 > 192.168.10.0.50869: UDP, length 148 > > 12:51:44.357225 52:54:00:02:10:01 > 52:54:00:01:10:02, ethertype IPv4 > (0x0800), length 190: (tos 0x0, ttl 62, id 0, offset 0, flags [none], proto > UDP (17), length 176) > > 192.168.10.3.50869 > 192.168.10.0.50869: UDP, length 148 > > But vpp1 is not receiving them. Show errors and show logging gives me no > reasonable leads. Can somebody help me figure this out ? > > groet, > Pim > -- > Pim van Pelt <p...@ipng.nl> > PBVP1-RIPE - http://www.ipng.nl/ > > > > -- Best regards Stanislav Zaikin
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#20698): https://lists.fd.io/g/vpp-dev/message/20698 Mute This Topic: https://lists.fd.io/mt/88321357/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-