iptables - 宛先がドメインの場合に別の発信IPを使用する

iptables - 宛先がドメインの場合に別の発信IPを使用する

2つのIPを持つ仮想マシンがあります。 1.2.3.4 と 4.3.2.1 を想定します。

「ip a」を実行すると、最初に1.2.3.4が表示され、2番目に4.3.2.1が表示されます。

2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default
    link/void
    inet 127.0.0.1/32 scope host venet0
       valid_lft forever preferred_lft forever
    inet 1.2.3.4/24 brd 1.2.3.255 scope global venet0:0
       valid_lft forever preferred_lft forever
    inet 4.3.2.1/24 brd 4.3.2.255 scope global venet0:1
       valid_lft forever preferred_lft forever

私の考えでは、Linuxは常に最初のIPを使用してターゲットに接続しようとしています。何かをpingすると見ることができ、4.3.2.1の代わりに1.2.3.4を使用すると(ping - I 4.3 .2.1ターゲット)。

私が使用しているアプリケーションは、pingやTracerouteなどの他のインターフェースや送信元IPアドレスを使用できません。したがって、私のVMがDestination1.com(IP以外のドメイン名)にアクセスするには、1.2.3.4ではなく4.3.2.1をソースIPとして使用する必要があります。なぜなら、Destination1.comとは異なる関係があるからです。良い接続。

私のVMがDestination2.comにアクセスするには、ソースIPとして4.3.2.1ではなく1.2.3.4を使用する必要があります。これは、1.2.3.4が4.3.2.1よりもDestination2.comによく接続されているためです。

このようなiptablesを使用してトラフィックを再ルーティング/転送できますか?それではどうですか?

ベストアンサー1

1 つの NIC に 2 つの IP アドレスが割り当てられているため、現在の設定は機能しません。仮想マシンをルーター(またはゲートウェイ)に切り替える必要があります。したがって、異なるサブネットに固有のIPアドレスを持つネットワークインターフェイスカードを複数の仮想マシンに割り当てる必要があります。 (ビネット0= 1.2.3.4/24とwenet1=例:4.3.2.1/24)

まず、Linux VMでIP転送を有効にします。

$ sudo echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
$ sudo sysctl -p

ルーティングテーブルはネットワーク層で動作します。したがって、この場合、ホスト名は適用されません。まず、ターゲットホスト名をIPアドレスまたはサブネットの範囲に変換する必要があります。ドメインがスコープdestination1.comを所有し172.16.10.0/24、すべてのトラフィックがインターフェイスを介して終了する必要があるとします。ビネット0:

$ sudo ip route add 172.16.10.0/24 dev venet0

ドメインはスコープdestination2.comを所有し、トラフィックはインターフェイスを介して192.168.20.0/24終了する必要がありますが、wenet1

$ sudo ip route add 192.168.20.0/24 dev venet1

構成に満足している場合は、次の点を考慮してください。継続的なルーティング

おすすめ記事