web-dev-qa-db-ja.com

HTTPリクエストに使用するIPを設定するにはどうすればよいですか?

これはおそらくばかげた質問です。
コマンドラインからwgetを使用していくつかのhttpリクエストを実行しています。これらの接続は、サーバーが持っている4つのIPのうちの1つの特定のIPを介して行われます。
これらのhttpリクエストは特定の範囲のIPに送信されるため、それらのルーティングを異なる方法にしたいだけです。
サーバーの4つのインターフェイスは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に設定されています。

何が悪いのですか?

6
GetFree

wget --bind-address=192.0.2.116 http://fileからman wget

9
Chris S

Wgetでない場合は、 この気の利いた小さなラッパー を使用してLD_PRELOADanyコマンドを実行する前に挿入します。

これを使用して、たとえば、ブラウザをVLANインターフェース(経験から言えば))に具体的にバインドできます。

3
Tom O'Connor

(--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
0
ALex_hha