UBuntuサーバーで次のリッスンするPORT:IPをセットアップしています。
12.345.67.890:3636
それは完全にリクエストを受信しますが、そのIP:PORTへのリクエストを別のIP:PORTに転送したいと思います。
09.876.54.321:3636
基本的に、12.345.67.890:3636 -> 09.876.54.321:3636
を転送するリクエストを行いたいです。
どうすればターミナルでそれを実行できますか?また、元に戻したい場合はどうすればそれを実行できますか?データが転送され、適切にセットアップされていることをテストする方法もありますか?
ありがとう!
編集:私はそれをテストする方法とそれを無効にする方法を疑問に思うだけで、次のようにすることができますか?
sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 3636 -j DNAT --to-destination 09.876.54.321:3636
iptables -t nat -A POSTROUTING -j MASQUERADE
質問のコマンドは、ルーティングと転送を有効にするのに十分です12.345.67.890:3636 to 9.876.54.321:3636。
IptablesのLOGターゲットを使用して、何が起こっているかを監視します。
iptables -I FORWARD -j LOG
/ var/log/syslogに次のようなものが表示されるはずです。
Aug 19 08:43:23 hostname kernel: [190951.964227] IN=eth0 OUT=eth0 SRC=11.22.33.44 DST=09.876.54.321 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=51600 DF PROTO=TCP SPT=41960 DPT=3636 WINDOW=246 RES=0x00 ACK URGP=0
Iptablesルールをフラッシュして、すべてをクリーンアップします。
iptables -F
ポートルーティング機能の削除に関しては、転送をオフにする回答はありませんでした(Ubuntu 18.04.2で実験的に検証)。
クレジット:@ DT.DTDGによる質問は非常に正確に述べられています、ありがとう。この質問と@Ericの回答は、何かを解決するのに役立ちました、ありがとう!そして、このトピックの研究をさらに進めたので、その知識をコミュニティと共有したいと思います。
ルーティングルールをクリーンアップするには、NATルーティングテーブル(Network Addres Translationテーブル)からそれらを削除する必要があります。あなたはそれによってこれを達成します:
iptables -F -t nat
それ以外の場合:「-t nat」パラメーターを忘れた場合、質問に記載されているルールは引き続き機能します(Ubuntu 18.04.2など)。
さらに、カーネルパラメーターには個別のコマンドが必要です。すべてをクリーンアップする場合は、次も行う必要があります。
sysctl net.ipv4.ip_forward=0
一般的に 有効にしないことを強くお勧めします インターフェース間でのパケットの転送ルーターではないシステムの場合、セキュリティ上の理由からです。
すべてのアクションには通常、エスカレートされた特権が必要です。Sudo
を前に付けて実行するか、「root」として実行します。
Ad-acta。ルーティングを構成するコマンド:
CUR_PORT =現在のマシンポート
DES_IP =宛先マシンのIPアドレス
DES_PORT =宛先マシンのポート
sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport CUR_PORT -j DNAT --to-destination DES_IP:DES_PORT
iptables -t nat -A POSTROUTING -j MASQUERADE