Fedora 24:サーバーからスキャンするときはポートが開いていますが、外部からマッピングするときは閉じています。

Fedora 24:サーバーからスキャンするときはポートが開いていますが、外部からマッピングするときは閉じています。

Angular2プロジェクトを提供するFedora 24サーバーがあります。サービスが開始されると、3000Angular2は自動的にポートを開きます。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使用してください。

関連情報