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
      
      






All Articles