Linuxサーバーでインターネット接続の確認方法をまとめます。
Linuxサーバー構築でインターネット接続が出来ない事も多いので、確認のやり方を現役エンジニアの筆者がまとめます。
筆者はWindowsサーバーやLinuxサーバーの運用構築を11年間以上おこなってきました。その経験を元に知識を公開していきます!
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の設定確認は後で確認します。
インターネットにどこまで疎通が出来ているか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
経路が表示されて最終的に疎通できています。
ipが取得出来ているか、設定しているか確認する
そもそもLinuxサーバーにIPアドレスの設定がされていない、もしくはDHCPで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アドレスが設定されています。
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サーバーとの通信を確認します。
デフォルトゲートウェイ、またはルーティングがあるか確認
デフォルトゲートウェイ、またはルーティングがないと違うセグメントに疎通できません。
以下のコマンドでルーティングを確認します。
- routeコマンド
- ip route showコマンド
デフォルトゲートウェイ、またはルーティングがあるか確認する時はどちらのコマンドの方が良いの?
従来は「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
デフォルトゲートウェイが確認できました。