私のワークステーションとサーバーは両方とも同じ LAN セグメント上にあり、相互に ping を実行できます (また、ワークステーションからサーバーに問題なく ssh で接続できます)。
CentOS 7 に Apache をデフォルトインストールしました。
サービスを開始しましたが、ワークステーションから Web サーバーを参照できません。
nmap レポート ポート 80 はフィルタリングされます。
サーバーで SELinux を無効にしましたが、ポートはまだフィルタリングされています。
netstat -l の結果は次のとおりです:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp6 0 0 [::]:http [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
raw6 0 0 [::]:ipv6-icmp [::]:* 7
奇妙なことに、netstat -na はポート 80 がリッスン中であると表示しますが、これは IPv6 の場合です (ただし、どこかで読んだところによると、これは必ずしも IPv4 でもリッスンしていないことを意味するわけではありません)。
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 64 10.1.1.1:22 10.2.2.2:44939 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
raw6 0 0 :::58 :::* 7
以下は私の /etc/httpd/conf/httpd.conf の関連部分です(変更していません)
<Directory />
AllowOverride none
Require all denied
</Directory>
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Files ".ht*">
Require all denied
</Files>
サービスは正常に動作しているようです:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since Fri 2015-10-02 08:36:40 EDT; 1h 27min ago
Process: 23294 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 23302 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─23302 /usr/sbin/httpd -DFOREGROUND
├─23303 /usr/sbin/httpd -DFOREGROUND
├─23304 /usr/sbin/httpd -DFOREGROUND
├─23305 /usr/sbin/httpd -DFOREGROUND
├─23306 /usr/sbin/httpd -DFOREGROUND
└─23307 /usr/sbin/httpd -DFOREGROUND
なぜポート 80 でリッスンしないのですか?
答え1
Michael Hampton さんがあなたの投稿にコメントしたように、ファイアウォール (iptables) がトラフィックをブロックしていると思われます。
無効にするか ( systemctl disable firewalld
)、ポート 80 のトラフィックを許可するように指示します ( firewall-cmd --zone=public --add-port=80/tcp --permanent
)。
答え2
ポート 80 がフィルタリングされているかどうかは、netstat 出力には関係ありません。iptables がそのポートへの接続をブロック (DROP または REJECT) するように設定されている場合でも、Apache がポート 80 をリッスンしていることがわかります。
重要なのは、httpd が IPv4 と IPv6 の両方の ANY アドレス (0.0.0.0 と ::) をリッスンするように設定されており、その場合、netstat は IPv6 のものだけを表示することです。説明は次のとおりです。
https://bugs.launchpad.net/ubuntu/+source/net-tools/+bug/657270
つまり、その場合、IPv6 接続は両方のプロトコルに対応できるため、1 つのソケットのみが開かれます。また、1 つのソケットのみが開かれているため、netstat 出力には 1 つのソケットのみが表示されます。
答え3
iptables ルール ( iptables-save
) を確認し、ポート 80 が許可されているかどうかを確認します。
service iptables stop
テスト目的では、または を実行できますiptables -F
。