Назад | Перейти на главную страницу

Как установить, какой IP использовать для HTTP-запроса?

Наверное, это глупый вопрос.
Я делаю несколько 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