Linux 多 IP 多网关分流

2022-11-08 17:26:09 +08:00
 Crawping

菜鸡请教下

内网主机 A  内网主机 B 两台机器 希望做到 A->B->公网  代理请求 但按不同 IP 分流

主机 A 内网 IP:10.0.4.2   

主机 B	
内网 IP1:10.0.4.3   eth0
内网 IP2:10.0.4.4   eth1
公网 IP1:58.49.223.15 eth2 (网关 58.49.223.193)
公网 IP2:58.49.223.17 eth3 (网关 58.49.223.193)
      
主机 B 上启动 代理服务 0.0.0.0:3080
主机 A 上 NAT 代理 本地端口 1080 -> 10.0.4.3:3080
              本地端口 2080 -> 10.0.4.4:3080
              
期望 主机 A 1080->10.0.4.3:3080 的流量最终通过公网 IP 58.49.223.15 请求
          2080->10.0.4.4:3080 的流量最终通过公网 IP 58.49.223.17 请求

当前设置

主机 A  DNAT/SNAT 
主机 B  default route 58.49.223.15

尝试设置

方案 1:  无效,通过代理检测公网 ip 仍为 58.49.223.15
主机 B 
ip route add table 100 via eth3
iptables mangle 表 set mark 3
ip rule add fwmark 3 table 100

方案 2: 无效,同上
主机 B
ip route add table 100 via eth3
ip rule add from 10.0.4.4/32 table 100

方案 3: 无效,同上
主机 B 
iptables snat src 10.0.4.4 to  58.49.223.17

...搞晕了, 先去研究 私房菜.. 有大牛子老哥教教么

1785 次点击
所在节点    宽带症候群
6 条回复
maybeonly
2022-11-08 17:39:19 +08:00
你为啥要用代理啊? nat 可能更方便。
nat 的话直接
iptables -t nat -A POSTROUTING -o eth2 -i eth0 -j SNAT --to 58.49.223.15
再加一条类似的
就得了。
因为你新建对外连接的 tcp 的时候,和你连入的 ip 无关,而是要通过路由表选择 srcip 的。
如果你的代理软件能设置 srcip 或者 fwmark ,就设置。
如果不能,考虑 netns 解决所有问题。
注意 rpfilter 。
Crawping
2022-11-08 17:42:26 +08:00
@maybeonly 我给写服务的老哥说过 应该是设置 srcip 就可以 ,他那个代理实际是个 过滤跟统计的功能, 他不搭理我....
Crawping
2022-11-08 17:48:01 +08:00
@maybeonly 感谢 我绕晕了, 大牛子哥的 一句话点醒我了, 我去找他们撕逼去
JohnBull
2022-11-09 00:07:54 +08:00
用路由策略,可以匹配源地址或者 fwmark
ip rule help
flynaj
2022-11-09 23:12:42 +08:00
用 openwrt,里面的 mwan3 ,自己写脚本有点复杂。
ttvast
2022-11-10 10:54:43 +08:00
内网主机 A 内网主机 B 两台机器 希望做到 A->B->公网

这句话就根本让人摸不着头脑。
A 和 B 分别什么角色的机器?

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

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

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

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

© 2021 V2EX