Wireguard 自动重连的问题

5 天前
 TashinV
两边家里都有公网,下面用 A 、B 代替。
A 、B 路由都设置了 DDNS ,并打通了 wireguard 连接,由 A 路由(服务端)生成公钥私钥,把这套密钥填入 B 路由中(客户端)。
1. 这样子是不是 A 内网下的设备就能连上 B 内网的所有设备了?反过来 B 连 A 也是一样?比如 A 家的电脑可以远程连接 B 家的打印机进行打印,B 家可以连上 A 家的 NAS 读写文件。
2. 公网 IP 总是在变化,我找了一下解决方案,一般是写一个检测的脚本,检测到 IP 地址变化就重新连接。那么想请问一下,这个检测的脚本我是需要跑在哪个路由上?还是需要两边都需要跑这个检测脚本?
424 次点击
所在节点   WireGuard
12 条回复
EyebrowsWhite
5 天前
1. 要连接内网设备需要配置允许流量转发,具体看你路由器什么系统了
2. 都跑
263
5 天前
点对点的话,其实在 peer 设置一下 keepalive 就能自动处理了,不过具体表现要看设备。
TashinV
5 天前
@EyebrowsWhite
两地路由都是 unifi 。
我的理解是只要跑一端的脚本就行吧? A 做服务端,B 做客户端,B 主动连接 A 的话就要 B 跑脚本,A 主动连接 B 应该不用跑脚本吧?
TashinV
5 天前
@263
unifi 里面似乎没看到有 keep alive 的选项
JerryYuan
5 天前
1.具体要看路由怎么配置的,要确保双向通信的数据包不会走到意外的地方,基本就能通,和节点公网地址变不变没啥关系
2.ddns 脚本建议两边都跑,自动维护两个不同的(二级)域名,有助于增强网络链接的健壮性。一端的解析挂了还能靠另一端拉起来。
yinmin
5 天前
OP 可以试试 headscale 的方案,底层也是 wireguard
yinmin
5 天前
unifi 支持 openvpn ,建议 op 可以试试 openvpn 。

wireguard 不支持 ddns ,启动时解析 dns 一次,然后不会再解析 dns 锁死 ip 不变。

openvpn 支持 ddns ,设置 resolv-retry infinite ,remote 配置 ddns 域名,如果 ip 变化会自动连新 ip 。讨巧的方式是 openvpn client 配置里的 dns 服务器设置成 ddns ns server ,超快恢复连接。
TashinV
1 天前
@JerryYuan
两台路由都是 unifi 的,我看了一下好像 Linux 设备可以通过 PersistentKeepalive 来进行保活?( GPT:PersistentKeepalive 可以持续监测连接状态,触发重连时重新解析域名。)
这样的话是不是就不用跑 ddns 脚本了?
JerryYuan
1 天前
@TashinV 需要跑,persistentKeepalive 那个是维持'链接'用的,相当于定时互相 ping 一下
wireguard 有个特性,就是只会在建立连接时解析域名,完成解析以后会缓存地址直到重启才会重新解析。
维持链接并不能保证地址不会变,地址一旦变了,keepalive 只会变成无响应,并不能恢复"链接
JerryYuan
1 天前
@JerryYuan 恢复连接需要通过 ddns 拿到更新后的节点地址,并更新到 wg 的 peer 配置上去,这也是 openwrt 里边那个 wireguard_watchdog.sh 在做的事情。
TashinV
1 天前
@JerryYuan #10
懂了。那在 unifi 里面这个 wireguard_watchdog.sh 的脚本该怎么写呢?
JerryYuan
21 小时 13 分钟前
@TashinV 从 openwrt 里边拷出来改下就行,里边有几个依赖 luci 配置的东西,可以改成用 wg-quick 啥的去操作。脚本本身已经够用了,没必要自己搓一个了。(如果 unifi 里边和 Linux 的逻辑一致的话)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1097305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX