LANアドレスをローカルにシミュレートする方法は?

LANアドレスをローカルにシミュレートする方法は?

私はこのような状況に直面しました。ソフトウェアの一部がハードコーディングされたIPアドレス(例:196.10.10.100:20000)を取得し、ソケットをバインドし、TCPおよびUDPトラフィックを196.10.10.9:20000(またハードコーディング済み)に送信しました。問題は、システムが正しく機能するためには、ソフトウェアの複数のインスタンスが異なるホストに存在する必要があることです。ソフトウェアを修正する機会はありません。

元の設定は、第1のLANのMACを第2のLANのMACにマッピングする一種の非RFC準拠ネットワークハードウェアを含んでいた。追加のネットワークハードウェアなしでクライアントの各インスタンスとサーバーのホストのみをシミュレートする必要があります。パケットを受け入れ、各インスタンスに対して別々のNICを使用して応答し、IPアドレスが任意のサブネットにあると予想する(新しい)サーバーソフトウェアがあります。

サーバー部分には問題がないようですが、同じIPを持つホストをサーバーに接続する方法ができました。システムソフトウェアを使用して解決すると問題はないようですが、クライアントホストから必要なIPにインターフェイスをエミュレートし、トラフィックをサーバーにリダイレクトしてサーバーからクライアントソフトウェアにトラフィックを送信する方法がわかりません(予想されるものはありません)196.10。 10.9) から出ます。 iptablesが利用できると聞きましたが、iptablesについて私が知っているのはパケットフィルタリング\ NATソフトウェアだけです。私にこのアドバイスをする人は私よりはるかに知識がないので、私はこのアドバイスに懐疑的かもしれません。部分的なソリューションがあり、DMZがなく、トラフィックを正しいIPにリダイレクトします。

ip netns add vn
ip link add v-eth0 type veth peer name v-local
ip link set v-local netns vn

ip addr add 196.10.10.1/24 dev v-eth0
ip netns exec vn ip addr add 196.10.10.100/24 dev v-local
ip link set v-eth0 up
ip netns exec vn ip link set v-local up

ip netns exec vn ip route add default via 196.10.10.1
echo 1 > /sys/net/ipv4/ip_forward
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 196.10.10.0/255.255.255.0 -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o v-eth0 -j ACCEPT
iptables -A FORWARD -o eth0 -i v-eth0 -j ACCEPT

この設定では、ネームスペースコンテナのプロセスは物理ネットワークにアクセスできますが、必要なリダイレクトは許可されません。 eth0のIPアドレスが196.10.20.100で、サーバーのIPアドレスが196.10.20.9であるとします。上記のスクリプトをどのように修正するのですか?

1) 196.10.10.100 から 196.10.10.9 にパケットをリダイレクトして 196.10.20.9 に送信します。

2)196.10.20.100で受信したパケットを10.10.10.100にリダイレクトしますか?

ベストアンサー1

おすすめ記事