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

2015-10-28 12:42:11 +08:00
 paradislover
因为路由器本身性能较差(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

但是不起作用,请教各位需要怎么设置?
1139 次点击
所在节点    OpenWrt
18 条回复
fangdingjun
2015-10-28 12:56:53 +08:00
使用`iptables -nvL -t nat` 查看一下规则的计数,如果计数不为 0 ,则规则没有问题,要检查 192.168.5.100 的配置
paradislover
2015-10-28 13:02:30 +08:00
@fangdingjun 192.168.5.100 需要怎么配置
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
2015-10-28 14:36:44 +08:00
@GPU 不行,依然不能通过 192.168.5.100 上网
GPU
2015-10-28 15:15:59 +08:00
@paradislover 画个图片把。文字有点难理解
paradislover
2015-10-28 17:26:12 +08:00
@GPU 图片已附
GPU
2015-10-28 18:09:25 +08:00
你寫規則應該沒有錯的.

ip_forward 開了碼?
EPr2hh6LADQWqRVH
2015-10-28 18:29:45 +08:00
简直乱搞, 你确定你懂 DNAT 是啥?
让你算力强的机器当默认网关,在这台机器上再连上级路由器,所有数据包多一跳
还有难道 Geoip 就不消耗算力么
lsylsy2
2015-10-28 18:38:59 +08:00
@avastms 他应该是让那台机器做 s!@#s 的服务器( v!@#p$%^n 同理),加密吃的 CPU 比 geoip 多多了
paradislover
2015-10-28 19:23:42 +08:00
@lsylsy2 还是你懂我
paradislover
2015-10-28 19:34:41 +08:00
@avastms 那给个方案吧, proxy 没法分流,就是这么个情况,所以…折腾
lsylsy2
2015-10-28 19:52:05 +08:00
@paradislover 因为我也在研究这么搞……
不过我是 VPN ,最后大概是拿块 x86 的主板当主路由,而且 VPN 是改路由表也不涉及 ipset 所以没啥经验给你了……
pagxir
2015-10-28 22:16:44 +08:00
跟路由没关系,是因为你的 proxy 是无法正常工作的,因为在执行 NAT 转发的过程中你的目标 IP 经被修改了所以请你的 pxoxy 根本不可能拿到正确的目标地址。
XiaoxiaoPu
2015-10-28 22:36:19 +08:00
楼上说得对 ss-redir 之所以能透明代理,是因为内核在 redirect 时保存了原始的目的地址和端口,可以用 socket 接口取得。跨越了不同的机器后,原始的目的地址和端口就丢失了。
paradislover
2015-10-28 23:23:56 +08:00
@pagxir 恩,受教
BOYPT
2015-10-28 23:35:44 +08:00
看到标题脑内自觉翻译成英文
firexp
2015-10-28 23:53:32 +08:00
ss-redir 必须运行在网关上
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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/231688

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX