我的配置是电脑到 VPS,通过 WLAN 连接 WiFi(192.168.1.x
)
服务器上的 WireGuard 配置:
[Interface]
Address = 10.0.0.1/24
PrivateKey = key=+
ListenPort = 51120
#just iptables open ports..
PostUp = /etc/wireguard/up.sh
PostDown = /etc/wireguard/down.sh
[Peer]
PublicKey = key=+
AllowedIPs = 10.0.0.2/24
在客户端上:
[Interface]
Address = 10.0.0.2/24
PrivateKey = key=+
[Peer]
PublicKey = key=+
AllowedIPs = 0.0.0.0/0
Endpoint = 127.0.0.1:5666
PersistentKeepalive = 25
情况1:仅在 Wireguard 之间 - 工作:
(端点 = vps-ip:51120 <--> Wireguard 无需 udp2raw 也能很好地工作)
案例 2:仅在 udp2raw 之间 - 已连接:
在服务器上
udp2raw -s -0.0.0.0:5111 -r 127.0.0.1:51120 -k "passpass" --raw-mode faketcp -a
在客户端:
udp2raw -c -l127.0.0.1:5666 -r vps-ip:5111 -k "passpass" --raw-mode faketcp -a
案例 3:所有与端点= 127.0.0.1:5666我失去连接
端点 = 127.0.0.1:5666 <--> 不起作用
WireGuard 不起作用udp2raw
,没有握手。为什么会发生这种情况,为什么不起作用?
最后测试:经过测试Udp2raw、Udptunnel、Shadowsock问题依旧。将内核改为 5 后,我的结论是客户端 (WireGuard-隧道) 之间存在问题。
答案1
1.AllowedIPs = 0.0.0.0/0
意味着一切都要经过 WireGuard
除了本地连接或主路由表中有明确路由的任何其他内容。因此,您需要在客户端上添加一条明确路由,告诉它如何到达服务器。
ip route
在客户端上运行以列出其主路由表:
$ ip route
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.11 metric 100
找到默认路由,并记下其网关和接口(在上面的例子中,它们是192.168.1.1
和)。然后使用相同的网关和接口eth0
向服务器的 IP 地址添加新路由(例如,假设是):203.0.113.2
$ sudo ip route add 203.0.113.2 via 192.168.1.1 dev eth0
2. udp2raw 的 MTU 默认值太高
因此,您需要降低 WireGuard 接口上的 MTU;这1342
是可能起作用的最大 MTU。将以下行添加到[Interface]
WireGuard 配置部分(在服务器和客户端上):
MTU = 1342