サイトアイコン スグブログ

【Linux】インターネット接続の確認方法!コマンドをご紹介

code

Linuxサーバーインターネット接続の確認方法をまとめます。

Linuxサーバー構築でインターネット接続が出来ない事も多いので、確認のやり方を現役エンジニアの筆者がまとめます。

筆者はWindowsサーバーやLinuxサーバーの運用構築を11年間以上おこなってきました。その経験を元に知識を公開していきます!

Linuxサーバーインターネット接続できなくて困っている人は、確認方法がわかり原因解決する事が可能です。

Linuxサーバーでインターネット接続の確認方法

Linuxサーバーインターネット接続できない要因はいくつかあるので、それぞれを見ていく必要があります。

Linuxサーバーがインターネット接続できない時に見る箇所
  • 疎通が出来ているか、またどこまで通信できているか確認
  • ipが取得出来ているか、設定しているか確認
  • DNSで名前解決が出来ているか確認
  • デフォルトゲートウェイ、またはルーティングがあるか確認
  • MACアドレスを確認する確認

それぞれを見ていきます。

インターネットに疎通が出来ているか、またどこまで通信できているか確認

インターネットに疎通が出来ているかPingで確認

まずはインターネットに疎通出来ているかを、pingコマンドで確認します。

ipアドレスの「8.8.8.8」にPingをしてみます。

ping 8.8.8.8
[root@localhost ~]# ping 8.8.8.8
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=57 time=9.91 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=7.75 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=7.78 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=6.27 ms

疎通できています。

ここで疎通できていない場合は、インターネットまでの経路のどこかで疎通出来ない原因を調査する必要があります。

URLでPingしてみます。

ping www.google.co.jp
[root@localhost ~]# ping www.google.co.jp
PING www.google.co.jp (142.250.76.131) 56(84) bytes of data.
64 bytes from kix07s06-in-f3.1e100.net (142.250.76.131): icmp_seq=1 ttl=57 time=8.88 ms
64 bytes from kix07s06-in-f3.1e100.net (142.250.76.131): icmp_seq=2 ttl=57 time=7.88 ms
64 bytes from kix07s06-in-f3.1e100.net (142.250.76.131): icmp_seq=3 ttl=57 time=10.4 ms
64 bytes from kix07s06-in-f3.1e100.net (142.250.76.131): icmp_seq=4 ttl=57 time=6.85 ms

URLでも疎通できています。

IPアドレスで疎通できるURLで疎通出来ない場合は、DNSの名前解決が出来ていない可能性が大です。

DNSの設定確認は後で確認します。

Pingコマンドのその他のオプションなどは以下の記事でまとめています。

インターネットにどこまで疎通が出来ているかtracerouteで確認

インターネットまでの間の途中経路で通信が途切れる場合があります。

途切れた箇所に問題がある事になります。tracerouteコマンドでどこまで疎通ができているかを確認できます。

traceroute 8.8.8.8

tracerouteコマンドはデフォルトでないかもしれません。ない場合はインストールしておきましょう!

「コマンドが見つかりません」となった場合は、以下の記事を参照して対応してください

[root@localhost ~]# traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  dsldevice.lan (192.168.0.1)  48.017 ms  47.890 ms  47.842 ms
 2  XXXXXXXXXXXXXne.jp (XX.XX.XX.XX)  50.058 ms  56.785 ms  47.734 ms
 3  10.1.193.4 (10.1.193.4)  53.308 ms  53.240 ms 10.1.193.3 (10.1.193.3)  49.778 ms
 4  172.25.26.229 (172.25.26.229)  45.235 ms 172.25.26.225 (172.25.26.225)  47.387 ms  49.544 ms
 5  10.1.15.121 (10.1.15.121)  52.867 ms  52.719 ms 10.1.15.125 (10.1.15.125)  52.654 ms
 6  nfgw3-be4.dj-dc.zaq.ad.jp (61.26.74.166)  49.273 ms  7.560 ms nfgw4-be4.dj-dc.zaq.ad.jp (61.26.74.186)  6.708 ms
 7  220-152-46-46.rev.home.ne.jp (220.152.46.46)  7.400 ms  10.339 ms  10.162 ms
 8  * * *
 9  dns.google (8.8.8.8)  9.890 ms  9.411 ms  9.223 ms

経路が表示されて最終的に疎通できています。

tracerouteのオプションについては、以下の記事で詳しくまとめています。

Linuxサーバーでfirewallが有効でtracerouteを許可していない場合もあります。そんな時はfirewallの設定を確認してください。

ipが取得出来ているか、設定しているか確認する

そもそもLinuxサーバーにIPアドレスの設定がされていない、もしくはDHCPでIP取得出来ていない場合は通信できません。

そこでLinuxサーバーにIPが設定されているか確認します。

LinuxサーバでIPアドレスを確認するコマンド
  • ifconfigコマンド
  • ipコマンド

ifconfigコマンドを実行してみます。

ifconfig
[root@localhost ~]# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.4  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::c3e:9200:96ee:fd26  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:55:14:5d  txqueuelen 1000  (Ethernet)
        RX packets 32317  bytes 42176980 (40.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22597  bytes 1899804 (1.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3  bytes 147 (147.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3  bytes 147 (147.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]#

ipコマンドのaddrオプションを実行します。

ip addr
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:55:14:5d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.4/24 brd 192.168.0.255 scope global noprefixroute dynamic enp0s3
       valid_lft 78121sec preferred_lft 78121sec
    inet6 fe80::c3e:9200:96ee:fd26/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
ip link show dev enp0s3
[root@localhost ~]# ip link show dev enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether MACアドレス brd ff:ff:ff:ff:ff:ff

「state UP」でインターフェースがUPしている事もわかります。

私の環境では「192.168.0.4/24」のIPアドレスが設定されています。

LinuxのIPアドレスについては以下の記事で詳しく纏めています。

DNSで名前解決が出来ているか確認する

DNSの設定がされており、名前解決できるか確認します。

DNSの名前解決が出来ているか確認するコマンド
  • digコマンド
  • nslookupコマンド
  • hostコマンド

それぞれで名前解決が出来ているか確認します。

「コマンドが見つかりません」となった場合は、以下の記事を参照して対応してください

dig www.google.co.jp
[root@localhost ~]# dig www.google.co.jp

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.15 <<>> www.google.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54358
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.co.jp.              IN      A

;; ANSWER SECTION:
www.google.co.jp.       90      IN      A       142.250.76.131

;; Query time: 18 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: 日  5月 05 18:08:13 JST 2024
;; MSG SIZE  rcvd: 61

名前解決できています。一番詳細な情報を取得できます。

nslookup www.google.co.jp
[root@localhost ~]# nslookup www.google.co.jp
Server:         192.168.0.1
Address:        192.168.0.1#53

Non-authoritative answer:
Name:   www.google.co.jp
Address: 142.250.76.131
Name:   www.google.co.jp
Address: 2404:6800:400a:805::2003

名前解決できています。重要な情報だけ表示されています。nslookupが一番良いですね。

host www.google.co.jp
[root@localhost ~]# host www.google.co.jp
www.google.co.jp has address 142.250.76.131
www.google.co.jp has IPv6 address 2404:6800:400a:805::2003

名前解決できています。簡単な情報のみ表示されています。

名前解決が出来ない場合DNSサーバーの設定やDNSサーバーとの通信を確認します。

DNSサーバーがない場合はhostsファイルに記述する事も可能です。Linuxのhostsファイルに関しては以下で詳しくまとめています。

デフォルトゲートウェイ、またはルーティングがあるか確認

デフォルトゲートウェイ、またはルーティングがないと違うセグメントに疎通できません。

以下のコマンドでルーティングを確認します。

Linuxサーバーのデフォルトゲートウェイやルーティングを確認するコマンド
  • routeコマンド
  • ip route showコマンド
Linuxサーバーでデフォルトゲートウェイを確認したいエンジニア

デフォルトゲートウェイ、またはルーティングがあるか確認する時はどちらのコマンドの方が良いの?

Linuxサーバーでデフォルトゲートウェイを確認したいエンジニア

従来は「route」コマンドが使用されていましたが、現在は「ip」コマンドが推奨されています。

「ip route show」コマンドを試してみます。

[root@localhost ~]# ip route show
default via 192.168.0.1 dev enp0s3 proto dhcp metric 100
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.4 metric 100

デフォルトゲートウェイが確認できました。

Linuxのデフォルトゲートウェイやルーティングに関しては、以下の記事で詳しくまとめています。