ローカル Web アプリケーションへのリバース プロキシの場合、iptables によってどのポートを開く必要がありますか?

ローカル Web アプリケーションへのリバース プロキシの場合、iptables によってどのポートを開く必要がありますか?

Tomcat アプリケーションにリバース プロキシ (nginx または apache) を使用したいと考えています。リバース プロキシからポート 80、443 を Tomcat ポート 8080、8443 にリダイレクトしたいと考えています。リバース プロキシを設定した後、受信と送信用にどのポートを開く必要がありますか?

そうですか?iptables 受信: ポート 80、443 を開きます。iptables 送信: ポート 8080、8443 を開きます。

敬具

黒ひげ

答え1

TCP接続は常に2人(それ以上ではない)の参加者間で行われます。各参加者はIPアドレスで識別されます。そしてポート。したがって、実際には、リバース プロキシを使用する場合、次のようになります。

  • クライアント<client_IP>:<random_port>との接続nginx <server_public_IP>:80物理インターフェースを介して。
  • 間のつながりnginx 127.0.0.1:80そしてトムキャット 127.0.0.1:8080を通ってループバックインターフェース

ファイアウォールがループバックインターフェース上の通信をブロックする理由はありません。したがって、次のトラフィックの受信を許可する必要があります。行き先ポート80443送信トラフィックソースポート80443

しかし、通常、送信トラフィックはないブロック (ポリシーACCEPT) するには、次の iptables ルールだけが必要です。

iptables -A INPUT -i lo -j ACCEPT # loopback interface
# don't block existing traffic
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 -m comment nginx -j ACCEPT
# Probably you want to allow ssh
iptables -A INPUT -p tcp --dport 22 -m comment SSH -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

追伸: 実行することもできますトムキャットポートに直接接続し80443同じファイアウォール ルールを使用します。

関連情報