You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu系统下使用wg-quick运行WireGuard异常问题求助

Ubuntu系统下使用wg-quick运行WireGuard异常问题求助

兄弟,我太懂你这种闹心的感觉了——Mac上WireGuard GUI用得顺风顺水,到VPS上一跑wg-quick直接断SSH,连重连都不行,还找不到有用日志排查。别慌,咱们一步步来解决这个问题:

先解决“断连后必须重启VPS”的紧急问题

下次再出现SSH冻结的情况,不用急着重启机器,直接通过服务商提供的VNC/网页控制台登录到VPS,执行下面的命令就能快速恢复网络:

wg-quick down wg0

这样就能恢复SSH连接,还能留在系统里排查问题,省得反复重启折腾。

核心问题:流量路由策略导致SSH断连

从你给出的wg-quick执行输出看,最后一步添加了0.0.0.0/0的默认路由到WireGuard接口,再加上fwmark 51820的规则,会把所有流量(包括SSH的回程流量)都导向WireGuard,直接切断了现有SSH连接。哪怕你说AllowedIPs不影响SSH,路由策略的优先级可能还是把SSH流量截走了。

给你两个针对性的修复方案:

方案1:在WireGuard配置里添加路由规则,保留SSH流量

打开你的wg0.conf,在[Interface]区块里添加一条PostUp规则,让VPS公网IP的流量优先走主路由表(也就是原来的网络):

[Interface]
PrivateKey = 你的私钥
Address = <MY_IP>/32, fd00::9:7e38/128
PostUp = ip rule add from <你的VPS公网IP> table main priority 100
# 其他原有配置...

替换<你的VPS公网IP>为你实际用来SSH连接的VPS公网地址。这条规则的作用是:所有从VPS公网IP发出的流量(包括SSH的回程包)都会优先走原来的网络,不会被WireGuard的路由拦截。

方案2:调整AllowedIPs范围(如果不需要全局代理)

如果你不需要让VPS的所有流量都走WireGuard,可以把AllowedIPs改成你实际需要访问的网段,而不是0.0.0.0/0, ::/0。比如只访问某个内网网段:

[Peer]
PublicKey = 对方公钥
AllowedIPs = 192.168.1.0/24, fd00::/64
# 其他原有配置...

这样就只有目标网段的流量会走WireGuard,SSH流量依然走原来的网络。

如何查看有用的日志?

下次启动WireGuard时,用下面的命令把启动日志保存到文件里,方便后续排查:

wg-quick up ~/wg0.conf 2>&1 | tee wg-start.log

另外,还可以查看系统级的WireGuard日志:

journalctl -u wg-quick@wg0
# 或者查看内核日志里的WireGuard相关信息
dmesg | grep wireguard

验证配置的正确姿势

先通过VNC控制台登录VPS,执行wg-quick up ~/wg0.conf,然后:

  1. Ping一个公网地址(比如8.8.8.8),看是否能正常连通
  2. 同时尝试用SSH重新连接VPS,看是否能成功
    如果这两步都没问题,说明配置已经修复了SSH断连的问题。

你先试试这些方法,应该能解决你的问题。要是还有疑问,可以把wg0.conf里的敏感信息(比如私钥、公钥)隐去后贴出来,咱们再接着调。

备注:内容来源于stack exchange,提问作者Reyraa

火山引擎 最新活动