一段时间后,传出的 UDP 数据包无法从虚拟机到达主机

一段时间后,传出的 UDP 数据包无法从虚拟机到达主机

我正在尝试连接到 VirtualBox VM 内的 WireGuard VPN 服务器。通常我可以毫无问题地连接。但是当一段时间内没有任何连接时,我无法连接到 VPN。数据包可以到达,客户机可以响应,但响应数据包无法到达主机。

WG 服务器由 PiVPN 创建。51820 端口从 VirtualBox 转发到 UDP,VM 网络适配器是 NAT。SSH(TCP)中不存在同样的问题。

当前行为

客人:

user@host:~$ sudo tcpdump -n -i enp0s3 udp port 51820
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes
09:49:53.291627 IP 10.0.2.2.31083 > 10.0.2.15.51820: UDP, length 148
09:49:53.292606 IP 10.0.2.15.51820 > 10.0.2.2.31083: UDP, length 92
09:49:58.328855 IP 10.0.2.2.31083 > 10.0.2.15.51820: UDP, length 148
09:49:58.329802 IP 10.0.2.15.51820 > 10.0.2.2.31083: UDP, length 92
09:50:03.330680 IP 10.0.2.2.31083 > 10.0.2.15.51820: UDP, length 148
09:50:03.331727 IP 10.0.2.15.51820 > 10.0.2.2.31083: UDP, length 92

主机(出于隐私考虑,IP 地址已被删除):

user@host:~$ sudo tcpdump -n -i enp2s0 udp port 51820
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp2s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
09:49:53.299950 IP REDACTED.160.31083 > 192.168.1.2.51820: UDP, length 148
09:49:58.337289 IP REDACTED.160.31083 > 192.168.1.2.51820: UDP, length 148
09:50:03.339227 IP REDACTED.160.31083 > 192.168.1.2.51820: UDP, length 148

访客发送的数据包无法到达主机。无论 VPN 客户端是在 Linux 还是 Android 上,无论是来自 WAN 还是 LAN,问题都存在。

但是当我关闭并启动虚拟机(使用reboot或从 VirtualBox 重新启动均无法解决)时,问题会在一定时间后得到解决。

预期行为

全新开始后的示例:

客人:

user@host:~$ sudo tcpdump -n -i enp0s3 udp port 51820
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:19:34.839506 IP 10.0.2.15.51820 > 10.0.2.2.31630: UDP, length 148
10:19:36.907337 IP 10.0.2.15.51820 > 10.0.2.2.31630: UDP, length 96
10:19:39.959455 IP 10.0.2.15.51820 > 10.0.2.2.31630: UDP, length 148
10:19:40.737806 IP 10.0.2.15.51820 > 10.0.2.2.31630: UDP, length 96
10:19:42.153683 IP 10.0.2.2.31372 > 10.0.2.15.51820: UDP, length 148
10:19:42.154626 IP 10.0.2.15.51820 > 10.0.2.2.31372: UDP, length 92
10:19:42.188919 IP 10.0.2.2.31372 > 10.0.2.15.51820: UDP, length 96
10:19:42.233622 IP 10.0.2.15.51820 > 10.0.2.2.31372: UDP, length 160

主持人:

user@host:~$ sudo tcpdump -n -i enp2s0 udp port 51820
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp2s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10:19:35.688786 IP 192.168.1.2.51820 > REDACTED.160.31630: UDP, length 148
10:19:37.756607 IP 192.168.1.2.51820 > REDACTED.160.31630: UDP, length 96
10:19:40.808901 IP 192.168.1.2.51820 > REDACTED.160.31630: UDP, length 148
10:19:41.587208 IP 192.168.1.2.51820 > REDACTED.160.31630: UDP, length 96
10:19:43.002201 IP REDACTED.160.31372 > 192.168.1.2.51820: UDP, length 148
10:19:43.004069 IP 192.168.1.2.51820 > REDACTED.160.31372: UDP, length 92
10:19:43.037507 IP REDACTED.160.31372 > 192.168.1.2.51820: UDP, length 96
10:19:43.083059 IP 192.168.1.2.51820 > REDACTED.160.31372: UDP, length 160
  • VirtualBox 版本:7.0.8 r156879
  • 客户操作系统:Debian 11.7(未安装防火墙)
  • 主机操作系统:Linux Mint 21.1(UFW 开启/关闭不变)
  • 全部最新

我喜欢 NAT 端口转发的便利性。有没有办法永久解决这个问题,而无需使用桥接适配器或任何其他网络适配器?

答案1

按照说明再次设置并pivpnPERSISTENTKEEPALIVE=25创建/etc/pivpn/wireguard/setupVars.conf客户端配置这里似乎解决了这个问题。

编辑:问题并不相同,但我无法使用纯 WG 与 Fedora 客户机建立 WG 隧道,无需 PiVPN。不过,与 NAT + 端口转发不同,WG 可以正常使用“桥接适配器”。但它会从路由器获得一个单独的 192.168.1.x 地址并绕过主机的防火墙,这两者都是不可取的。然后我意识到,我为 WG 使用了 10.0.2.0/24 子网。你知道谁也使用相同的子网范围吗?VirtualBox 确实如此,至少在“NAT”适配器:

[root@fedora user]# ip address

...

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:92:cc:9f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3

我将 WG 的 IP 地址更改为 10.5.5.0/24(或任何其他私有 IP),然后,它就成功了。简单的。

相关内容