#はじめに
この記事はLIFULL Advent Calendar2018の10日目の記事です。
業務やプライベートでインフラ構築をすることが度々あり、疎通確認方法について改めて整理したいと思ったので、基本的なLinuxコマンドの使い方について解説していきます。
#名前解決をするコマンド
・nslookup
・host
・dig
#ネットワーク疎通確認コマンド
・ping
・traceroute
#nslookupコマンドを使ってみる
まずは、nxlookupコマンドを使って名前解決してみます。
$ nslookup google.com
Server: 172.28.xxx.xxx
Address: 172.28.xxx.xxx#53
Non-authoritative answer:
Name: google.com
Address: 172.217.25.110
Server: 172.28.xxx.xxx
は、問い合わせを行なったネームサーバーのIPを示しています。
Non-authoritative answer
と返ってきた場合、DNSサーバーにキャッシュされた情報を返却しており、実際のIPアドレスの設定が変更されている可能性があることを示しています。
また、問い合わせた結果、IPアドレスは172.217.25.110
であることがわかります。
#hostを使って簡潔な情報を取得する
hostを使うとnslookupよりも簡潔な情報を得ることができます。
$ host google.com
google.com has address 172.217.26.46
google.com has IPv6 address 2404:6800:4004:80d::200e
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
詳細な情報を得たい場合は-vオプションを使用します。
$ host -v google.com
Trying "google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 845
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 60 IN A 172.217.26.14
Received 44 bytes from 172.20.16.4#53 in 5 ms
Trying "google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54113
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN AAAA
;; ANSWER SECTION:
google.com. 60 IN AAAA 2404:6800:4004:80c::200e
Received 56 bytes from 172.20.16.4#53 in 4 ms
Trying "google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21931
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN MX
;; ANSWER SECTION:
google.com. 60 IN MX 40 alt3.aspmx.l.google.com.
google.com. 60 IN MX 10 aspmx.l.google.com.
google.com. 60 IN MX 30 alt2.aspmx.l.google.com.
google.com. 60 IN MX 50 alt4.aspmx.l.google.com.
google.com. 60 IN MX 20 alt1.aspmx.l.google.com.
#digコマンドでより詳細な情報を取得する
次に、digコマンドを使って名前解決をしてみます。
nslookup
コマンドでは、IPアドレスの情報のみが返されましたが、dig
コマンドを使うとドメインに関する詳細な情報を知ることができます。
$ dig aws.amazon.com
; <<>> DiG 9.10.6 <<>> aws.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20698
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;aws.amazon.com. IN A
;; ANSWER SECTION:
aws.amazon.com. 12 IN CNAME 1.aws-lbr.amazonaws.com.
1.aws-lbr.amazonaws.com. 50 IN CNAME aws-us-west-2.amazon.com.
aws-us-west-2.amazon.com. 44 IN A 52.119.168.190
;; Query time: 9 msec
;; SERVER: 172.28.xxx.xxx#53(172.28.xxx.xxx)
;; WHEN: Mon Dec 10 17:24:28 JST 2018
;; MSG SIZE rcvd: 121
実行すると上記のような結果が返ってきます。
aws-us-west-2.amazon.com. 44 IN A 52.119.168.190
この場合、DNSサーバーのキャッシュ残り時間が44秒で、aws-us-west-2.amazon.com
がAレコード
の52.119.168.190
で登録されていることがわかります。
#pingを使って疎通確認をする
pingはネットワークの接続経路が接続されているかを確認するコマンドです。
ただし、AWSでpingを使う場合はデフォルトでは疎通しないため注意してください。
基本的な使い方は以下の通りです。
$ ping google.com
PING google.com (172.217.26.46) 56(84) bytes of data.
64 bytes from nrt12s17-in-f14.1e100.net (172.217.26.46): icmp_seq=1 ttl=39 time=5.28 ms
64 bytes from nrt12s17-in-f14.1e100.net (172.217.26.46): icmp_seq=2 ttl=39 time=5.08 ms
64 bytes from nrt12s17-in-f14.1e100.net (172.217.26.46): icmp_seq=3 ttl=39 time=5.05 ms
疎通できれいれば、上記のようなログが何度も出力されます。回数は-cオプションで指定できます。
$ ping -c 3 google.com
PING google.com (172.217.24.142) 56(84) bytes of data.
64 bytes from nrt20s01-in-f142.1e100.net (172.217.24.142): icmp_seq=1 ttl=39 time=6.59 ms
64 bytes from nrt20s01-in-f142.1e100.net (172.217.24.142): icmp_seq=2 ttl=39 time=6.30 ms
64 bytes from nrt20s01-in-f142.1e100.net (172.217.24.142): icmp_seq=3 ttl=39 time=6.27 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 6.271/6.392/6.599/0.160 ms
#tracerouteを使って疎通確認をする
tracerouteをLinuxで使う場合、デフォルトのプロトコルはUDPです。
最後に宛先にたどり着いて処理が終了すれば疎通確認が取れていることがわかります。
traceroute google.com
traceroute to google.com (216.58.197.142), 64 hops max, 52 byte packets
1 10.33.23.254 (10.33.23.254) 3.929 ms 3.392 ms 2.997 ms
2 10.33.91.254 (10.33.91.254) 74.841 ms 74.608 ms 68.587 ms
3 10.33.91.222 (10.33.91.222) 67.503 ms 75.631 ms 76.663 ms
4 192.168.3.4 (192.168.3.4) 71.895 ms 84.070 ms 78.555 ms
5 192.168.2.1 (192.168.2.1) 74.489 ms 61.916 ms 63.660 ms
6 158.205.127.1 (158.205.127.1) 95.288 ms 65.370 ms 61.405 ms
7 158.205.188.229 (158.205.188.229) 70.257 ms 50.754 ms 55.554 ms
8 158.205.192.105 (158.205.192.105) 57.842 ms 58.442 ms 55.389 ms
9 as15169.ix.jpix.ad.jp (210.171.224.96) 57.065 ms 62.574 ms 60.141 ms
10 108.170.242.97 (108.170.242.97) 62.677 ms
108.170.242.129 (108.170.242.129) 71.308 ms
108.170.242.97 (108.170.242.97) 69.742 ms
11 216.239.62.25 (216.239.62.25) 69.914 ms 6.564 ms 68.025 ms
12 nrt12s01-in-f142.1e100.net (216.58.197.142) 64.729 ms 58.575 ms 64.304 ms
#最後に
自身があまり詳しくないこともあり、簡単な使い方の紹介のみになってしまいましたが、他にも便利なコマンドがたくさんあるので時々更新しようと思います。