web-dev-qa-db-ja.com

IP / PORT要求を別のサーバーに転送します

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
6
DT.DTDG

質問のコマンドは、ルーティングと転送を有効にするのに十分です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
  • SRC:送信元IPアドレス
  • DST:宛先IPアドレス
  • SPT:送信元ポート
  • DPT:宛先ポート

Iptablesルールをフラッシュして、すべてをクリーンアップします。

iptables -F
3
Eric Carvalho

ポート転送を無効にする

ポートルーティング機能の削除に関しては、転送をオフにする回答はありませんでした(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

一般的に 有効にしないことを強くお勧めします インターフェース間でのパケットの転送ルーターではないシステムの場合、セキュリティ上の理由からです。

付録

  1. すべてのアクションには通常、エスカレートされた特権が必要です。Sudoを前に付けて実行するか、「root」として実行します。

  2. 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
0