いますぐ実践! Linuxシステム管理

■ いますぐ実践! Linux システム管理 / Vol.273 ネットワークに関するコマンドを覚える


カテゴリー: 2017年06月12日
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ いますぐ実践! Linux システム管理  /  Vol.273  /  読者数:2834名
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

超おひさしぶりです、うすだです。

ちょっと気を抜くと、半年単位で時が過ぎていることに気づかされます。

それはさておき、我が家ではオカメインコという素敵な鳥を飼っています
が、先日、もう1羽をお迎えすることになりました。

家に来た当初はヒナでしたが、まもなく羽ばたく練習を自主的にはじめ、
ぶつかったり落ちたりする失敗を繰り返して、いまでは立派に部屋の中を
飛び回っています。

オカメインコは小心者で、すでにいる1羽は、よほどのことがない限り、
冒険めいたことをしません。見慣れないものが部屋にあったら、ぜったい
近づかず、関わらないようにしようとします。

ですが、新たに加わったオカメさんは、くちばしで突っついてみたりと、
能動的にアクションをおこします。そこでもし失敗したとしても、それが
よい経験になる、と思っているかのようです。

われわれ人間も、歳をとると冒険をしなくなりがちです。ですが、何歳に
なっても、自らの手を動かし、失敗して経験することで、学習し、成長を
するのだと思います。

元気あふれる、つやつやしたオカメインコとそのしぐさを見ながら、私も
新しいことに挑戦し、自分の手を動かしていかねば、と思いました。

自分の年齢と、新しいことをぜんぜんしていないことにあらためて驚愕と
絶望を感じつつ、半年ぶりにはりきってまいりたいと思います。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 今回のお題 - ネットワークに関するコマンドを覚える (レベル:初級)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

ネットワークに関するコマンドといえば、「ifconfig」や「netstat」、
「route」などですが、いつの間にやら、これらは古いコマンドになって
しまっているようです。

そこで今回は、これらに代わる新しいコマンドを紹介したいと思います。

新しいというか、今では当たり前のコマンドかもしれませんが、これらの
コマンドをもしご存じなければ、今後はオールドタイプの人だと思われる
ことが少なくなる…と思います。

非常に前向きに捉えますと、オールドタイプの人から、こいつはちゃんと
知っているんだ、と思ってもらえることがあるかもしれません。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ ifconfig ではなく ip

ifconfig といえば、ネットワークインタフェースの状態の確認や設定を
行うコマンドです。以下のように、引数なしで実行することが多々あるの
ではないかと思います。

 ……………………………………………………………………………………
  $ ifconfig
  wlp2s0    Link encap:Ethernet  HWaddr 12:34:56:78:9a:bc  
            inet addr:192.168.1.18  Bcast:192.168.1.255  Mask:255.255.255.0
            inet6 addr: fe80::1034:56ff:fe78:9abc/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:11933989 errors:0 dropped:297 overruns:0 frame:0
            TX packets:9384761 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1000 
            RX bytes:12284602142 (12.2 GB)  TX bytes:3990932842 (3.9 GB)
  ...後略...
 ……………………………………………………………………………………

ifconfig に代わるコマンドは、「ip」です。
ip コマンドには様々な機能があり、種類(OBJECT)を引数に指定して使い
分けます。ifconfig と同等のことをするには「address」を指定します。
状態を確認するには、address と show を引数に指定します。
(address は addr などと省略できます。ちなみにTABで補完できます。)

 ……………………………………………………………………………………
  $ ip addr show
  0: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq \
  state UP group default qlen 1000
      link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
      inet 192.168.1.1/24 brd 192.168.1.255 scope global wlp2s0
         valid_lft forever preferred_lft forever
      inet6 fe80::1034:56ff:fe78:9abc/64 scope link 
         valid_lft forever preferred_lft forever
  ...後略...
 ……………………………………………………………………………………

インタフェースに新たなIPアドレスを設定するには「add」を使います。
主な書式は以下の通りです。

 ……………………………………………………………………………………
  ip address add IPアドレス dev インタフェース
 ……………………………………………………………………………………

たとえば、IPアドレス 192.168.1.123 をインタフェース wlp2s0 に追加
するには、以下を実行します。

 ……………………………………………………………………………………
  $ sudo ip addr add 192.168.1.123 dev wlp2s0
 ……………………………………………………………………………………

show を実行すると、増えていることを確認できます。

 ……………………………………………………………………………………
  $ ip addr show dev wlp2s0
  0: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq \
  state UP group default qlen 1000
      link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
      inet 192.168.1.18/24 brd 192.168.1.255 scope global wlp2s0
         valid_lft forever preferred_lft forever
      inet 192.168.1.123/32 scope global wlp2s0
         valid_lft forever preferred_lft forever
      inet6 fe80::1034:56ff:fe78:9abc/64 scope link 
         valid_lft forever preferred_lft forever
 ……………………………………………………………………………………

IPアドレスを削除するには「del」を使います。
主な書式は add と同じです。
たとえば、先ほど追加したアドレスを削除するには、以下を実行します。

 ……………………………………………………………………………………
  $ sudo ip addr del 192.168.1.123 dev wlp2s0
 ……………………………………………………………………………………

なお、以降も同様ですが、「help」で簡単なヘルプが出力されます。

 ……………………………………………………………………………………
  $ ip addr help
  Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ]
                                                        [ CONFFLAG-LIST ]
         ip address del IFADDR dev IFNAME [mngtmpaddr]
         ip address {show|save|flush} [ dev IFNAME ] [ scope SCOPE-ID ]
                              [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up]
         ip address {showdump|restore}
  ...後略...
 ……………………………………………………………………………………


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ route ではなく ip

route は、ルーティングテーブルの設定や確認を行うコマンドです。
引数なしで実行すると、ルーティングテーブルの内容を出力します。

 ……………………………………………………………………………………
  $ route
  Kernel IP routing table
  Destination  Gateway   Genmask         Flags Metric Ref  Use Iface
  default      fgw       0.0.0.0         UG    600    0      0 wlp2s0
  link-local   *         255.255.0.0     U     1000   0      0 docker0
  172.17.0.0   *         255.255.0.0     U     0      0      0 docker0
  192.168.1.0  *         255.255.255.0   U     600    0      0 wlp2s0
 ……………………………………………………………………………………

route に代わるコマンドは、ip です。引数に「route」を指定します。
ルーティングテーブルの内容を出力するには、route と show を指定して
実行します。

 ……………………………………………………………………………………
  $ ip route show
  default via 192.168.1.254 dev wlp2s0  proto static  metric 600 
  169.254.0.0/16 dev docker0  scope link  metric 1000 linkdown 
  172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 linkdown 
  192.168.1.0/24 dev wlp2s0  proto kernel  scope link  src 192.168.1.18  metric 600
 ……………………………………………………………………………………

経路を追加するには「add」を使います。
書式は複雑なため、詳細についてはオンラインマニュアル(man ip-route)
を見ていただきたいですが、たとえば、「192.168.2.0」宛のパケットを
「192.168.1.254」経由で送る経路を追加するには、以下を実行します。

 ……………………………………………………………………………………
  $ sudo ip route add 192.168.2.0 via 192.168.1.254

  $ ip route show
  ...前略...
  192.168.2.0 via 192.168.1.254 dev wlp2s0 
 ……………………………………………………………………………………

経路を削除するには「del」を使います。
先ほど追加した経路を削除するには、add を del に変えて実行します。

 ……………………………………………………………………………………
  $ sudo ip route del 192.168.2.0 via 192.168.1.254
 ……………………………………………………………………………………


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ arp ではなく ip

arp は、IPアドレスとMACアドレスを対応づけているARPテーブルの確認や
管理を行うためのコマンドです。

 ……………………………………………………………………………………
  $ arp -a
  fgw (192.168.1.254) at 00:11:22:33:44:55 [ether] on wlp2s0
  tamao (192.168.1.128) at 66:77:88:99:aa:bb [ether] on wlp2s0
  ...後略...
 ……………………………………………………………………………………

arp の代わりとなるコマンドは…やはり ip です。引数に「neighbour」
を指定します。(ちなみに、neighbor や neigh などでも構いません。)
ARPテーブルの内容を出力するには、neighbor と show を引数に指定して
実行します。

 ……………………………………………………………………………………
  $ ip neigh show
  192.168.1.254 dev wlp2s0 lladdr 00:11:22:33:44:55 REACHABLE
  192.168.1.128 dev wlp2s0 lladdr 66:77:88:99:aa:bb STALE
  ...後略...
 ……………………………………………………………………………………

なお、「REACHABLE」はARPによりアドレス解決された直後、「STALE」は
解決してから一定時間経過した状態を示します。
(あと、「PERMANENT」は永久保存、「FAILED」は解決に失敗、です。)

ARPテーブルのエントリを追加するには「add」を使います。
主な書式は以下の通りです。

 ……………………………………………………………………………………
  ip neighbour add IPアドレス lladdr MACアドレス dev インタフェース
 ……………………………………………………………………………………

たとえば、「192.168.1.124」のMACアドレスが「99:88:77:66:55:44」の
エントリを wlp2s0 に対して追加するには、以下のように実行します。

 ……………………………………………………………………………………
  $ ip neigh add 192.168.1.124 lladdr 99:88:77:66:55:44 dev wlp2s0

  $ ip neigh show
  ...前略...
  192.168.1.124 dev wlp2s0 lladdr 99:88:77:66:55:44 PERMANENT
  ...後略...
 ……………………………………………………………………………………

ARPテーブルのエントリを削除するには「del」を使います。
主な書式は add と同じです。
先ほど追加したエントリを削除するには、add を del に変えます。

 ……………………………………………………………………………………
  $ ip neigh del 192.168.1.124 lladdr 99:88:77:66:55:44 dev wlp2s0

  $ ip neigh show
  ...前略...
  192.168.1.124 dev wlp2s0  FAILED
  ...後略...
 ……………………………………………………………………………………


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ netstat ではなく ss

netstat は、ネットワークに関する様々な情報を確認するコマンドです。
たとえば、「-a」オプションを指定して実行するとsocketの状態、「-t」
オプションでTCPのみ、を出力します。

 ……………………………………………………………………………………
  $ netstat -at
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address     Foreign Address    State      
  tcp        0      0 oreore:domain     *:*                LISTEN     
  tcp        0      0 *:postgresql      *:*                LISTEN     
  tcp        0      0 localhost:8888    *:*                LISTEN     
  tcp        0      0 *:smtp            *:*                LISTEN     
  ...後略...
 ……………………………………………………………………………………

netstat の代わりとなるコマンドは、「ss」です。
ss は、socket の状態を確認するためのコマンドです。多くのオプション
が netstat と同様ですので、netstat をすでにご存じであれば、違和感
なく使用できます。

たとえば、先ほどと同じオプションを指定して ss を実行してみますと、
以下のような出力が得られます。

 ……………………………………………………………………………………
  $ ss -at
  State    Recv-Q Send-Q Local Address:Port         Peer Address:Port
  LISTEN   0      5      127.0.1.1:domain           *:*                    
  LISTEN   0      128        *:postgresql       *:*                    
  LISTEN   0      128    127.0.0.1:8888             *:*                    
  LISTEN   0      100        *:smtp             *:*                    
  ...後略...
 ……………………………………………………………………………………

出力結果の書式は異なりますが、得られる情報は同等です。
他にもいろいろオプションがあります。いろいろ試してみてください。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ おわりに

以上、新しいネットワーク関連のコマンドを、淡々とご紹介しました。

とはいえ、「ip」と「ss」だけで、かつ使い方の説明だけでしたが。
半年ぶりですので、生暖かい目で見守っていただけますと幸いです。

1つのコマンドに様々な機能がつめ込まれているため、引数に指定できる
コマンドやオプションがいっぱいあります。もっと詳しく知りたいという
貴兄は、オンラインマニュアルなどを参考にしてください。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 宿題の答え
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

前回の宿題は、

  sshpass と autossh を組み合わせて使ってみましょう。

でした。

autossh では、環境変数「AUTOSSH_PATH」を設定すると、ssh コマンドの
代わりに AUTOSSH_PATH で指定したコマンドが実行されます。
ですので、AUTOSSH_PATH に sshpass を指定すればめでたしめでたし…と
言いたいところですが、なにやら叱られてしまいます。

 ……………………………………………………………………………………
  $ AUTOSSH_PATH=sshpass autossh -p パスワード ingw
  sshpass: invalid option -- 'L'
  Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
  ...後略...
 ……………………………………………………………………………………

autossh は -L オプションと -R オプションを指定して AUTOSSH_PATH の
コマンドを実行しますが、sshpass にはそのオプションがないためエラー
となるようです。

そこで、以下のシェルスクリプトを作成し、これを AUTOSSH_PATH に指定
してみたいと思います。

……………………………………………………………………………………
#!/bin/sh
sshpass -e ssh $*
……………………………………………………………………………………

sshpass で明示的に ssh コマンドを指定し、autossh から渡される引数
をそのまま渡しているので、無事に実行されるようになります。

たとえば、このスクリプトを「sshpass.sh」というファイル名で保存し、
chmod コマンドで以下のように実行可能な状態にしておきます。

 ……………………………………………………………………………………
  $ chmod +x sshpass.sh
 ……………………………………………………………………………………

あとは、以下のように実行するだけです。

 ……………………………………………………………………………………
  $ SSHPASS=パスワード AUTOSSH_PATH=./sshpass.sh autossh ホスト名
 ……………………………………………………………………………………

SSHPASS の設定が面倒という貴兄は、シェルスクリプト内に設定を入れて
しまってもよいかもしれません。
ただ、パスワードを他人に見られないようにする(chmodで読み込みを自分
のみ許可する)など、取り扱いには十分注意してくださいませ。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ 今回の宿題
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

今回の宿題は、

  ipコマンドのaddress、route、neighbour以外の機能を調べましょう。

です。

man や ip help で確認すると、他に link や rule、netns などたくさん
のOBJECTがあることがわかります。

全部調べるのは難しいですが、名前を見て気になるものをいくつか選んで
調べてみてはいかがでしょうか。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ あとがき
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

いま、本業で自動運転に関わっており、「ROS」という、ロボットを制御
することを目的とするメタ・オペレーティングシステム(フレームワーク
のようなものだと思ってください)にどっぷり浸かっております。

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
ja/ROS/introduction - ROS WiKi
http://wiki.ros.org/ja/ROS/Introduction
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

最近、ROS の本がいろいろ出ていますので、ROS のことを知りたければ、
それらを読んで理解を深めることができます。

ですが、本を読むだけでなく実際に手を動かすことで理解が進む、という
ことも多々あります。
わたしも、テストコースや公道で日々実験を繰り返すことで、ROS の理解
が深まったと、実際に体験してそう感じています。

そういえば、最初にパソコンの存在を知り、ゲームを作りたいなと思って
BASIC を学び始めたときよく耳にした言葉が、理解よりもまずプログラム
を打ち込んで動かせ、でした。

最近あまり耳にしなくなりましたが、「習うより慣れろ」で検索してみる
とたくさんヒットするので、一般化したということでしょうか。

などと思っていたところ、タイミングよく以下の本をいただく機会があり
ましたので、意気揚々?と紹介させていただきます。

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Raspberry Piで学ぶ ROSロボット入門
http://www.amazon.co.jp/exec/obidos/ASIN/4822239292/usupiorg-22
‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

ラズパイのロボットを ROS で制御するのに必要なことが、一からすべて
網羅されているという、お得な本です。
正直、この内容でよく一冊におさめられたなあ、と驚愕しました。
(Ubuntu、Git、GitHub、Travis CI、OpenCV、Julius…てんこ盛りです。)

逆に、ROS やデバイスドライバなどの概要的な説明は、比較的スルーされ
ています。後から別の書籍で補えばよい、ということだと思います。

ロボットでないと試せない内容もありますが、ラズパイだけで試せるもの
も多々あります。あれこれ考えず、まずは手を動かしてみる、というのが
よろしいのではないかと思います。


あ、ラズパイと言えば、いま、某日経Linuxで、ラズパイサーバの連載が
掲載されています。興味がありましたら、立ち読んでみてください。
初心者向けで、難しいことは一切書いていません(書けていません)ので、
安心してお読みいただけます。
なお、6月8日発売の7月号では、Webサーバを取り上げています。


…よし、可能な限り宣伝しまくりました。もう悔いはありません。


今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、お盆休みを目標に発行したいと思います! (あくまでも目標!!)


「いますぐ実践! Linux システム管理」はこちらです。
メルマガの解除、バックナンバーなども、以下からどうぞ。
http://www.usupi.org/sysad/    (まぐまぐ ID:149633)

その他、作者に関するページは、概ね以下にございます。
http://www.usupi.org/kuri/          (main)
http://usupi.seesaa.net/            (blog)
http://twitter.com/kuriking/        (twitter)
http://facebook.com/kuriking3       (facebook)
https://jp.pinterest.com/kuriking/  (pinterest)

いますぐ実践! Linuxシステム管理

RSSを登録する
発行周期 月2回
最新号 2017/06/12
部数 2,832部

このメルマガを購読する

ついでに読みたい

いますぐ実践! Linuxシステム管理

RSSを登録する
発行周期 月2回
最新号 2017/06/12
部数 2,832部

このメルマガを購読する

今週のおすすめ!メルマガ3選

相馬一進の、1億稼ぐビジネスの本質|マーケティングと心理学
・天職で1億稼いだ相馬一進が、お金、自己啓発、仕事について、 心理学とマーケティングの側面から語る本格派メールマガジン。 ・著者の相馬一進は、ダライ・ラマ14世や、『7つの習慣』の スティーブン・コヴィーや、リチャード・ブランソンなどの、 海外セミナーへの日本人ツアーを企画、集客した実績を持つ。 ・最先端の起業・副業のノウハウや、マーケティングの原理原則、 生活の中からストレスを減らす方法、モチベーションの心理学、 複数の収入源を持つ方法、働く時間を減らす秘密などを配信中。
  • メールアドレスを入力

  • 規約に同意して

WEBマーケティングを学ぶためのメールマガジン
国内トップクラス(ユーザー数70000人)のWordPressテーマTCDやフォトマルシェ、ロゴマルシェなどを運営する株式会社デザインプラスの中田俊行が発行するメールマガジン。 アフィリエイトから始めた著者が、ネットマーケティングや最新のウェブ業界の情報を発信していきます。
  • メールアドレスを入力

  • 規約に同意して

サラリーマンで年収1000万円を目指せ。
高卒、派遣社員という負け組から、外資系IT企業の部長になった男の、成功法則を全て公開します。誰にでも、どんな状況、状態からでも自分の力で人生を変えるための情報と知性を発信しています。人生を意のままにするには、脳みそとこころの両方が進化しなければなりません。そんな進化とは何か?をお届けする四コママンガ付きメルマガです。2014年から3年連続でまぐまぐ大賞部門賞を受賞しました 学歴やバックグラウンドに拘わらず、人生を思いのままに生きるために必要な考え方が書かれた、「良書リスト」も希望者に差し上げています。
  • メールアドレスを入力

  • 規約に同意して

今週のおすすめ!メルマガ3選

川島和正の日刊インターネットビジネスニュース
■読者数32万部超、日本一の個人メルマガ(まぐまぐ総合ランキング調べ) ■9年連続で年収1億円以上になり、70か国以上を旅行して、 190平方メートルの豪邸に住んで、スーパーカーに乗れるようになり、 さらに、著書は、日本を代表する超有名人2人に帯を書いてもらい、 累計50万部のベストセラーとなった、現在香港在住の川島和正が、 最新のビジネスノウハウ、自己啓発ノウハウ、健康ノウハウ、恋愛ノウハウ さらに「今チェックしておくべき情報リスト」などを配信中!
  • メールアドレスを入力

  • 規約に同意して

3連単3頭ボックスで超簡単に万馬券をゲットする競馬プロジェクト
◆読者6000人突破!まぐまぐ殿堂入り!! 圧倒的に少ない買い目で馬券を的中させます。 指定した《3頭》をボックスで買うだけで・・・ 昨年は9万馬券&7万馬券が当たりました。 一昨年にはなんと10万馬券も的中させています! 馬券は3頭をボックスで買うだけなので 誰がやっても買い目は同じ。 女性でもOK、競馬初心者でもOK 資金が少ない人でもOKです。 しかし、買い目が少ないので 当たればガツンと儲かります! こんな競馬予想は他にありません! ☆彡メルマガ広告主様大歓迎です☆彡
  • メールアドレスを入力

  • 規約に同意して

生きる意味は仏教に学びなさい
仏教メルマガ読者数日本一。今この瞬間に幸せを感じ、後悔のない人生にする方法とは?なぜどんなにお金があっても幸せになれないのか。むなしい人生になってしまう原因とは?あなたの人生を背後で支配する運命の法則と99%の人が自覚なく不幸を引き寄せている6つの行いとは…?仏教史上初のウェブ通信講座を開設、仏教の歴史を変え続ける中村僚が、葬式法事仏教となった現代日本の仏教界では失われた本当の仏教の秘密を公開。発行者サイトでも隠された仏教の秘密を無料プレゼント中。
  • メールアドレスを入力

  • 規約に同意して

他のメルマガを読む

ウィークリーランキング