Iptables:リダイレクトの効果、その制限と範囲について少し


このノートでは、iptablesでのREDIRECTの効果、その制限、および範囲について説明します。

iptablesとリダイレクト


REDIRECTアクションは、ホストを離れることなく 、同じシステム内で1セットのポートから別のポートにパケットをリダイレクトするように設計されています

REDIRECTは、natテーブルのPREROUTINGおよびOUTPUTチェーンでのみ機能します。 したがって、スコープは1つのポートから別のポートへのリダイレクトにのみ縮小されます。 ほとんどの場合、これは、ローカルネットワークのクライアントがポート80に接続し、ゲートウェイがパケットをローカルプロキシポートにリダイレクトするときに、透過プロキシに使用されます。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128 

ケース


デーモンの設定を変更せずに、iptablesを使用してリダイレクトすることによってのみアプリケーションポートを変更する必要があるとします。 新しいポートを5555、アプリケーションポート22とします。したがって、ポート5555から22にリダイレクトする必要があります。

リダイレクトおよびリモートクライアント


最初のステップは明白であり、上記の例と同じです。

 iptables -t nat -A PREROUTING -p tcp --dport 5555 -j REDIRECT --to-port 22 

ただし、ルールは外部クライアントに対してのみ機能し、アプリケーションポートが開いている場合にのみ機能します。

リダイレクトおよびローカルクライアント


iptablesを使用したホスト自体の以前のルールは機能しません。 localhostを含むパケットは、natテーブルに分類されません。 ケースをローカルマシンで動作させるには、natテーブルのOUTPUTチェーンにリダイレクトを追加する必要があります。

 iptables -t nat -A OUTPUT -p tcp -s 127.0.0.1 --dport 5555 -j REDIRECT --to-ports 22 

これで、ローカルクライアントもポート5555経由で接続できます。

リダイレクトおよびプライベートポート


この場合の意味は、左ポートを使用し、アプリケーションポートを閉じたままにすることですが、ポート22のINPUTチェーンでDROPルールを実行すると、5555も応答を停止します。 実際、トリックはINPUTチェーンでアプリケーションポートを開き、マングルでドロップすることです。

 iptables -t mangle -A PREROUTING -p tcp --dport 22 -j DROP 

ルールの完全なセット


アプリケーションポートが閉じられている場合、ネットワークおよびローカルアクセスでリダイレクトします。

 iptables -t nat -A PREROUTING -p tcp --dport 5555 -j REDIRECT --to-port 22 iptables -t nat -A OUTPUT -p tcp -s 127.0.0.1 --dport 5555 -j REDIRECT --to-ports 22 iptables -A INPUT -p tcp --dport 5555 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -t mangle -A PREROUTING -p tcp --dport 22 -j DROP iptables -P INPUT DROP 

Source: https://habr.com/ru/post/J324276/


All Articles