菜鸡请教下
内网主机 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
...搞晕了, 先去研究 私房菜.. 有大牛子老哥教教么
1
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 。 |
2
Crawping OP @maybeonly 我给写服务的老哥说过 应该是设置 srcip 就可以 ,他那个代理实际是个 过滤跟统计的功能, 他不搭理我....
|
4
JohnBull 2022-11-09 00:07:54 +08:00
用路由策略,可以匹配源地址或者 fwmark
ip rule help |
5
flynaj 2022-11-09 23:12:42 +08:00 via Android
用 openwrt,里面的 mwan3 ,自己写脚本有点复杂。
|
6
ttvast 2022-11-10 10:54:43 +08:00
内网主机 A 内网主机 B 两台机器 希望做到 A->B->公网
这句话就根本让人摸不着头脑。 A 和 B 分别什么角色的机器? |