cloudflare / cloudflare/boringtun
IP Roaming not working when using boringtun as a client
- Dominant language
- Rust
- Stars
- 7.2k
- Forks
- 532
- PR merge metrics
- No merged PRs in 30d
Description
Hi!
I think IP roaming is not working when using boringtun as a client.
My setup:
Client: 2 public IP
Server: 1 public IP
Working: wireguard-go:
When `client` brings down its primary interface, IP packets (with new source) arrive at `server` and the `wg` interface on `server` sees the data. The tunnel works.
Not working: boringtun:
After bringing down one of the interfaces on the client, the IP packets still arrive at `server` (with new source) but they never reach the `wg` interface
tcpdumps:
wireguard-go
```
21:17:10.530997 IP (tos 0x88, ttl 64, id 35409, offset 0, flags [none], proto UDP (17), length 176)
SERVER_IP.5111 > CLIENT_IP_1.44533: UDP, length 148
21:17:15.651151 IP (tos 0x88, ttl 64, id 36627, offset 0, flags [none], proto UDP (17), length 176)
SERVER_IP.5111 > CLIENT_IP_1.44533: UDP, length 148
21:17:21.027013 IP (tos 0x88, ttl 64, id 36726, offset 0, flags [none], proto UDP (17), length 176)
SERVER_IP.5111 > CLIENT_IP_1.44533: UDP, length 148
```
```
21:24:09.510597 IP (tos 0x0, ttl 46, id 30474, offset 0, flags [DF], proto UDP (17), length 176)
CLIENT_IP_2.18773 > SERVER_IP.5111: UDP, length 148
21:24:09.511584 IP (tos 0x88, ttl 64, id 4658, offset 0, flags [none], proto UDP (17), length 120)
SERVER_IP.5111 > CLIENT_IP_2.18773: UDP, length 92
21:24:09.561596 IP (tos 0x0, ttl 47, id 30547, offset 0, flags [DF], proto UDP (17), length 60)
CLIENT_IP_2.18773 > SERVER_IP.5111: UDP, length 32
```
(packets still arrive at wg0)
```
21:23:26.932299 IP 10.88.88.6 > 10.88.88.10: ICMP echo request, id 627, seq 3, length 64
21:23:26.932353 IP 10.88.88.10 > 10.88.88.6: ICMP echo reply, id 627, seq 3, length 64
21:23:27.917045 IP 10.88.88.6 > 10.88.88.10: ICMP echo request, id 627, seq 4, length 64
21:23:27.917082 IP 10.88.88.10 > 10.88.88.6: ICMP echo reply, id 627, seq 4, length 64
21:23:28.919735 IP 10.88.88.6 > 10.88.88.10: ICMP echo request, id 627, seq 5, length 64
21:23:28.919804 IP 10.88.88.10 > 10.88.88.6: ICMP echo reply, id 627, seq 5, length 64
```
boringtun:
boring
```
21:25:10.332403 IP (tos 0x0, ttl 53, id 62924, offset 0, flags [DF], proto UDP (17), length 176)
CLIENT_IP_1.49039 > SERVER_IP.5111: UDP, length 148
21:25:10.333818 IP (tos 0x88, ttl 64, id 5045, offset 0, flags [none], proto UDP (17), length 120)
SERVER_IP.5111 > CLIENT_IP_1.49039: UDP, length 92
21:25:10.354439 IP (tos 0x0, ttl 53, id 62928, offset 0, flags [DF], proto UDP (17), length 60)
CLIENT_IP_1.49039 > SERVER_IP.5111: UDP, length 32
21:25:10.355012 IP (tos 0x0, ttl 53, id 62929, offset 0, flags [DF], proto UDP (17), length 144)
CLIENT_IP_1.49039 > SERVER_IP.5111: UDP, length 116
```
(packets still arrive at wg0)
```
21:25:30.745984 IP (tos 0x0, ttl 47, id 38302, offset 0, flags [DF], proto UDP (17), length 176)
CLIENT_IP_2.17551 > SERVER_IP.5111: UDP, length 148
21:25:30.748415 IP (tos 0x88, ttl 64, id 10733, offset 0, flags [none], proto UDP (17), length 120)
SERVER_IP.5111 > CLIENT_IP_2.17551: UDP, length 92
21:25:30.794701 IP (tos 0x0, ttl 48, id 38312, offset 0, flags [DF], proto UDP (17), length 60)
CLIENT_IP_2.17551 > SERVER_IP.5111: UDP, length 32
```
(packets no longer arrive at wg0)
Contributor guide
Assessment
This issue has not been assessed yet.