(请先确认你的配置文件是正确的,比如我在手机上的wireguard能成功接收流量,但在windows上无法接收。控制变量法,首先你得确认配置文件是对的!!!)
(请先确认你的配置文件是正确的,比如我在手机上的wireguard能成功接收流量,但在windows上无法接收。控制变量法,首先你得确认配置文件是对的!!!)
(请先确认你的配置文件是正确的,比如我在手机上的wireguard能成功接收流量,但在windows上无法接收。控制变量法,首先你得确认配置文件是对的!!!)
Wireguard客户端在Windows的流量只有发送,没有接收,打开网页显示DNS解析错误,话不多说,直接上干货。
查看日志发现:
[TUN] [WG] Warning: the "Wi-Fi" interface has Forwarding/WeakHostSend enabled, which will cause routing loops
解决方法:
- 【管理员模式】运行PowerShell
- 输入
netsh interface ipv4 show interfaces
找到你连接网络的索引Idx,我使用无线网连接的,因此我的名称为WLAN,Idx为4
- 输入
netsh interface ipv4 show interface 4
(4换成你实际的Idx)
看到转发是开启的状态
- 输入
Set-NetIPInterface -ifindex 4 -Forwarding Disabled
(4换成你实际的Idx),关闭转发 - 再次输入
netsh interface ipv4 show interface 4
(4换成你实际的Idx),可以看到转发已经关闭
再次连接WireGuard,可以正常访问,接收与发送流量正常,问题解决~
但是重连之后又恢复成enable状态了,目前临时的解决方法是,重连后我们手动执行下写好的bat命令
<# :
@powershell "icm ([scriptblock]::Create((gc '%~f0' -Raw -Encoding UTF8)))"
exit
#>
Set-NetIPInterface -ifindex 4 -Forwarding Disabled
netsh interface ipv4 show interface 4
pause
# powershell script
注意,这个bat命令必须以管理员方式运行,但是每次都要右击选择管理员很麻烦,有什么方法直接双击就可以直接运行呢?当然有,我们右击这个bat,选择创建快捷方式,再右击快捷方式,选择属性->高级->用管理员身份运行
,当然,这个方法也是临时的。
问题反思:
- 当连接不上时,我首先看到的是网页DNS错误,于是下意识认为是DNS的问题,导致问题解决方向错误,应该首先查看日志,分析错误原因。
- 找到Warning日志后,在国内找不到解决方法,于是去Reddit搜寻,第一条就是解决方案,附链接:https://www.reddit.com/r/WireGuard/comments/t8cqyp/wireguard_client_not_working_on_windows_transfer/