Wireguard 自动重连的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TashinV
V2EX    WireGuard

Wireguard 自动重连的问题

  •  
  •   TashinV
    PRO
    301 天前 1910 次点击
    这是一个创建于 301 天前的主题,其中的信息可能已经有所发展或是发生改变。
    两边家里都有公网,下面用 A 、B 代替。
    A 、B 路由都设置了 DDNS ,并打通了 wireguard 连接,由 A 路由(服务端)生成公钥私钥,把这套密钥填入 B 路由中(客户端)。
    1. 这样子是不是 A 内网下的设备就能连上 B 内网的所有设备了?反过来 B 连 A 也是一样?比如 A 家的电脑可以远程连接 B 家的打印机进行打印,B 家可以连上 A 家 NAS 读写文件。
    2. 公网 IP 总是在变化,我找了一下解决方案,一般是写一个检测的脚本,检测到 IP 地址变化就重新连接。那么想请问一下,这个检测的脚本我是需要跑在哪个路由上?还是需要两边都需要跑这个检测脚本?
    12 条回复    2024-12-18 15:49:29 +08:00
    EyebrowsWhite
        1
    EyebrowsWhite  
       301 天前 via iPhone
    1. 要连接内网设备需要配置允许流量转发,具体看你路由器什么系统了
    2. 都跑
    263
        2
    263  
       301 天前
    点对点的话,其实在 peer 设置一下 keepalive 就能自动处理了,不过具体表现要看设备。
    TashinV
        3
    TashinV  
    OP
    PRO
       301 天前 via iPhone
    @EyebrowsWhite
    两地路由都是 unifi 。
    我的理解是只要跑一端的脚本就行吧? A 做服务端,B 做客户端,B 主动连接 A 的话就要 B 跑脚本,A 主动连接 B 应该不用跑脚本吧?
    TashinV
        4
    TashinV  
    OP
    PRO
       301 天前 via iPhone
    @263
    unifi 里面似乎没看到有 keep alive 的选项
    JerryYuan
        5
    JerryYuan  
       301 天前 via Android   1
    1.具体要看路由怎么配置的,要确保双向通信的数据包不会走到意外的地方,基本就能通,和节点公网地址变不变没啥关系
    2.ddns 脚本建议两边都跑,自动维护两个不同的(二级)域名,有助于增强网络链接的健壮性。一端的解析挂了还能靠另一端拉起来。
    yinmin
        6
    yinmin  
       301 天前 via iPhone   1
    OP 可以试试 headscale 的方案,底层也是 wireguard
    yinmin
        7
    yinmin  
       301 天前 via iPhone   1
    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
        8
    TashinV  
    OP
    PRO
       296 天前 via iPhone
    @JerryYuan
    两台路由都是 unifi 的,我看了一下好像 Linux 设备可以通过 PersistentKeepalive 来进行保活?( GPT:PersistentKeepalive 可以持续监测连接状态,触发重连时重新解析域名。)
    这样的话是不是就不用跑 ddns 脚本了?
    JerryYuan
        9
    JerryYuan  
       296 天前 via Android   1
    @TashinV 需要跑,persistentKeepalive 那个是维持'链接'用的,相当于定时互相 ping 一下
    wireguard 有个特性,就是只会在建立连接时解析域名,完成解析以后会缓存地址直到重启才会重新解析。
    维持链接并不能保证地址不会变,地址一旦变了,keepalive 只会变成无响应,并不能恢复"链接
    JerryYuan
        10
    JerryYuan  
       296 天前 via Android   1
    @JerryYuan 恢复连接需要通过 ddns 拿到更新后的节点地址,并更新到 wg 的 peer 配置上去,这也是 openwrt 里边那个 wireguard_watchdog.sh 在做的事情。
    TashinV
        11
    TashinV  
    OP
    PRO
       296 天前
    @JerryYuan #10
    懂了。那在 unifi 里面这个 wireguard_watchdog.sh 的脚本该怎么写呢?
    JerryYuan
        12
    JerryYuan  
       296 天前 via Android   1
    @TashinV 从 openwrt 里边拷出来改下就行,里边有几个依赖 luci 配置的东西,可以改成用 wg-quick 啥的去操作。脚本本身已经够用了,没必要自己搓一个了。(如果 unifi 里边和 Linux 的逻辑一致的话)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     879 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 20:38 PVG 04:38 LAX 13:38 JFK 16:38
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86