私のホームネットワークにNATを使用するホームルーターがあります。私のIPには、192.168.0.60
小さなWebアプリケーションを介してポート5000をリッスンするDebian 10マシンがあります。パブリックインターネットからこのポートにアクセスできるようにしたいです。
Debian はcurl localhost:5000
正しい応答を生成します。
私のMacでは192.168.0.55
正しいcurl 192.168.0.60:5000
応答が生成されます。
インターネットに接続するためにルータをポート転送として設定しました5000 -> 192.168.0.60:5000
。
ただし、curl $PUBLIC_IP:5000
外部デバイス(つまりネットワークではなく)で使用すると、何も得られません。https://www.yougetsignal.com/tools/open-ports/また、ポートが閉じます。
私の最初の推測は、これがルータのマイナーなポート転送の問題であるということです。これを排除するために、以下を行いました。
- 私のMacで同じアプリを実行し、5000を聞きます。
- ルーターのポート転送ルールを
5000 -> 192.168.0.55:5000
(マイMac)に変更します。 - 使用されるhttps://www.yougetsignal.com/tools/open-ports/ポートが開いていることを確認する
つまり、これはルータを排除し、犯人をDebianシステムに置くことです。この時点で私は迷子になりました。なぜローカルネットワークではカールできますが、インターネットではカールできませんか?
iptablesの内容は次のとおりです。
root@debian# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
答え1
問題は、iptables-legacy
との間に些細な相互作用があるということだiptables
。クリアしたら、もうiptables-legacy
出勤する時間になりました。