Angular2プロジェクトを提供するFedora 24サーバーがあります。サービスが開始されると、3000
Angular2は自動的にポートを開きます。3001
ただし、実行するとnmap localhost
ポートが開いているように見えますが、リモートシステムでnmapを実行するとポートが閉じたように見えます。
iptables
たぶんこのポートを公に開くことができる設定はありますか?それともそういうこと?
私は実行しようとしています:
iptables -A OUTPUT -p tcp -m tcp --dport 3000 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 3001 -j ACCEPT
しかし、これは役に立ちません。外部からスキャンすると、ポートは閉じたままになり、提供されたコンテンツを見ることができません(内部要求は正常に機能します)。
出力netstat --an | egrep "3000|3001"
:
tcp6 0 0 :::3000 :::* LISTEN
tcp6 0 0 :::3001 :::* LISTEN`
curl
サーバーの「外部」IPアドレスは内部的にはうまく機能しますが、他のシステムで実行している場合は機能しません。
答え1
最終的な解決策は、次のコマンドを実行することです。
firewall-cmd --zone=FedoraServer --add-port=3000/tcp
Linodesに設定されているFedora 24またはFedora 24では、iptablesにTCPエントリがないようです。
答え2
説明によると、問題は、サーバーのファイアウォールがAngular開発ポートに着信する要求をブロックしているようです。ファイアウォールの構成は非常に単純な場合も非常に複雑な場合もあります。注意して実行している作業が何であるかを確認してください。
つまり、最も可能性の高い解決策は、正しく想定したようにファイアウォールでポートを開くことです。クライアントがそれを使用するには、着信および発信トラフィックを許可する必要があります。アウトバウンドトラフィックは通常フィルタリングされないため、そのままにすることができます。機能するようにiptablesコマンドをOUTPUT
変更するだけです。INPUT
これがうまくいかない場合(または上記の方法を試す前に良い)、出力を見て、追加したいルールに似たルールがあることをiptables -nvL --line-numbers
確認してください。ルールに違反するリスクを最小限に抑えるには、上または下にルールを挿入してください。
以下は、私が意味するものの例を提供するために使用しているマシンの出力です。
Chain INPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 5608K 815M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
2 3010K 621M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
3 68754 3002K DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
4 14095 1083K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
5 397K 21M TCP tcp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW
6 45083 8704K UDP udp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW
7 128K 6265K REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset
8 45085 8707K REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
9 1 52 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable
Chain FORWARD (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 4647K packets, 1421M bytes)
num pkts bytes target prot opt in out source destination
Chain TCP (1 references)
num pkts bytes target prot opt in out source destination
1 56599 3172K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 54495 2814K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 158K 9164K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
Chain UDP (1 references)
num pkts bytes target prot opt in out source destination
これはまだ非常に簡単ですが、INPUT
チェーンに新しいルールを追加するだけでは役に立ちません。必要なものと同様のルールがTCP
チェーンにあるので、ここにルールを追加します。
iptables -A TCP -p tcp --dport 3000 -j ACCEPT
それでも問題が解決しない場合は、外部コンピュータがIPv6を使用してサーバーにアクセスしていることを確認し、それに応じてip6tables
使用してください。