这可能是一个愚蠢的问题。
我正在使用命令行中的wget做一些http请求,我希望这些连接是通过我的服务器拥有的4个IP的一个特定的IP来完成的。
这些http请求到达一个特定的IP地址范围,所以我只希望那些路由不同。
我的服务器中的4个接口是eth0 , eth0:0 , eth0:1 , eth0: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正如我的命令所述。
我究竟做错了什么?
wget --bind-address=192.0.2.116 http://file来自man wget wget --bind-address=192.0.2.116 http://file
如果不是wget,那么在运行任何命令之前使用LD_PRELOAD来插入这个漂亮的小包装 。
您可以使用它来专门将浏览器绑定到VLAN接口(根据经验)。
如果您需要更灵活的路由(而不是–bind-address),您可以尝试设置策略路由(策略库路由)
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