ネットワークコマンドざっくり調べた

f:id:suganoo:20190405124855p:plain
インフラの仕事をやってると障害が起きたときにネットワークコマンドをもっとうまいこと使えないかなと感じることがあります。

普段やらないのでここらで、ちょろっと調べてみたことをまとめてみます。

あと知らなかったのですがifconfig, arp, netstat といったコマンドはnetwork-toolsというパッケージに入ってるんですが、CentOS 7系から非推奨になってるんですね。

どうりで最近 ip addr とかよく見るなーっと思ってたんです。

そこでネットワークコマンドを調べてみました。

下記例で書いているIPや物理アドレスはすべて適当な値に変更しているので、表示例の内容として間違いがある(例えばルーティングがおかしいとか)かもしれませんがご容赦ください。
あくまで実行結果よりコマンド紹介に重きを置いています。

ifconfig と ip addr

ネットワークデバイスのIP情報を表示します。

(非推奨)ifconfig

このコマンドは非推奨です。

ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 9000
        inet 10.11.12.13  netmask 255.255.255.0  broadcast  10.11.12.255
        ether 0x:xx:xx:xx:xx:xx  txqueuelen 0  (Ethernet)
        RX packets 15688333418  bytes 26978320897762 (24.5 TiB)
        RX errors 0  dropped 30337831  overruns 0  frame 0
        TX packets 16172456258  bytes 73155725056592 (66.5 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether  0x:xx:xx:xx:xx:xx   txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ip addr (ip a)

ifconfigの代わりにip addrを使います。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    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
..............................
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP
    link/ether  0x:xx:xx:xx:xx:xx  brd ff:ff:ff:ff:ff:ff
    inet  10.11.12.13/24 brd .10.11.12.255 scope global bond0

ip link

ip link というコマンドもあります。
現在のネットワークデバイスを確認できます。

ip -s link でネットワークデバイスの現在の使用状況もわかります。

arp と ip neigh

IPとMACアドレスの対応一覧であるARPテーブルを表示します。

(非推奨)arp

arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.11.12.13                ether   0x:xx:xx:xx:xx:xx   C                           eth0

ip neigh (ip n)

ip neigh
10.11.12.13 dev eth0 lladdr  0x:xx:xx:xx:xx:xx  REACHABLE

netstat と ss

TCP/IPの通信状態を確認する

(非推奨)netstat

TCPのみを表示してみます。

netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0     32  10.11.12.13:ssh             110.10.1.111:tdmoip         ESTABLISHED
tcp        0      0 10.11.12.13:36387           ec2-55-55-55-555.comp:https ESTABLISHED
tcp        0      0 10.11.12.13:ssh             110.10.1.111:22174          ESTABLISHED

ss

ss
State       Recv-Q Send-Q      Local Address:Port          Peer Address:Port
ESTAB       0      0                  10.11.12.13:ssh               110.10.1.111:tdmoip
ESTAB       0      0                  10.11.12.13:36387           55.55.55.555:https
ESTAB       0      0                  10.11.12.13:ssh               110.10.1.111:22174

オプションとしては ss -lut として覚えておけばよさそう。

‐l : リスト、-t : TCP、‐u: UDP
だそうです

route と ip route

ルーティングテーブルを表示します。

(非推奨)route

route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.11.12.0       *               255.255.255.0   U     0      0        0 eth0
default           10.11.12.13         0.0.0.0         UG    0      0        0 eth0

ip route

ip route
10.11.12.0/24 dev eth0  proto kernel  scope link  src  10.11.12.129
default via 10.11.12.1 dev eth0

よく使いそうなコマンド

他によく使いそうなコマンドもあげてみます。

traceroute

目的のドメインまでどんなルーターを経てたどり着いているかをしらべる。
ネットワーク障害が起きたときによく使う

traceroute google.com
結果がいっぱい出て来てしまうので省略

getent

Linux - /etc/hosts に定義しているホストのIPを確認するコマンド|teratail

  • /etc/hosts からホスト名・IP解決する
getent hosts <host name>
getent hosts <IP address>

dig (もしくはnslookup)

DNSで名前解決してるかを確認する。

AWS のRoute53 の設定をいじった時によく使う。

dig google.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.2 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41761
;; 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

;; Query time: 1 msec
;; SERVER: 10.11.1213#53(10.11.12.13)
;; WHEN: Thu Apr  4 16:23:44 2019
;; MSG SIZE  rcvd: 44

似たコマンドに nslookup があるけど廃止されるらしい?
でもそう聞きつつ何年も経ってるような気が。

また host コマンドでもイケますね。


こんなところかなーと思います。