Centos 7でfirewalldを使用しています。
443が開くようにfirewalldを構成しました。
$ Sudo firewall-cmd --zone=public --permanent --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: couchdb2 dhcpv6-client http https ssh
ports: 443/tcp 5984/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
$ Sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
Warning: ALREADY_ENABLED: 443:tcp
success
どうやらポート443は開いていますが...
$ curl https://127.0.0.1:443
curl: (7) Failed connect to 127.0.0.1:443; Connection refused
http://www.yougetsignal.com/tools/open-ports/ のWebツールを使用してテストします
IPアドレスとポート443を入力して取得:Closedポート443が{my-ip}で閉じられています
何がうまくいかないのでしょうか?開いているようですが、開きません。
この結果でnetstatをクエリします。
$ Sudo netstat -lnp | grep 443
udp 0 0 127.0.0.1:323 0.0.0.0:*
443/chronyd
udp6 0 0 ::1:323 :::*
443/chronyd
Nginx.confを修正して443を適切にリッスンすると、結果は次のようになります。
$ Sudo netstat -lnp | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:*
LISTEN 10197/nginx: master
tcp6 0 0 :::443 :::*
LISTEN 10197/nginx: master
udp 0 0 127.0.0.1:323 0.0.0.0:*
443/chronyd
udp6 0 0 ::1:323 :::*
443/chronyd
エラー接続が拒否されましたは通常、ファイアウォールがパケットの通過を許可したことを意味します(ファイアウォールが接続試行を積極的に拒否しない限り)が、宛先のポート番号で待機しているサービスはありません。
この場合、HTTPs Webサーバーが実行中でポート443をリッスンしていることを確認する必要があります。次のコマンドを使用して確認できます。
Sudo netstat -lnp | grep 443
編集: @Paulによるコメントのように、表示される出力は、ポート443でリッスンしているプロセスがないことを意味します。プロセスIDが443と一致し、ポート番号TCPプロトコル。次のような行を見つける必要があります。
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN <pid>/<proc_name>
--permanent
でルールを追加した後、firewalld
を再ロードする必要があります。そうしないと、--permanent
なしでコマンドを再実行する必要があります。
--permanent
と言うと、firewalldは設定を更新するだけで、再読み込みしません。