ワークステーションとサーバーの両方が同じ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でリッスンしないのはなぜですか?
Michael Hamptonがあなたの投稿にコメントしているので、ファイアウォール(iptables)がトラフィックをブロックしていると思います。
無効にする(systemctl disable firewalld
)、またはポート80(firewall-cmd --zone=public --add-port=80/tcp --permanent
)。
ポート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/65727
つまり、その場合、IPv6接続は両方のプロトコルに対応できるため、開かれるソケットは1つだけです。また、開いているソケットは1つだけなので、netstatの出力には1つのソケットしか表示されません。