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

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

  •  
  •   paradislover · 2015-10-28 12:42:11 +08:00 · 1144 次点击
    这是一个创建于 3346 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为路由器本身性能较差(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

    但是不起作用,请教各位需要怎么设置?
    第 1 条附言  ·  2015-10-28 14:36:04 +08:00
    192.168.5.100 也是一台 OpenWrt 机器,监听 1080 端口
    这边没做什么设置
    第 2 条附言  ·  2015-10-28 17:25:45 +08:00
    18 条回复    2015-10-29 11:38:27 +08:00
    fangdingjun
        1
    fangdingjun  
       2015-10-28 12:56:53 +08:00
    使用`iptables -nvL -t nat` 查看一下规则的计数,如果计数不为 0 ,则规则没有问题,要检查 192.168.5.100 的配置
    paradislover
        2
    paradislover  
    OP
       2015-10-28 13:02:30 +08:00
    @fangdingjun 192.168.5.100 需要怎么配置
    GPU
        3
    GPU  
       2015-10-28 13:11:05 +08:00
    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
       2015-10-28 14:36:44 +08:00
    @GPU 不行,依然不能通过 192.168.5.100 上网
    GPU
        5
    GPU  
       2015-10-28 15:15:59 +08:00
    @paradislover 画个图片把。文字有点难理解
    paradislover
        6
    paradislover  
    OP
       2015-10-28 17:26:12 +08:00
    @GPU 图片已附
    GPU
        7
    GPU  
       2015-10-28 18:09:25 +08:00
    你寫規則應該沒有錯的.

    ip_forward 開了碼?
    EPr2hh6LADQWqRVH
        8
    EPr2hh6LADQWqRVH  
       2015-10-28 18:29:45 +08:00
    简直乱搞, 你确定你懂 DNAT 是啥?
    让你算力强的机器当默认网关,在这台机器上再连上级路由器,所有数据包多一跳
    还有难道 Geoip 就不消耗算力么
    lsylsy2
        9
    lsylsy2  
       2015-10-28 18:38:59 +08:00
    @avastms 他应该是让那台机器做 s!@#s 的服务器( v!@#p$%^n 同理),加密吃的 CPU 比 geoip 多多了
    paradislover
        10
    paradislover  
    OP
       2015-10-28 19:23:42 +08:00
    @lsylsy2 还是你懂我
    paradislover
        11
    paradislover  
    OP
       2015-10-28 19:34:41 +08:00
    @avastms 那给个方案吧, proxy 没法分流,就是这么个情况,所以…折腾
    lsylsy2
        12
    lsylsy2  
       2015-10-28 19:52:05 +08:00
    @paradislover 因为我也在研究这么搞……
    不过我是 VPN ,最后大概是拿块 x86 的主板当主路由,而且 VPN 是改路由表也不涉及 ipset 所以没啥经验给你了……
    pagxir
        13
    pagxir  
       2015-10-28 22:16:44 +08:00 via iPad
    跟路由没关系,是因为你的 proxy 是无法正常工作的,因为在执行 NAT 转发的过程中你的目标 IP 经被修改了所以请你的 pxoxy 根本不可能拿到正确的目标地址。
    XiaoxiaoPu
        14
    XiaoxiaoPu  
       2015-10-28 22:36:19 +08:00
    楼上说得对 ss-redir 之所以能透明代理,是因为内核在 redirect 时保存了原始的目的地址和端口,可以用 socket 接口取得。跨越了不同的机器后,原始的目的地址和端口就丢失了。
    paradislover
        15
    paradislover  
    OP
       2015-10-28 23:23:56 +08:00 via Android
    @pagxir 恩,受教
    BOYPT
        16
    BOYPT  
       2015-10-28 23:35:44 +08:00
    看到标题脑内自觉翻译成英文
    firexp
        17
    firexp  
       2015-10-28 23:53:32 +08:00
    ss-redir 必须运行在网关上
    pagxir
        18
    pagxir  
       2015-10-29 11:38:27 +08:00
    其实可以有变通的方法实现你的需求的,
    方法 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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2845 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:57 · PVG 22:57 · LAX 06:57 · JFK 09:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.