找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 2778|回复: 6

记录下,给需要灵活配置wireguard的朋友点参考

[复制链接]
发表于 2024-7-23 09:56 | 显示全部楼层 |阅读模式
本帖最后由 bsdcpp 于 2024-11-7 21:48 编辑

之前大神做的wireguard配置页面可配的项不多,无法额外设置防火墙,新增路由。本来在这个基础上添加了几个项,后来突发奇想,何不直接上配置文件,利用wg-quick来负责启停。这样丧失了一点傻瓜性,但是可以随意灵活配置。

大概改动在最近的几个提交内:Commits · bsdcpp/padavan-4.4 (github.com)给大家个参考。wireguard本身不分服务/客户,可以自由配置,全凭配置文件。下图是作为“客户端”模式连接,实现两端内网互联,外网出口各走各的。



如需要本端全部包括外网走对端,可以不配置Postup/Postdown,直接设置AllowIPS=0.0.0.0/0和Table = auto即可。wg-quick会自动配置路由。
如果要作为中心IP地址(服务端)运行,需要开启转发,这样各子IP地址可以互通:iptables -A FORWARD -i %i -o %i -j ACCEPT;(这句添加到Postup后面或者再加一行Postup也可以,具体参考wg-quick手册
防火墙部分,例如作为客户端联入服务端内网192.168.2.0/24,同时允许外面进来的访问本端内网。

  1. # 如果上面配置Table = off,需要配置某些网段走对端,需要在这里添加,下面例子表示192.168.2.0/24走对端
  2. PostUp   = iptables -A INPUT -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o %i -j MASQUERADE; iptables -A FORWARD -i %i -j ACCEPT; ip route add 192.168.2.0/24 dev %i
  3. PostDown = iptables -D INPUT -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o %i -j MASQUERADE; iptables -D FORWARD -i %i -j ACCEPT; ip route del 192.168.2.0/24 dev %i
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
vogage + 1 很好,支持!还是有人研究的

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
 楼主| 发表于 2024-7-31 11:05 | 显示全部楼层
本帖最后由 bsdcpp 于 2025-1-25 22:43 编辑


已经加入固件,自动解决,以下无需手动处理
-----------------
另外,针对服务端IP变更(如上面配的ddns服务端),wireguard客户端不会自动重联的问题。可以自己添加定时任务切换。
因为ddns是个变量,需要用户从web界面输入一个域名,传给后台,所以目前还没有合并入固件,暂时单独做个定时任务吧。

  1. #!/bin/bash

  2. # 配置变量
  3. WG_INTERFACE="wg0"  # WireGuard接口名
  4. wgconf=/etc/storage/${WG_INTERFACE}.conf
  5. DDNS_HOST="abc.com"  # DDNS域名
  6. wireguard_enable=`nvram get wireguard_enable`

  7. if [ "$wireguard_enable" = "1" ]; then
  8.     # 获取DDNS解析的IP地址
  9.     NEW_IP=`nslookup $DDNS_HOST|grep $DDNS_HOST -A1 |awk '/Address/{print $3}'`

  10.     # 获取WireGuard当前连接的IP地址
  11.     CURRENT_IP=`wg show $WG_INTERFACE endpoints |awk '{split($2,a,":"); print a[1]}'`

  12.     # 检查IP地址是否发生变化
  13.     if [ "$NEW_IP" != "$CURRENT_IP" ]; then
  14.         logger -t "WIREGUARD" "IP地址已更改,从 $CURRENT_IP 到 $NEW_IP。重启WireGuard..."
  15.         # 重启WireGuard客户端
  16.         wg-quick down $wgconf
  17.         wg-quick up $wgconf
  18.     else
  19.         logger -t "WIREGUARD" "IP地址未更改。当前IP:$CURRENT_IP"
  20.     fi
  21. fi
复制代码
保存为/etc/storage/wg_ddns.sh,然后添加定时任务:*/10 * * * * /bin/sh /etc/storage/wg_ddns.sh >/dev/null 2>&1
然后执行mtd_storage.sh save保存到mtd,否者重启后会丢失。

这样就会10分钟检查一次ddns是否和当前连接的一致,不一致就重启wireguard.

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-12-30 15:06 | 显示全部楼层
好帖子不能让他沉咯。。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-1-9 14:09 | 显示全部楼层
好思路,抄了
跟你的想法差不多,在原界面上加了几个配置项,但PostUp和PostDown没有写
后面因为转发问题,总是配置没成功,无奈转了openwrt来做。
感觉自定义定时任务的方式不如直接合并进固件傻瓜一点……

点评

wg貌似没有这种ip变化自动重连功能,换了openwrt也是需要脚本处理的,只不过好像有个自带脚本  详情 回复 发表于 2025-1-25 14:51
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-1-9 14:13 | 显示全部楼层
还有一个问题,解析域名优先ipv6怎么解决?后面我直接禁用了ipv6,有办法指定吗?

点评

没理解你意思,ddns解析到v6?  详情 回复 发表于 2025-1-25 14:52
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2025-1-25 14:51 | 显示全部楼层
本帖最后由 bsdcpp 于 2025-1-25 16:22 编辑
PiGGy52511 发表于 2025-1-9 14:09
好思路,抄了
跟你的想法差不多,在原界面上加了几个配置项,但PostUp和PostDown没有写
后面因为转发问题, ...

wg貌似没有这种ip变化自动重连功能,换了openwrt也是需要脚本处理的。
wiguard-tools自带一个reresolve-dns.sh:How to automatically re-resolve DNS in Wireguard on Linux | TechOverflow
它这个办法更简单,根据握手时间超出一定数值后重新set一下,会重连peer,而不需要重启整个wireguard接口

这两天我看看怎么改一下,定时任务也不需要手动配置的。

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2025-1-25 14:52 | 显示全部楼层
PiGGy52511 发表于 2025-1-9 14:13
还有一个问题,解析域名优先ipv6怎么解决?后面我直接禁用了ipv6,有办法指定吗? ...

没理解你意思,ddns解析到v6?
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 19:09

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表