AWS AMI Centos サーバーに、インターネット ゲートウェイ付きの eth0 10.0.0.1 と、パブリック IP 経由の NAT ゲートウェイ付きの eth1 10.10.0.1 の 2 つのサブネットを持つ VPC を展開しました。問題は、NAT ゲートウェイのパブリック IP をクライアントに提供して、そのサブネットでデータをプッシュできるようにしたことです。同じサーバーに接続するクライアントが複数あり、どのサブネットから IP がデータをプッシュするかを定義するルートを追加したくありません。デフォルトを変更したい、つまり、すべての送信トラフィックを eth1 サブネットから変更したいのです。これまでのところ、iptables を試し、ネットワーク スクリプトでゲートウェイを変更しました。詳細については、以下を確認してください。
/etc/sysctl.conf
net.ipv4.ip_forward =1
sysctl net.ipv4.ip_forward = 1
sudo iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE
sudo iptables -A FORWARD --in-interface eth0 -j ACCEPT
これにより、クライアントが eth1 サブネットへの接続を開いているため、クライアント IP に ping または telnet を実行できませんが、eth0 から eth1 にトラフィックを転送すると、送信元アドレスは変更されず、クライアント ネットワークに不明な eth0 サブネット IP が使用されます。
デフォルトのeth1を変更しようとした
**/etc/sysconfig/network
GATEWAY=x.x.x.x
GATEWAYDEV=eth1**
ここでは、着信トラフィックも eth1 に変更され、すべてのトラフィックがブロックされます。
私の要件は、受信トラフィックが eth0 サブネット 10.0.0.1 から来て、送信トラフィックが eth1 サブネット 10.10.0.1 から来ることです。ルートを追加するとプロセスがさらに忙しくなるので、すべてを実行する 1 つのコマンドまたはスクリプトを追加して自動化したいと考えています。
答え1
これは私には意味が分かりません...しかし...
私の要件は、受信トラフィックが eth0 サブネット 10.0.0.1 から来て、送信トラフィックが eth1 サブネット 10.10.0.1 から来ることです。ルートを追加するとプロセスがさらに忙しくなるので、すべてを実行する 1 つのコマンドまたはスクリプトを追加して自動化したいと考えています。
ボックスは、ネットワーク トラフィックがどの NIC から来るかを制御しません。トラフィックは NIC に到着し、ボックスがそれを処理します... そのため、トラフィックがどの NIC から到着したかをマスクしようとすると、無駄な作業になります...
ただし、どの NIC にトラフィックを送信するかをボックスに指示することはできます (別の NIC 経由で確立された TCP 接続にトラフィックを送信していない場合)。つまり、トラフィックが問題のボックスから発信された場合です。
これをする;
/etc/sysconfig/ネットワークスクリプト/ルート-eth0
default via 10.10.0.1 dev eth1
iptables は NIC 間でトラフィックを移動するためのものではなく、静的 IP には MASQUERADE ではなく DNAT / SNAT を使用します。
質問が不明瞭なようですので、質問を再構成するか明確にしてください...