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

いますぐ実践! Linux システム管理 / Vol.274 / 読者数:2832名

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

最近、自動運転のオペレータをやっているのですが、 車の中という狭い所で作業しているからでしょうか、先々週くらいに腰を痛めました。

知人に紹介してもらった治療院へ行ったところ、 マッサージされたり鍼を打たれたりするのかな、と思いきや、まずはじめに、 気の流れをよくする方法をレクチャーされました。

他人(の病気のこと)を想うことで、気の流れが良くなるそうです。

また、その日は、先生に気を送ってもらったのですが、後日自力で治せるようにと、 自分で気を送る方法も教えてもらいました。

最終的には鍼治療もしてもらったのですが、結局、最初の気の治療? だけで、 曲がらなかった腰が曲がるようになりました。
(なお、鍼治療では、腰にあまり変化がありませんでした。)

気が何なのか、気の流れを良くするとはどういうことなのか、 わからないまま治療は終わってしまったのですが、 その後も自力で気を送るなどしていたら、数日で腰痛が治ってしまったのでした。

今回の件は、プラシーボ効果のような気がしなくもないのですが、 科学的でないなどの先入感にとらわれず、とにかくまずやってみることが大事、 ということが言えるのではないかと思いました。
(ちなみに、科学的でないわけではなく、 他人を想うことでオキシトシンが分泌されるため、ということのようです。)

ただ、悪い波動を除去するという、浄電シールというものをいただいたのですが、 これだけは未だに半分以上信じることができていません。

…といいつつも、携帯にはまだ浄電シールを貼っています。
我ながら、影響の受けやすい小心者だなあ、と思います。

いつ浄電シールを剥がそうか、と思いつつ剥がせない日々が続きますが、 今回も張り切ってまいりたいと思います。

今回のお題 - Network Managerをコマンドラインで操作する (レベル:中級)

Network Managerが導入されたことで、ネットワークに関する設定が、 GUIで簡単に行えるようになりました。

設定ファイルを直接編集したり、コマンドで設定したりする、 旧タイプの管理者にとって、 Network Manager はとっつきにくい存在と言えるのかもしれません。
(筆者は、Network Managerに慣れるまでそれなりの時間を要しました。)

また、GUIのないサーバでは、 Network Managerを使わずに運用されているところもあるのではないかと思います。

ですが、「nmcli」という、 コマンドラインでNetwork Managerを操作するコマンドが一般的になったことで、 それらが解消されるように思います。

というわけで今回は、nmcliコマンドのおおまかな使い方をご紹介したいと思います。

前回同様、使い方を、修行のように淡々と述べていきます。
ですので、興味のある箇所だけ見ていただければと存じます。

まず、対象を絞らせてください

nmci は、バージョンによって、引数に指定するコマンドやオプションが異なるようです。

Ubuntu 16.04 のバージョンは 1.2.6、CentOS 7 は 1.0.6-30.el7_2 で、 少し異なりますが、細かいところを除けば、使い方はほぼ一致します。

ですが、Ubuntu 14.04 のバージョンは 0.9.8.8 で、 そもそも最初の引数に指定するコマンドからして、前者とは異なります。

ですので、申し訳ありませんが、今回は前者のみを対象とします。

そして、以降では、最初の引数に指定するコマンドごとに、 使い方の説明をしていきたいと思います。

general は一般的なコマンド

まず最初のコマンドは、「general」です。
その名の通り、一般的な情報の確認や設定を行うコマンドです。

general の後に「status」を指定して実行すると、 ネットワークに関する状態を出力します。

  $ nmcli general status
  状態      接続性  WIFI ハードウェア  WIFI  WWAN ハードウェア  WWAN 
  接続済み  完全    有効               有効  有効               有効 

general の後に「hostname」を指定すると、ホスト名を出力します。

  $ nmcli general hostname
  ホスト名

さらに、ホスト名を指定すると、指定したホスト名に変更できます。
ただし、パスワードを聞かれます。認証が通らないと変更できません。

  $ nmcli general hostname ホスト名

general の後に「permissions」を指定すると、各操作のパーミッションを出力します。

  $ nmcli general permissions
  パーミッション                                             値
  org.freedesktop.NetworkManager.enable-disable-network      はい
  org.freedesktop.NetworkManager.enable-disable-wifi         はい
  ...中略...
  org.freedesktop.NetworkManager.settings.modify.hostname    認証
  ...後略...

先ほどのホスト名の変更の際にパスワードを聞かれたのは、上記の通り、 ホスト名の変更のパーミッションが「認証」となっているためです。

general の後に「logging」を指定すると、 ログを出力するレベルおよびドメイン(種類のようなものです)の確認と変更ができます。

  $ nmcli general logging
  レベル  ドメイン
  INFO    PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,...後略...

…こんな感じで、淡々と続きます。

networking はネットワークの有効/無効化

「networking」は、ネットワークを有効/無効にしたり、確認を行うためのコマンドです。

後の引数がない場合は、有効かどうかを出力します。

  $ nmcli networking
  有効

networking の後に「connectivity」を指定すると、ネットワーク接続の状態を出力します。

  $ nmcli networking connectivity
  完全

networking の後に「on」か「off」を指定すると、 それぞれネットワークを有効/無効に設定します。
GUIの「ネットワークを有効にする」のチェックと同じです。

  $ nmcli networking off
  $ nmcli networking connectivity
  なし
  $ nmcli networking on
  $ nmcli networking connectivity
  完全

はい、まだ続きます。

radio は無線LANやワイヤレスWANの有効/無効化

「radio」は、無線LANやワイヤレスWANを有効/無効にしたり、 確認を行うためのコマンドです。

radio の後に「wifi」を指定すると、無線LANの状態を出力します。

  $ nmcli radio wifi
  有効

radioの後に「wwan」を指定すると、ワイヤレスWANの状態を出力します。

  $ nmcli radio wwan
  有効

すべての状態を確認するには、「all」を指定します。

  $ nmcli radio all
  WIFI ハードウェア  WIFI  WWAN ハードウェア  WWAN 
  有効               有効  有効               有効 

wifi, wwan, all の後に「on」か「off」を指定すると、 それぞれを有効/無効に設定します。
wifi の例を以下に示します。GUIの「Wi-Fiを有効にする」のチェックと同じです。

  $ nmcli radio wifi off
  $ nmcli radio wifi
  無効
  $ nmcli radio wifi on
  $ nmcli radio wifi
  有効

…で、まだ、続きます…。

connection はネットワーク接続に関する設定・確認

「connection」は、ネットワーク接続の設定や確認を行うためのコマンドです。 たくさんあるので、主なものだけを紹介します。

connection の後に「show」を指定すると、ネットワークの接続と概要を一覧で出力します。

  $ nmcli connection show
  名前         UUID                      タイプ           デバイス
  docker0      XXXXXXX-XX....XX-XXXXXXX  bridge           docker0
  raspi3       XXXXXXX-XX....XX-XXXXXXX  802-11-wireless  wlp5s0
  home-wifi    XXXXXXX-XX....XX-XXXXXXX  802-11-wireless  --
  test-local   XXXXXXX-XX....XX-XXXXXXX  802-3-ethernet   --
  ...後略...

アクティブなものだけを出力するには、「--active」オプションをつけて実行します。

  $ nmcli connection show --active
  名前         UUID                      タイプ           デバイス
  docker0      XXXXXXX-XX....XX-XXXXXXX  bridge           docker0
  raspi3       XXXXXXX-XX....XX-XXXXXXX  802-11-wireless  wlp5s0

ここで、無線LANを「home-wifi」に切り替えたい場合は、 connection の後に「up」と「home-wifi」を指定します。

  $ nmcli connection up home-wifi
  接続が正常にアクティベートされました (D-Bus アクティブパス: ...)

  $ nmcli connection show --active
  名前         UUID                      タイプ           デバイス
  home-wifi    XXXXXXX-XX....XX-XXXXXXX  802-11-wireless  wlp5s0
  docker0      XXXXXXX-XX....XX-XXXXXXX  bridge           docker0

無線LANが home-wifi に切り替わりました。
今の接続をやめるには、「down」と接続名を指定します。

  $ nmcli connection down home-wifi
  接続 'home-wifi' が正常に非アクティブ化されました (D-Bus アクティブパス: ...)

  $ nmcli connection show --active
  名前         UUID                      タイプ           デバイス
  docker0      XXXXXXX-XX....XX-XXXXXXX  bridge           docker0
  raspi3       XXXXXXX-XX....XX-XXXXXXX  802-11-wireless  wlp5s0

無線LANの home-wifi が非アクティブ化され、もとに戻りました。
(自動的に接続する設定になっているものがなければ、 接続されない状態のままとなります。)

他にも、「add」や「delete」「edit」などがありますが、割愛します。

device はデバイスに対する設定・確認

「device」は、デバイスの設定や確認を行うためのコマンドです。

device の後に「status」を指定すると、デバイスの状態を出力します。

  $ nmcli device status
  デバイス  タイプ    状態      接続         
  docker0   bridge    接続済み  docker0      
  wlp5s0    wifi      接続済み  home-wifi
  enp4s0    ethernet  利用不可  --           
  dummy0    dummy     管理無し  --           
  lo        loopback  管理無し  --

device の後に「show」を指定すると、 すべてのインタフェースの状態と現在の設定を出力します。
show の後にインタフェース名を指定すると、 そのインタフェースの状態と設定だけを出力します。

  $ nmcli device show wlp5s0
  GENERAL.デバイス:                       wlp5s0
  GENERAL.タイプ:                         wifi
  GENERAL.ハードウェアアドレス:           00:11:22:33:44:55
  GENERAL.MTU:                            0
  GENERAL.状態:                           100 (接続済み)
  GENERAL.接続:                           home-wifi
  ...後略...

device の後に「wifi」を指定すると、無線LANのSSIDとそれぞれの状態を出力します。

  $ nmcli device wifi
  *  SSID          モード    CHAN  レート     信号  バー  セキュリティ 
     raspi3        インフラ  6     54 Mbit/s  100   ****  WPA2         
     obakeno       インフラ  11    54 Mbit/s  64    ***   WPA2
  *  home-wifi     インフラ  11    54 Mbit/s  59    ***   WPA1 WPA2    
     obakenano     インフラ  11    11 Mbit/s  29    *     WPA1
  ...後略...

無線LANを新たに接続するには、「connect」とSSIDを指定します。

  $ nmcli device wifi connect obakeno
  (パスフレーズを聞かれるので入力)
  Device 'wlp5s0' successfully activated with '...略...'.

…今日のところは、このくらいで終わりにしたいと思います。

おわりに

以上、nmcliコマンドの使い方を、ざーっとご紹介しました。

コマンドやオプションがたくさんありますが、いずれも、 比較的想像した通りの動作をするものではないかと思います。

オンラインマニュアル(man nmcli)や、 「--help」オプションを指定して出力されるヘルプメッセージ、 コマンドラインでのTABによる補完などを参考に、いろいろお試し実行してみてください。

宿題の答え

前回の宿題は、

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

でした。

説明できそうなものを、いくつかご紹介します。
書式などは、それぞれのオンラインマニュアル(man ip-link など)で確認してください。

 

「link」は、ネットワークデバイスの設定や確認を行うためのものです。
たとえば、ループバック・インタフェースである「lo」の状態を確認するには、 以下のように実行します。

  $ ip link show lo
  1: lo:  mtu 65536 qdisc noqueue state \
  UNKNOWN mode DEFAULT group default qlen 1
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

Linuxには、 いろいろな操作を試すためのダミーデバイス「dummy」というものがあります。
たとえば、「dummy1」という名前でダミーデバイスを作成するには、 以下のように実行します。

  $ sudo ip link add dummy1 type dummy

ダミーデバイスは、実体がないことを除けば、通常のデバイスと同じように扱えます。 たとえば、以下の手順でIPアドレスを設定できます。

  $ sudo ip addr add 192.168.111.211/24 dev dummy1

ただし、実体がないので、リンクを手動でアップする必要があります。

  $ sudo ip link set dummy1 up

これで、pingが通るようになります。

  $ ping 192.168.111.211
  PING 192.168.111.211 (192.168.111.211) 56(84) bytes of data.
  64 bytes from 192.168.111.211: icmp_seq=1 ttl=64 time=0.108 ms
  64 bytes from 192.168.111.211: icmp_seq=2 ttl=64 time=0.100 ms
  ...後略...

経路の追加や削除も可能です。 ホンモノのデバイスに対して実行するのに躊躇するコマンドがあれば、 これを機会にいろいろ試してみてください。

  $ sudo ip route add 192.168.2.0/24 via 192.168.111.211

いろいろ試して、不要になったら、削除しましょう。

  $ sudo ip link delete dummy1

 

つぎに、「monitor」です。
デバイスやアドレスなどの状態をモニタリングするためのものです。

  $ sudo ip monitor all

と実行しておくと、状態が変化したときに出力してくれます。
たとえば、以下の手順でIPアドレスを追加すると、

  $ sudo ip addr add 192.168.8.139/24 dev wlp5s0

ip monitor all は、以下のようなメッセージを出力します。

  [nsid current]3: wlp5s0 inet 192.168.8.139/24 scope global secondary wlp5s0
       valid_lft forever preferred_lft forever
  [nsid current]local 192.168.8.139 dev wlp5s0 table local proto kernel \
  scope host  src 192.168.8.21 

また、RTnetlink (Linuxカーネルのルーティングテーブルの参照や変更を行うためのもの) をモニタリングするコマンド「rtmon」 の出力ファイルを解釈して出力することもできます。
まず、以下のようにrtmonコマンドを実行して、 「/var/log/rtmon.log」にモニタリング結果を出力させておきます。

  $ sudo rtmon file /var/log/rtmon.log

次に、たとえば、以下のようにルーティングテーブルを変更します。

  $ sudo ip route add 192.168.2.0/24 via 192.168.1.254
  $ sudo ip route del 192.168.2.0/24 via 192.168.1.254

そして以下を実行すると、上記変更が記録されていることを確認することができます。

  $ ip monitor file /var/log/rtmon.log
  ...中略...
  Timestamp: Sat Aug 12 18:16:59 2017 753611 us
  192.168.2.0/24 via 192.168.1.254 dev wlp5s0 
  Timestamp: Sat Aug 12 18:17:06 2017 278702 us
  Deleted 192.168.2.0/24 via 192.168.1.254 dev wlp5s0 
  ...後略...

 

最後に、「ntable」です。
IPv4 ARP および IPv6 Neighbor Discovery(ND) テーブルのパラメータの参照と変更を行うためのものです。
なお、ARPもNDも、MACアドレスを解決するための機能です。

パラメータの各値を確認するには、以下のように実行します。

  $ ip ntable show

パラメータ値を変更するには、以下のように実行します。
名前には、「arp_cache」か「ndisc_cache」を指定します。
パラメータ値にはいろいろあり、オンラインマニュアルには一通り載っています。 が、残念ながら、個々の説明までは記されていません。
(ですので、小粋な例を示すことができませんすみません。)

  $ ip ntable change name 名前 パラメータ名 値 dev デバイス名

 

他にもまだまだありますが、説明しづらいか、よくわかっていないため、 割愛させていただきたいと存じます。

今回の宿題

今回の宿題は、

  ネットワークの接続を追加・削除したり変更したりしてみましょう。

です。

あらかじめ接続をGUIで追加しておけばよいのですが、 GUIのない環境ではそれもままなりません。

nmcliを使ってすべてコマンドラインでできれば、GUIがなくてもなんとかなります。 また、その安心感で、心にも余裕ができるように思います。

あとがき

最近、休日の過ごし方について、悩むことが多くなりました。

以前は、家族サービスや親戚付き合い、当メルマガや某原稿の執筆、 栗のイベントやらで、休日をほぼフル活用していました。

ですが、家族サービスの頻度が低下し、当メルマガの発行をさぼるようになり、 某日経Linuxの発行が2ヶ月に1回と変更された今、 以前よりも休日に暇ができるようになったのです。

それ自体は喜ばしいことなのですが、その暇をどのように過ごせばいいのか、 過ごすべきなのかが、わからないのでした。

休日になにもしないで休息することも必要だとはわかっているのですが、 貧乏性のためか、何もしないでいると落ち着かず、 休息にならないということになってしまいがちです。

かといって、ゴリゴリ仕事をするのも体に悪そうです。

ですので、何かの入門書を読んで、書いてある通りにやってみれば、 頭をめいいっぱい使うこともなく、新しいことも覚えられ、 達成感も得られて良いのではないだろうか、と思い至りました。

というわけで、最近、以下の3冊をさらっと読んでみました。

Unity5入門
http://www.amazon.co.jp/exec/obidos/ASIN/4797384433/usupiorg-22
GitHub実践入門
http://www.amazon.co.jp/exec/obidos/ASIN/477416366X/usupiorg-22
CUDA by Example 汎用GPUプログラミング入門
http://www.amazon.co.jp/exec/obidos/ASIN/4844329782/usupiorg-22

いずれも、サンプルを動かしたりやってみたりするのに、 たいした労力を必要としません。また、LinuxでもWindowsでも試せます。

そして、1冊読み終えるごとに、達成感が得られます。

やる気が出なくて困っているという貴兄は、ぜひお試しください。
コツは、わかりやすいと評判の入門書を選ぶことです。

というわけで、暇を過ごす方法をひとつ見つけられましたが、 今もっとも恐れていることは、暇があるならメルマガを書けばいいのに、 と言われることだったりします。(…い、いや、おっしゃる通りです…はい。)

 

今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、年内に発行したいと考えておりますです。

 

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

その他、作者に関するページは、概ね以下にございます。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://twitter.com/kuriking/ (twitter)
http://facebook.com/kuriking3 (facebook)
https://jp.pinterest.com/kuriking/ (pinterest) https://www.instagram.com/kuri_king_/ (instagram)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本