web-dev-qa-db-ja.com

ローカル接続用のiptables

「サーバーA」では、ポート1445でサービスを実行しています。「サーバーB」は、次のルールを介してポート445で「サーバーA」に接続できます。

iptables -t nat -A PREROUTING -d www.kunde.de -p tcp -m tcp --dport 445 -j REDIRECT --to-ports 1445

これは、「サーバーA」で開始された接続、つまりローカル接続では機能しません。私に何ができる?

5
user27451

iptables -t nat -A OUTPUT -d www.kunde.de -p tcp -m tcp --dport 445 -j REDIRECT --to-ports 1445

ローカルで発信されたパケットは、PREROUTINGではなくOUTPUTを通過するためです。

7
shylent

いくつかのマニュアルとドキュメントをよく読んでください。

とにかく簡単なチェーンの説明:

* “PREROUTING”: Packets will enter this chain before a routing decision is made.
* “INPUT”: Packet is going to be locally delivered. (N.B.: It does not have anything to do with processes having a socket open. Local delivery is controlled by the “local-delivery” routing table: `ip route show table local`.)
* “FORWARD”: All packets that have been routed and were not for local delivery will traverse this chain.
* “OUTPUT”: Packets sent from the machine itself will be visiting this chain.
* “POSTROUTING”: Routing decision has been made. Packets enter this chain just before handing them off to the hardware.

そしてここを見てください:

Netfilterパケットフロー

ウィキペディア

0
TiFFolk

lxcまたはその他の仮想化テクノロジーを使用している場合は、すべてのトラフィックをポート445からコンテナーの1455にリダイレクトします。

サーバーAのローカルリクエストはPREROUTINGを渡しません。その理由は以前に取り上げられました。ローカルトラフィックはnat tableにアクセスしませんが、以前にDNATを使用した場合、サーバーAへの外部トラフィックに対してのみ機能します。REDIRECTはポートフォワードに対してのみ機能し、DNAT

0
dawncold