如何设置 HTTP 请求使用哪个 IP?

如何设置 HTTP 请求使用哪个 IP?

这个问题可能有点傻。我使用命令行
执行一些 http 请求,我希望这些连接通过我服务器的 4 个 IP 中的一个特定 IP 进行。 这些 http 请求会发送到一个特定的 IP 范围,因此我只希望以不同的方式路由这些请求。 我的服务器中的 4 个接口是、、、。wget

eth0eth0:0eth0:1eth0:2

我尝试使用以下命令:
route add -net 192.164.10.0/24 dev eth0:0

但是当我看到路由表时,它显示:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.164.10.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

接口设置与我的命令所说的eth0不一样。eth0:0

我究竟做错了什么?

答案1

wget --bind-address=192.0.2.116 http://fileman wget

答案2

如果不是 wget,那么还有这个漂亮的小包装LD_PRELOAD你在跑步前用来插入任何命令。

您可以使用它来专门绑定浏览器到 VLAN 接口(根据经验)。

答案3

如果您需要更灵活的路由(而不是--bind-address),您可以尝试设置 PBR(基于策略的路由)

IP1='xxx.xxx.xxx.62'
IF1='eth0'
GW1='xxx.xxx.xxx.61'
P1_NET='xxx.xxx.xxx.60/30'

IP2='yyy.yyy.yyy.10'
IF2='eth0:0'
GW2='yyy.yyy.yyy.9'
P2_NET='yyy.yyy.yyy.8/30'

IP3='zzz.zzz.zzz.239'
IF3='eth0:1'
GW3='zzz.zzz.zzz.254'
P3_NET='zzz.zzz.zzz.0/24'

/sbin/ip route add $P1_NET dev $IF1 src $IP1 table ISP1
/sbin/ip route add default via $GW1 table ISP1

/sbin/ip route add $P2_NET dev $IF2 src $IP2 table ISP2
/sbin/ip route add default via $GW2 table ISP2

/sbin/ip route add $P3_NET dev $IF3 src $IP3 table ISP3
/sbin/ip route add default via $GW3 table ISP3

/sbin/ip rule add from $IP1 table ISP1
/sbin/ip rule add from $IP2 table ISP2
/sbin/ip rule add from $IP3 table ISP3

/sbin/ip ru add fwmark 1 lookup ISP1 prio 100
/sbin/ip ru add fwmark 2 lookup ISP2 prio 200
/sbin/ip ru add fwmark 3 lookup ISP3 prio 300

/sbin/ip route add default via $GW1
/sbin/ip route flush cache

然后使用类似下面的方法

iptables -t mangle -I OUTPUT -p tcp --dport 80 -j MARK --set-mark 1

相关内容