Linuxでインターネット接続を確認する方法|ping・curl・routeで原因切り分け!

Linux

Linuxサーバや開発環境で「このマシンちゃんとインターネットに繋がってるの?」と確認したい場面は多いですよね。

特にリモート環境やクラウドサーバでは、設定ミスやファイアウォールが原因で接続できないこともあります。

この記事では:

  • Linuxでインターネット接続を確認する基本コマンド
  • DNS、ルーティング、ファイアウォールの問題を体系的に調べる方法
  • ネットワークトラブルを効率的に切り分けるステップ
  • 具体的な設定確認と修復テクニック

をわかりやすく解説します。これを読めば、サクッとネットワーク状況を把握し、問題を迅速に解決できるようになりますよ!

スポンサーリンク

インターネット接続確認の基本アプローチ

段階的な確認手順

ネットワークトラブルの原因を効率的に特定するため、以下の順序で確認することが重要です:

  1. 物理層・データリンク層:ネットワークインターフェースの状態
  2. ネットワーク層:IPアドレス設定とルーティング
  3. インターネット層:外部サーバとの疎通
  4. DNS層:名前解決の動作
  5. アプリケーション層:HTTPなどの具体的なサービス

OSI参照モデルに基づく診断

この段階的アプローチにより、問題の発生箇所を効率的に特定し、無駄な作業を避けることができます。

基本的な接続確認コマンド

pingによる基本的な疎通確認

IPアドレスでの接続テスト

最も基本的な確認

ping -c 4 8.8.8.8

コマンドの詳細説明

  • 8.8.8.8:Googleのパブリック DNS サーバー(信頼性が高い)
  • -c 4:4回送信して終了(-cなしだと無限に送信)

正常時の出力例

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=15.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=14.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=15.1 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=119 time=14.9 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss
time 3005ms
rtt min/avg/max/mdev = 14.8/15.0/15.2/0.2 ms

この結果から分かること:

  • packet loss 0%:パケットロスなし=接続良好
  • time:応答時間(一般的に50ms以下が良好)
  • ttl:Time To Live(経由ルーター数の目安)

複数のテスト先での確認

異なるサーバーでのテスト

ping -c 3 8.8.8.8        # Google DNS
ping -c 3 1.1.1.1        # Cloudflare DNS  
ping -c 3 208.67.222.222 # OpenDNS

複数のサーバーでテストすることで、特定のサーバーの問題なのか、自分の接続の問題なのかを判別できます。

DNS名前解決の確認

ドメイン名での接続テスト

名前解決を含むテスト

ping -c 4 google.com

成功時の出力例

PING google.com (142.250.207.14) 56(84) bytes of data.
64 bytes from nrt20s02-in-f14.1e100.net (142.250.207.14): icmp_seq=1 ttl=119 time=15.3 ms

失敗時の出力例

ping: google.com: Name or service not known

この場合、DNS設定に問題があります。

DNS専用確認コマンド

nslookupを使用

nslookup google.com

digを使用(より詳細)

dig google.com

hostコマンドを使用

host google.com

より高度な接続確認

curlによるHTTP/HTTPS接続確認

基本的なHTTP接続テスト

curl -I http://www.google.com

HTTPS接続テスト

curl -I https://www.google.com

詳細な接続情報を表示

curl -v https://www.google.com

成功時の出力例

HTTP/2 200 
date: Wed, 01 Jul 2025 12:00:00 GMT
expires: -1
cache-control: private, max-age=0
content-type: text/html; charset=ISO-8859-1

wgetによる接続確認

ファイルダウンロードテスト

wget --spider https://www.google.com

--spiderオプションにより、実際にはダウンロードせずに接続のみテストします。

ネットワーク設定の詳細確認

インターフェース状態の確認

IPアドレス設定の確認

ip addrコマンド

ip addr show

ifconfigコマンド(従来方式)

ifconfig

確認すべきポイント

  • インターフェースが UP 状態か
  • 適切なIPアドレスが設定されているか
  • サブネットマスクが正しいか

インターフェースの状態確認

リンク状態の確認

ip link show

出力例

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

重要な状態表示:

  • UP:インターフェースがアクティブ
  • LOWER_UP:物理的な接続が確立
  • state UP:リンクが有効

ルーティング設定の確認

デフォルトゲートウェイの確認

ip routeコマンド

ip route

出力例

default via 192.168.1.1 dev eth0 proto dhcp metric 100 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100

routeコマンド(従来方式)

route -n

ルーティングテーブルの詳細確認

全てのルーティングテーブル表示

ip route show table all

特定の宛先への経路確認

ip route get 8.8.8.8

DNS設定の確認と修復

DNS設定ファイルの確認

/etc/resolv.confの確認

現在のDNS設定表示

cat /etc/resolv.conf

正常な設定例

nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com

systemd-resolvedの確認(現代的な方法)

systemd-resolved状態確認

systemd-resolve --status

DNS統計情報の確認

systemd-resolve --statistics

DNS問題のトラブルシューティング

DNS設定の一時的な変更

一時的なDNSサーバー設定

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

注意: この方法は一時的で、再起動やNetworkManager再起動で設定が戻る場合があります。

NetworkManagerでのDNS設定

現在の接続確認

nmcli connection show

DNS設定の変更

sudo nmcli connection modify "接続名" ipv4.dns "8.8.8.8,8.8.4.4"
sudo nmcli connection up "接続名"

高度なネットワーク診断

tracerouteによる経路確認

パケットの経路追跡

基本的なtraceroute

traceroute google.com

出力例

traceroute to google.com (142.250.207.14), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  1.234 ms  1.123 ms  1.098 ms
 2  10.0.0.1 (10.0.0.1)  15.234 ms  15.123 ms  15.098 ms
 3  * * *
 4  142.250.207.14 (142.250.207.14)  25.234 ms  25.123 ms  25.098 ms

mtr(My traceroute)による継続的な監視

リアルタイム監視

mtr google.com

mtrは traceroute + ping を組み合わせたツールで、継続的にパケットロスや遅延を監視できます。

ポート疎通確認

特定ポートの接続確認

netcatを使用

nc -zv google.com 80   # HTTP
nc -zv google.com 443  # HTTPS

telnetを使用

telnet google.com 80

nmap による詳細なポートスキャン

基本的なポートスキャン

nmap -p 80,443 google.com

よく使われるポートのスキャン

nmap google.com

ファイアウォール設定の確認

iptables による確認(従来方式)

現在のルール確認

すべてのルール表示

sudo iptables -L -n -v

特定のチェイン確認

sudo iptables -L OUTPUT -n -v

firewalld による確認(現代的な方式)

firewalld状態確認

サービス状態確認

sudo systemctl status firewalld

アクティブなゾーン確認

sudo firewall-cmd --get-active-zones

許可されているサービス確認

sudo firewall-cmd --list-all

ufw による確認(Ubuntu等)

ufw状態確認

sudo ufw status verbose

体系的なトラブルシューティング手順

ステップ1:基本接続の確認

# 1. インターフェース状態確認
ip addr show

# 2. 基本的な疎通確認
ping -c 4 8.8.8.8

# 3. ローカルネットワーク確認
ping -c 4 $(ip route | grep default | awk '{print $3}')

ステップ2:DNS動作確認

# 1. DNS設定確認
cat /etc/resolv.conf

# 2. 名前解決テスト
nslookup google.com

# 3. ドメイン名でのping
ping -c 4 google.com

ステップ3:アプリケーション層確認

# 1. HTTP接続確認
curl -I http://www.google.com

# 2. HTTPS接続確認
curl -I https://www.google.com

# 3. 詳細な接続情報
curl -v https://www.google.com

ステップ4:経路・セキュリティ確認

# 1. ルーティング確認
ip route
traceroute google.com

# 2. ファイアウォール確認
sudo iptables -L -n
# または
sudo firewall-cmd --list-all

よくある問題と解決方法

問題パターンと対処法

症状考えられる原因確認コマンド対処法
ping 8.8.8.8 失敗物理接続・ルーティングip link, ip routeケーブル確認、ルート設定
IP疎通OK、名前解決NGDNS設定cat /etc/resolv.confDNS設定修正
ping OK、curl NGファイアウォールiptables -Lファイアウォール設定
間欠的な接続断ネットワーク不安定mtr, ping -f回線品質調査

具体的な修復手順

DNS設定の修復

NetworkManager環境での修復

# 現在の設定確認
nmcli connection show

# DNS設定追加
sudo nmcli connection modify "System eth0" ipv4.dns "8.8.8.8,8.8.4.4"
sudo nmcli connection modify "System eth0" ipv4.ignore-auto-dns yes

# 設定適用
sudo nmcli connection up "System eth0"

ルーティング設定の修復

デフォルトルートの追加

# 現在のルート確認
ip route

# デフォルトルート追加
sudo ip route add default via 192.168.1.1

# 永続化(CentOS/RHEL系)
echo "GATEWAY=192.168.1.1" | sudo tee -a /etc/sysconfig/network

ネットワークサービスの再起動

NetworkManager環境

sudo systemctl restart NetworkManager

systemd-networkd環境

sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-resolved

従来のnetworkサービス

sudo systemctl restart network

監視とログ分析

ネットワーク関連ログの確認

journalによるログ確認

NetworkManagerのログ

journalctl -u NetworkManager -f

systemd-resolvedのログ

journalctl -u systemd-resolved -f

従来のログファイル確認

ネットワーク関連ログ

tail -f /var/log/messages | grep -i network

syslogでの確認

tail -f /var/log/syslog | grep -E "(dhcp|network|dns)"

継続的な監視設定

pingによる継続監視

簡単な監視スクリプト

#!/bin/bash
while true; do
    if ping -c 1 8.8.8.8 > /dev/null 2>&1; then
        echo "$(date): Internet connection OK"
    else
        echo "$(date): Internet connection FAILED" >&2
    fi
    sleep 60
done

高度な監視設定

systemdサービスとしての監視

# /etc/systemd/system/network-monitor.service
[Unit]
Description=Network Connectivity Monitor
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/network-monitor.sh
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

まとめ

Linuxでのインターネット接続確認は、体系的なアプローチが効果的です。重要なポイントを整理すると:

基本的な確認手順

  1. 物理層確認ip link showでインターフェース状態
  2. IP疎通確認ping 8.8.8.8で基本接続
  3. DNS確認ping google.comで名前解決
  4. アプリケーション確認curl -IでHTTP/HTTPS接続

効率的なトラブルシューティング

  • 段階的診断:下位層から上位層へ順次確認
  • 複数手法の組み合わせ:ping、curl、traceroute等を使い分け
  • ログ分析:systemdログや従来ログでの詳細調査

常用コマンドセット

基本確認

ip addr show              # インターフェース状態
ip route                  # ルーティング確認
ping -c 4 8.8.8.8        # 基本疎通
ping -c 4 google.com     # DNS動作確認

詳細調査

curl -I https://google.com    # HTTP/HTTPS接続
traceroute google.com         # 経路確認
dig google.com               # DNS詳細確認
ss -tuln                     # ポート使用状況

トラブル対応

sudo systemctl restart NetworkManager    # ネットワーク再起動
sudo iptables -L -n                     # ファイアウォール確認
journalctl -u NetworkManager            # ログ確認

コメント

タイトルとURLをコピーしました