仮想インターフェースを介してIPをルーティングする

仮想インターフェースを介してIPをルーティングする

Linux では、特定の IP へのすべてのリクエストを仮想インターフェイス経由でルーティングし、反対側ではホストのメインとは異なる IP アドレスで表示されるようにすることは可能ですか? のeth0IP アドレスが 1.1.1.1 で、 のeth0:1アドレスが 1.1.1.2 であるとします。1.2.3.4 へのすべてのリクエストが からのものであるように表示するにはどうすればよいでしょうかeth0:1? 次のことを試していますが、うまくいかないようです。

route add 1.2.3.4 dev eth0:1

答え1

はい。

これを実現する方法の1つは、IPTABLESを使用して、複数のIPアドレスを持つマシンから送信されるパケットを、仮想インターフェースから送信されたパケットとして書き換えることです。

/sbin/iptables -t nat -I POSTROUTING -d DEST.IP -j SNAT --to VIRTUAL.IP

(もちろん、仮想 IP を想定どおりに設定する必要があります。つまり、トラフィックがマシンに戻ることができるように、eth0:1 または同等のものが存在する必要があります)

答え2

コマンドを使用する必要があるかもしれません

ip route add 1.2.3.4 dev eth0:1 src 1.1.1.2

または同様のオプションでルートします。期待どおりに動作しない場合は、高度なルーティングが必要になる可能性があります。/etc/iproute2/rt_tables にこのターゲット用の追加のルーティング テーブルを作成し、上記のエントリをこのテーブルに 1 つだけ追加して、このテーブルをアクティブにします。

ip rule add to 1.2.3.4 priority 100 table to__1_2_3_4
ip route flush cache

最後の手段となる解決策は netfilter です。POSTROUTING チェーンで iptables と SNAT を使用して、この宛先へのパケットの送信元アドレスを書き換えることができます。

関連情報