私が達成しようとしていること:
(1) iptables の使用 (2) イーサネット インターフェイス (3) ループバック インターフェイス (1 台のマシンのみを使用) によるすべての NAT シナリオ (フル コーン、ポート制限など) のテスト/構成
次の構成をセットアップします。
Linux BOX で 1 つの VM を実行しており、次の構成を実行しています。
Linux ボックスの IP は次のとおりです。192.168.0.4
Linux ボックス仮想ボックスゲートウェイ IP は次のとおりです。192.168.56.1
Linux ボックス192.168.56.1
の (プライマリ) および(セカンダリ) でStun Server Binded を実行する192.168.0.4
の VM で Stun Client を実行し (上記の Linux サーバーで実行)、127.0.0.1:2000
iptables ルールを構成して、ループバック インターフェイス トラフィックをイーサネット インターフェイス ( 192.168.56.102
) に、またはその逆に転送します。
期待される結果
ホスト上で実行されている STUN サーバーと VM 上で実行されている Stun クライアントの iptables/ethernet/loopback インターフェイスを介して、各 NAT シミュレーションを構成できるはずであり、NAT のタイプを通知する必要があります。
実結果
iptablesは、ループバック インターフェイス ソケットに出入りするパケットを処理せずに、次のエラーで失敗します: "エラー 22 無効な引数" ソケットがバインドされて127.0.0.1:2000
おり、宛先アドレスが次のとおりであるため192.168.56.1
要するに以下を参照してください
[Loopback-Interface(127.0.0.1 :2000 / *Running STUN Client*/ VM) -->[*IPTABLES RULES TO/FROM*] <-- Ethernet-Interface(VM -- 192.168.56.102:2000) ==>|| ==> HOST(Gateway - 192.168.56.1:3478 - *Running STUN Server*)] ::
例 ルール ::
sudo iptables -t nat -A POSTROUTING -o eth0 -p udp --source 127.0.0.1 --sport 2000 -j SNAT --to-source 192.168.56.102
sudo iptables -t nat -A POSTROUTING -o eth0 -p tcp --source 127.0.0.1 --sport 2001 -j SNAT --to-source 192.168.56.102
sudo iptables -t nat -A PREROUTING -i eth0 -p udp --destination 192.168.56.102 --dport 2000 -j DNAT --to-destination 127.0.0.1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --destination 192.168.56.102 --dport 2000 -j DNAT --to-destination 127.0.0.1
iptables がループバック インターフェイスからパケットを選択しないようです
これについて助けてくれる機関があれば教えてください。