OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
paradislover
V2EX  ›  OpenWrt

OpenWrt 如何转发特定流量在 Lan 上的 IP

  •  
  •   paradislover · Oct 28, 2015 · 1919 views
    This topic created in 3862 days ago, the information mentioned may be changed or developed.
    因为路由器本身性能较差(IP: 192.168.5.1),在 Lan 端接了一台性能较的机器( IP:192.168.5.100 )监听 1080 端口,因为 192.168.5.100 这台机器没法做 GEOIP 或者 IPSET. 所以就在路由器上通过 GEOIP 来区分流量。

    iptables -t nat -A PREROUTING -p tcp -m geoip ! --dst-cc CN -j DNAT --to-destination 192.168.5.100:1080
    iptables -t nat -A POSTROUTING -p tcp -d 192.168.5.100 --dport 1080 -j SNAT --to-source 192.168.5.1

    但是不起作用,请教各位需要怎么设置?
    Supplement 1  ·  Oct 28, 2015
    192.168.5.100 也是一台 OpenWrt 机器,监听 1080 端口
    这边没做什么设置
    Supplement 2  ·  Oct 28, 2015
    18 replies    2015-10-29 11:38:27 +08:00
    fangdingjun
        1
    fangdingjun  
       Oct 28, 2015
    使用`iptables -nvL -t nat` 查看一下规则的计数,如果计数不为 0 ,则规则没有问题,要检查 192.168.5.100 的配置
    paradislover
        2
    paradislover  
    OP
       Oct 28, 2015
    @fangdingjun 192.168.5.100 需要怎么配置
    GPU
        3
    GPU  
       Oct 28, 2015
    iptables -t nat -A POSTROUTING -p tcp -d 192.168.5.100 --dport 1080 -j SNAT --to-source 192.168.5.1

    以上这条换

    iptables -t nat -A POSTROUTING -j MASQUERADE

    试试行不行
    paradislover
        4
    paradislover  
    OP
       Oct 28, 2015
    @GPU 不行,依然不能通过 192.168.5.100 上网
    GPU
        5
    GPU  
       Oct 28, 2015
    @paradislover 画个图片把。文字有点难理解
    paradislover
        6
    paradislover  
    OP
       Oct 28, 2015
    @GPU 图片已附
    GPU
        7
    GPU  
       Oct 28, 2015
    你寫規則應該沒有錯的.

    ip_forward 開了碼?
    EPr2hh6LADQWqRVH
        8
    EPr2hh6LADQWqRVH  
       Oct 28, 2015
    简直乱搞, 你确定你懂 DNAT 是啥?
    让你算力强的机器当默认网关,在这台机器上再连上级路由器,所有数据包多一跳
    还有难道 Geoip 就不消耗算力么
    lsylsy2
        9
    lsylsy2  
       Oct 28, 2015
    @avastms 他应该是让那台机器做 s!@#s 的服务器( v!@#p$%^n 同理),加密吃的 CPU 比 geoip 多多了
    paradislover
        10
    paradislover  
    OP
       Oct 28, 2015
    @lsylsy2 还是你懂我
    paradislover
        11
    paradislover  
    OP
       Oct 28, 2015
    @avastms 那给个方案吧, proxy 没法分流,就是这么个情况,所以…折腾
    lsylsy2
        12
    lsylsy2  
       Oct 28, 2015
    @paradislover 因为我也在研究这么搞……
    不过我是 VPN ,最后大概是拿块 x86 的主板当主路由,而且 VPN 是改路由表也不涉及 ipset 所以没啥经验给你了……
    pagxir
        13
    pagxir  
       Oct 28, 2015 via iPad
    跟路由没关系,是因为你的 proxy 是无法正常工作的,因为在执行 NAT 转发的过程中你的目标 IP 经被修改了所以请你的 pxoxy 根本不可能拿到正确的目标地址。
    XiaoxiaoPu
        14
    XiaoxiaoPu  
       Oct 28, 2015
    楼上说得对 ss-redir 之所以能透明代理,是因为内核在 redirect 时保存了原始的目的地址和端口,可以用 socket 接口取得。跨越了不同的机器后,原始的目的地址和端口就丢失了。
    paradislover
        15
    paradislover  
    OP
       Oct 28, 2015 via Android
    @pagxir 恩,受教
    BOYPT
        16
    BOYPT  
       Oct 28, 2015
    看到标题脑内自觉翻译成英文
    firexp
        17
    firexp  
       Oct 28, 2015
    ss-redir 必须运行在网关上
    pagxir
        18
    pagxir  
       Oct 29, 2015
    其实可以有变通的方法实现你的需求的,
    方法 1 、修改 DNS
    方法 2 、请作如下修改

    sysctl -w net.ipv4.conf.all.rp_filter=0
    iptables -t mangle -A PREROUTING -p tcp -d <YOUR_RELAY_VPS_IP> -j RETURN
    iptables -t mangle -A PREROUTING -p tcp -m geoip ! --dst-cc CN -j MARK --set-mark 0x33445566

    ip route flush table 30
    ip route add default dev $if_lan table 30
    ip rule add fwmark 0x33445566 table 30 pref 999
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3186 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 14:08 · PVG 22:08 · LAX 07:08 · JFK 10:08
    ♥ Do have faith in what you're doing.