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

爬墙 wifi 配置的疑问

  •  
  •   zhaogaz · 51 天前 · 973 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近有个想法,想在局域网搞个‘旁路由’。想爬墙方便点,同时不影响主要网络结构。但是觉得手动修改网关、dns 等觉得太麻烦了,决定在主路由上面搞一个固定爬墙网关 的 wifi ,爬墙 wifi 和普通 wifi 共存。

    试验了一下,没有成功。想问问大哥们这个思路对不对?还是这个思路无法实现?也想知道是哪里错了,知道如何调试。

    接下来说一下细节配置。整体思路和 https://forum.openwrt.org/t/using-another-lan-device-in-a-different-subnet-as-gateway/152351 类似但是不完全一致。

    配置目标:

    • 想要爬墙的时候,就可以链接爬墙 wifi ,同时不影响局域网访问任何东西
    • 想要精细爬墙的时候,可是使用普通家庭 wifi
    • 爬墙服务坏掉了,只影响爬墙 wifi 。完全不需要任何修改,主链路继续上网

    初始状态:

    • 主路由是 redmi ax6000 ; openwrt 原生系统;版本 23.05 (基本上啥都没装)
    • 光猫桥接,主路由 pppoe 拨号
    • lan 网段是 192.168.100.1/24
    • 有一个爬墙的 linux 地址是 192.168.100.22 ,部署了一个 xary 透明代理 ;手动修改网关测试没问题
    • 192.168.100.11 有一个 nas

    新增爬墙 wifi 的改动 v1

    • 新建一个 static address 的 interface 名叫 proxy 。配置 ip 为 192.168.200.1/24 ;设置 dhcp ;关闭 v6 ;加入防火墙 lan ;同时配置 gateway 为 192.168.100.22
    • 新建 一个 wireless network ( wifi )名叫 guest ,选定 network 为上一步中配置的 proxy

    在我天真的以为,这样就 ok 的时候,连上 guest wifi 发现完全没有爬墙功能,使用 命令 tracert 查了一下,发现路由如下

    C:\Users\bbbbbb>tracert www.bilibili.com
    
    通过最多 30 个跃点跟踪
    到 a.w.bilicdn1.com [117.23.60.14] 的路由:
    
      1     1 ms     1 ms     3 ms  OpenWrt.ax6kdns [192.168.200.1]
      2     2 ms     1 ms     2 ms  100.69.128.1
    。。。。。
    

    可以上网,但是没有经过指定的 gateway 。

    经过一番搜索,找到了 Using another LAN device in a different subnet as gateway 然后参考配置了一下

    改动 v2

    • 新增 ipv4 rules ipv4 规则,设置 proxy interface 的流量走 table 100
    • 设置 静态 ipv4 路由,其中 interface 为 lan ; target 为 0.0.0.0/0 即全流量; gateway 为 192.168.100.22 即 代理网关; 同时设置为 table 100
    • 回滚 proxy interface 中 gateway 配置 为空

    配置生效过后,可以在 Routing 看到所有配置

    https://imgur.com/a/9xY9Pmf

    但是测试发生了这样的事情

    C:\Users\bbbbbb>tracert www.bilibili.com
    
    通过最多 30 个跃点跟踪
    到 a.w.bilicdn1.com [111.225.214.25] 的路由:
    
      1    <1 毫秒   <1 毫秒   <1 毫秒 OpenWrt.ax6kdns [192.168.200.1]
      2     2 ms     4 ms     5 ms  192.168.100.22
      3     1 ms     1 ms     1 ms  OpenWrt.ax6kdns [192.168.200.1]
      4     *        *        *     请求超时。
      5     *        *        *     请求超时。
      6     *     ^C
    

    后来想了很久,感觉是不是缺少一个 nat ?和 openwrt 论坛里面的人配置对比一下,我没有新建防火墙,我只是复用了之前的 lan 防火墙;没配置防火墙之间的 forwarding ,也没配置 masquerade

    1. 我自己想了半天,还是很迷惑,希望能有大哥指指路(跪谢)说明下到底是为什么
    2. 在配置过程中,反复查看 /etc/config/network router -n ip route ip rule 发现 ip rule 和 openwrt 中的配置并不一致,很困惑
    3. 大哥们有没有其他更简单的做法,指指路。
    第 1 条附言  ·  51 天前

    感谢各位大哥的观看(虽然没有人完全解答我的问题)

    最后还是换了个方式实现了配置。大概简述下我的操作

    1. 新建一个 叫 proxy 的 interface 配置了另一个网段,开启了dhcp,分了一个物理接口
    2. 物理接口接入 爬墙linux
    3. proxy 的 dhcp 分配 爬墙linux 为网关
    4. 新建一个wifi 加入到 proxy interface 中
    5. proxy 和 lan 共用一个 lan的防火墙

    整套配置下来,2个wifi都正常、2个子网都可以互相访问,没有隔离、没有碰 route、没有碰rule、没有碰什么iptables,nftables、也没有碰firewall、也没碰vlan、也不再需要手动配置网关了。

    很多东西不太懂,了解的越多,困惑的越多。其实很多东西不是不敢碰,而是改动了不知道怎么在openwrt上验证生效。我这个臭写代码的实在是搞不明白了。唉,不过好在搞完了。

    7 条回复    2024-03-21 18:26:52 +08:00
    tootfsg
        1
    tootfsg  
       51 天前   ❤️ 1
    我两个路由器实现的,主路由 ros ,无线路由器 360t7 qwrt 。
    donaldturinglee
        2
    donaldturinglee  
       51 天前   ❤️ 1
    我记得是不是要配一下 iptables
    supemaomao
        3
    supemaomao  
       51 天前 via Android
    更简单的有两个方法
    1:使用 vrrp ,两个网关,默认所有流量都走 op ,op 会分流,国内外都没问题,如果 op 挂了,或者不能爬了(用 shell 脚本判定之类的)切换会另一个网关,这个切换基本无感知。但是这个你得两个路由,我是 ros+op 。
    2:路由协议分流,流量都到网关一,如果是国外的,去网关二加密代理,再出去。如果是国内就直接出去。这个你可以只用一个路由,但是你的有一个端点机用于下发路由表,和国外流量出口。
    上面两个方法,我是从 1 用到 2 ,现在 2 稳定就不折腾了。
    supemaomao
        4
    supemaomao  
       51 天前 via Android   ❤️ 1
    看了一下你的初始状态,你可以用方法 2 ,因为你已经有一个可以 Linux ,可以用来做代理和下发路由的端点机了。
    wuruxu
        5
    wuruxu  
       51 天前   ❤️ 1
    直接把 wireguard 配置到硬路由上,可以看我以前的帖子
    dier
        6
    dier  
       51 天前   ❤️ 1
    越来越不喜欢折腾了,我是直接一个路由器搞定。OpenClash 规则分流。再加一个 AdGuardHome 过滤一下 DNS
    libregratis
        7
    libregratis  
       37 天前
    openwrt 23.05 用 dhcp options 手动配置一下 tag 即可,openwrt 支持接入设备通告 linux 设备为 gateway 和 dns ,没有被通告的设备会默认正常上网
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2702 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:28 · PVG 19:28 · LAX 04:28 · JFK 07:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.