V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
photon006
V2EX  ›  OpenWrt

请问 openwrt 的 wireguard 如何设置?

  •  
  •   photon006 · 2022-08-08 23:09:55 +08:00 · 2973 次点击
    这是一个创建于 870 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位彦祖:

    场景是 op 的 wg 当客户端连接远端一个 peer ,不是当服务端让其它客户端接入,所以设置方法跟很多教程不一样,不需要端口转发,也不需要监听固定端口,默认监听随机端口就行。

    我参考资料尝试 2 种方案都一样,网络倒是通了,不过 op 下本地网络默认优先走远端 peer ,表现是访问 https://www.ip138.com 得到远端 peer 的公网 ip ,不是 op 自身本地拨号公网 ip ,而且 wireguard 接口的流量非常大。

    我希望把远端局域网( 10.13.1.*)接入到本地网络( 192.168.2.*)之后,本地网络默认走自己公网 ip ,不可用时才走远端 peer 。


    第 1 种方案,参考油管视频:
    ,主要特点是把 wireguard 接口的防火墙分配给 wan 区域,配置好 client 就能用,无需再额外折腾防火墙规则,简单易用。

    第 2 种方案,参考其他博客,把 wireguard 接口的防火墙分配给一个新建区域,命名为 wireguard ,设置 lan 区域 <=> wireguard 区域 允许互相转发,启动 wg 接口发现只有 op 自身能连接远端局域网( 10.13.1.*),本地局域网其他机器则不行,op 加入一条防火墙自定义规则后解决:iptables -t nat -A POSTROUTING -o wireguard -j MASQUERADE

    2 种方案都有同样的问题,折腾期间好几次翻车让我电脑跟 op 失联失去控制,幸运的是 pve 宿主机还能连,通过 console 模拟物理显示器的方式进入 op ssh ,vim 修改配置救回来。

    怀疑是路由问题,启动 wireguard 后,ip route show table main 显示默认路由由 pppoe-wan 改成了 wireguard ,尝试改成 pppoe-wan 优先,没改成功。
    dengqing
        1
    dengqing  
       2022-08-09 08:26:49 +08:00 via iPhone
    photon006
        2
    photon006  
    OP
       2023-12-06 16:14:13 +08:00
    流量绕远端 peer 的问题解决了

    1 、wg 服务端启动时配置隧道允许的 ip

    docker run -d \
    --name=wireguard \
    -e WG_HOST=home.example.com \
    -e WG_PORT=54321 \
    -e PASSWORD=yourPassword \
    -e WG_DEFAULT_DNS=192.168.2.1 \
    -e WG_DEFAULT_ADDRESS=10.13.100.x \
    -e WG_ALLOWED_IPS=192.168.2.0/24
    -e TZ=Asia/Shanghai \
    -v /opt/wg-easy:/etc/wireguard \
    -p 54321:51820/udp \
    -p 51821:51821/tcp \
    --cap-add=NET_ADMIN \
    --cap-add=SYS_MODULE \
    --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
    --sysctl="net.ipv4.ip_forward=1" \
    --restart unless-stopped \
    weejewel/wg-easy

    关键是:WG_ALLOWED_IPS=192.168.2.0/24 ,如果没有这项默认是 0.0.0.0

    2 、openwrt 路由器配置 wg 客户端时使用它




    3 、检测本地网络是否会绕远端 peer

    浏览器访问 https://www.ip138.com/



    命令行执行:curl --location --request GET 'http://www.taobao.com/help/getip.php'
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1667 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:46 · PVG 00:46 · LAX 08:46 · JFK 11:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.