cloudflare / cloudflare/boringtun

IP Roaming not working when using boringtun as a client

Open
#187 2 comments 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.