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

  • ¥0

    無料

システム管理者で初心者の方を対象に、実際に試せるシステム管理のノウハウを、お知らせします。Vine,Fedora,Ubuntu,DebianなどLinuxの他に、OpenBSD,FreeBSDなども対象とします。バックナンバーは発行者サイトにて。

著者サイト
 

メールマガジンを登録(無料)

もしくは

※ 各サービスのリンクをクリックすると認証画面に移動します。
※ 各サービスで登録しているメールアドレス宛に届きます。

メールマガジンを解除

もしくは

※ 各サービスのリンクをクリックすると認証画面に移動します。

  • このエントリーをはてなブックマークに追加
 
 
 
メルマガ名
いますぐ実践! Linuxシステム管理
発行周期
月2回
最終発行日
2017年06月12日
 
発行部数
2,831部
メルマガID
0000149633
形式
PC・携帯向け/テキスト形式
カテゴリ
インターネット・パソコン > OS > UNIX系OS

まぐまぐ!メールマガジンの用語集です。
下記の用語以外の不明な点はこちらをご覧ください。

 
発行周期
週1回、月1回などの発行頻度です。
部数
メルマガの配信数を記しています。
カテゴリ
まぐまぐ!に登録されているカテゴリです。
形式
メルマガには以下の配信形式があります。下部「メルマガ形式」をご参照下さい。
 
最終発行日
最後にメルマガが配信された日付です。
メルマガID
メルマガを特定するIDです。
RSSフィード
RSSを登録すると、更新情報を受け取ることができます。

― メルマガ形式 ―

  • PC向け
    パソコンでの閲覧に最適化したメルマガ
  • 携帯向け
    スマートフォンやフィーチャーフォンでの
  • PC・携帯向け
    PC・携帯どちらでも快適にご購読いただけます。
  • テキスト形式
    文書だけで構成された、一般的なメールです。
  • HTML形式
    ホームページのように文字や画像が装飾されたメールです。
  • テキスト・HTML形式
    号によって形式が変更する場合があります。

閉じる

メールマガジン最新号

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■ いますぐ実践! 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)
メルマガ全文を読む
 

▲ページトップへ

▲ページトップへ