Linuxサーバにアクセスできないとき、まず多くの人が試すのが ping
コマンドです。
ping example.com
これで応答が返ってくれば「ネットワークは生きている」と安心しますが、実際にブラウザでアクセスすると「接続できません」「タイムアウト」となることがあります。
この記事では、ping は通るのにブラウザでアクセスできない原因と、その確認方法を解説します。
目次
1. ping と HTTP/HTTPS の違い
まず大前提として、ping
とブラウザアクセスは使っているプロトコルが異なります。
ping
は ICMP プロトコルを利用(ポート番号を使わない)- ブラウザアクセスは TCP 80番(HTTP)、443番(HTTPS)を利用
つまり ping が通る = ネットワーク到達性がある だけで、Webサービスが利用可能とは限りません。
2. 考えられる原因と確認ポイント
(1) Webサーバが起動していない
- Nginx や Apache などのWebサーバがダウンしている場合、pingは通ってもブラウザでは接続できません。
確認方法:
systemctl status nginx
systemctl status httpd
対処方法:
sudo systemctl start nginx
sudo systemctl enable nginx
(2) ファイアウォール設定
サーバ側で HTTP/HTTPS ポートが開放されていない場合もアクセスできません。
確認方法:
sudo firewall-cmd --list-all
対処方法:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
(3) SELinux の制約
SELinux が有効な環境では、正しく設定されていないとWebアクセスがブロックされることがあります。
確認方法:
getenforce
対処方法(一時的に無効化):
sudo setenforce 0
恒久的な調整はポリシーの追加や semanage
コマンドを使用します。
(4) DNS解決の問題
ping が IP アドレスで成功しても、ドメイン名解決に失敗してブラウザでは表示できないことがあります。
確認方法:
nslookup example.com
dig example.com
(5) プロキシやネットワーク制限
- 社内ネットワークでは、ブラウザ通信がプロキシサーバを経由していないと外部サイトに接続できない場合があります。
- ICMP(ping)は通過しても、HTTP/HTTPS はブロックされるケースもあります。
確認方法:
- ブラウザのプロキシ設定を確認
curl -v http://example.com
で直接HTTPリクエストを確認
3. まとめ
- ping が通る = ネットワーク疎通がある だけで、Webアクセスが保証されるわけではない
- サービス停止、ポート未開放、SELinux、DNS、プロキシなど複数の要因が考えられる
- トラブルシューティングは以下の順で行うのがおすすめです
- Webサーバの状態確認
- ファイアウォールとSELinux確認
- DNS解決確認
- ネットワーク制約・プロキシ確認
🔎 実務では「ping は通るのにブラウザでは開けない」という相談は頻出します。
単なるサービス停止から、企業ネットワーク特有の制約まで幅広い原因があるため、体系的に切り分けることが解決への近道です。