Наверное, это глупый вопрос.
Я делаю несколько HTTP-запросов, используя wget
из командной строки, и я хочу, чтобы эти подключения выполнялись через один конкретный IP-адрес из 4-х 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, то есть эта изящная маленькая обертка что вы используете LD_PRELOAD
вставить перед запуском любой команда.
Вы можете использовать это, например, для привязки браузера к интерфейсу VLAN (исходя из опыта).
Вы можете попробовать настроить PBR (базовая маршрутизация политики), если вам нужна более гибкая маршрутизация (вместо --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