ネットワークとコマンド

15.5. ネットワークとコマンド

ターミナルで使えるネットワーク関係のコマンドを、いくつか紹介します。

Colabでもほぼ同様に動作します。ただし、その場合に表示される情報は、Colabが動作するサーバのネットワークについてになります。 HWB-network.ipynb

ping #

ping は、ネットワーク上のコンピュータへの到達可能性を確認します。 ICMP パケットが正しく送れるかを確かめるコマンドです。たとえば次の例では、 HWBのウェブサーバーにパケットを送るテストをしています。

ping -c 5 hwb.ecc.u-tokyo.ac.jp
PING hwb.ecc.u-tokyo.ac.jp (219.94.162.18): 56 data bytes
64 bytes from 219.94.162.18: icmp_seq=0 ttl=52 time=9.890 ms
64 bytes from 219.94.162.18: icmp_seq=0 ttl=52 time=10.050 ms
64 bytes from 219.94.162.18: icmp_seq=0 ttl=52 time=10.167 ms
64 bytes from 219.94.162.18: icmp_seq=0 ttl=52 time=10.002 ms
64 bytes from 219.94.162.18: icmp_seq=0 ttl=52 time=10.188 ms
--- hwb.ecc.u-tokyo.ac.jp ping statistics ---
5 packets transmitted, 5 packets recieved, 0.0% packet loss
round-trip min/avg/max/stddev = 9.890/10.059/10.188/0.110 ms

オプション -c 5 は 5 つのパケットを送るという意味です。この ping の出力から、5 つのパケット全てが hwb.ecc.u-tokyo.ac.jp というサーバーに届いたと分かります。今はドメイン名を指定して ping をしましたが、もちろん IP アドレスを使うこともできます。

自宅等のネットワークが不調の時に、原因の切り分けにpingが有用です:

  1. その機器に設定された「ルータ」のIPアドレスに ping します。動かなければ、ケーブルが抜けているなど、とても近くに問題があります。
  2. 外のインターネットのIPアドレスに ping します (たとえば ping 8.8.8.8)。 成功すれば、おおむね通信は成功しています。これが動かず 1 が動いていれば、そのルータやプロバイダの問題と予想できます。

ifconfig #

ifconfig は、自分の端末のネットワーク環境を調べるためのコマンドです。

ifconfig
...
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=2b<RXCSUM,TXCSUM,VLAN\_HWTAGGING,TSO4>
ether 3c:07:54:58:be:ef
inet6 fe80::3e07:54ff:fe58:62c4%en0 prefixlen 64 scopeid 0x4
inet 172.17.123.45 netmask 0xffffff00 broadcast 172.17.123.255
media: autoselect (1000baseT <full-duplex>)
status: active
...

inet の行に、自分の IP アドレスや MAC アドレスといった情報が表示されます。

Linux では ip a, Microsoft Windows では ipconfig などが似た機能を持ちます。

arp #

arp は、近くのネットワークの機器の MACアドレスを表示します。

arp -a
a01.ecc.u-tokyo.ac.jp (172.16.12.34) at 0:50:56:89:be:ef on en0 ifscope [ethernet]
b01.ecc.u-tokyo.ac.jp (172.16.12.45) at 0:c:29:72:be:ef on en0 ifscope [ethernet]
cde.ecc.u-tokyo.ac.jp (172.16.12.67) at d2:39:ea:21:be:ef on en0 ifscope [ethernet]

自宅でもルータやプリンタなど、何かの機器が表示されるはずです。 ネットワーク不調時にこれで何も表示されなければ、ケーブルが抜けている、ハブの電源が落ちている、ネットワーク装置の故障など、近くの問題である可能性が高いです。

host #

host コマンドは DNS の名前解決をします。

host hwb.ecc.u-tokyo.ac.jp
hwb.ecc.u-tokyo.ac.jp has address 219.94.162.18
hwb.ecc.u-tokyo.ac.jp mail is handled by 10 hwb.ecc.u-tokyo.ac.jp.
この場合は1行目の 219.94.162.18 がIP アドレスです。 2行目は電子メールを送信したら受け取るサーバの情報です。

IPアドレスからホスト名を調べる 逆引き も可能です。

host 219.94.162.18
18.162.94.219.in-addr.arpa domain name pointer www1208.sakura.ne.jp.

この結果は、hwb.ecc.u-tokyo.ac.jpwww1208.sakura.ne.jp に居候していることを意味します。 基本的な状況では、正引きと逆引きは一致します。しかし、ホスティングサービスなどでは、IPアドレスと名前が1対多になることもよくあります。

名前解決が成功しない場合、複数の原因が考えられます。 冒頭で紹介した ping 8.8.8.8 が成功するなら、host hwb.ecc.u-tokyo.ac.jp 8.8.8.8 のようにDNSサーバを指定して問い合わせることが候補です。もし以下のように成功するなら、普段使っている「DNSサーバ」の設定が誤っているか、一時的に不調かもしれません。

host hwb.ecc.u-tokyo.ac.jp 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:

hwb.ecc.u-tokyo.ac.jp has address 219.94.162.18
hwb.ecc.u-tokyo.ac.jp mail is handled by 10 hwb.ecc.u-tokyo.ac.jp.

dig #

dig は、host 同様にDNSの問い合わせをしますが、応答をよりそのままの形で示します。動作をより深く理解する目的に向いています。HWBでは以下のフォーマットで使います。

dig @サーバ +norec ドメイン名

m.root-servers.nethwb.ecc.u-tokyo.ac.jp を尋ねる場合は、以下のようにサーバとドメイン名の部分をそれぞれ置き換えて使います。途中の +norec は recursive な問い合わせを希望しないという意味ですが、割愛します。

dig @m.root-servers.net +norec hwb.ecc.u-tokyo.ac.jp
; <<>> DiG 9.16.1-Ubuntu <<>> @m.root-servers.net +norec hwb.ecc.u-tokyo.ac.jp
()
;; QUESTION SECTION:
;hwb.ecc.u-tokyo.ac.jp.		IN	A

;; AUTHORITY SECTION:
jp.			172800	IN	NS	g.dns.jp.
jp.			172800	IN	NS	b.dns.jp.
jp.			172800	IN	NS	c.dns.jp.
jp.			172800	IN	NS	d.dns.jp.
jp.			172800	IN	NS	a.dns.jp.
jp.			172800	IN	NS	f.dns.jp.
jp.			172800	IN	NS	e.dns.jp.
jp.			172800	IN	NS	h.dns.jp.

;; ADDITIONAL SECTION:
h.dns.jp.		172800	IN	A	161.232.72.25
g.dns.jp.		172800	IN	A	203.119.40.1
f.dns.jp.		172800	IN	A	150.100.6.8
e.dns.jp.		172800	IN	A	192.50.43.53
d.dns.jp.		172800	IN	A	210.138.175.244
c.dns.jp.		172800	IN	A	156.154.100.5
b.dns.jp.		172800	IN	A	202.12.30.131
a.dns.jp.		172800	IN	A	203.119.1.1
h.dns.jp.		172800	IN	AAAA	2a01:8840:1bc::25
f.dns.jp.		172800	IN	AAAA	2001:2f8:0:100::153
e.dns.jp.		172800	IN	AAAA	2001:200:c000::35
d.dns.jp.		172800	IN	AAAA	2001:240::53
c.dns.jp.		172800	IN	AAAA	2001:502:ad09::5
b.dns.jp.		172800	IN	AAAA	2001:dc2::1
a.dns.jp.		172800	IN	AAAA	2001:dc4::1

()

返答は主に、QUESTION SECTION:, ;; AUTHORITY SECTION:, ;; ADDITIONAL SECTION: の3部からなり、 それぞれ、問い合わせ内容、返答、補足情報になります。 質問は、hwb.ecc.u-tokyo.ac.jp でしたが直接の答えは教えてもらえませんでした。 返答内容は、.jp の権威サーバが書かれています。意訳すると、「知ってるとしたら、a.dns.jp, b.dns.jp, …, h.dns.jp だよ」となります 複数行ありますが、どれに聞いても同じ答えになります。問い合わせ先を複数設けることで、サーバの負荷を分散しています。

補足情報には、各権威サーバのIPアドレスが (v4, v6両方が) 添えられています。 このIPアドレスは、次の問い合わせをするために必要です。

curl #

curl はURLの文書を、手元のファイルに保存します。 以下の例では、https://www.ecc.u-tokyo.ac.jp のURLに対応する文書を、ecc.html に保存します。

curl -o ecc.html https://www.ecc.u-tokyo.ac.jp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 21308  100 21308    0     0  82837      0 --:--:-- --:--:-- --:--:-- 84555
TCP/IPとルーティング ネットワークとコマンド 自宅からのログイン