(無償) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

2016年11月17日木曜日

【Linux CentOS 7 64bit】WIFI接続の設定方法(コマンドラインで「nmcli」を使用する。)

2017年4月6日 補足追加


☆有線LAN接続の場合は、「【Linux CentOS 7 64bit】コマンドラインから有線LAN接続を開始する方法」を参照



CentOS 7(1511)64bitのminimalインストール(+ MATE)では、初期状態ではwifiを扱えなかった。

以下では、上記のCentOS 7 システムにおいてネットワークマネージャーをWifiに対応させる設定、
そして、Wifiアクセスポイントに接続する設定について記述している。



□設定前の状況を調べた。

ネットワーク接続情報を表示させた。私の環境では「wlp4s0」がWifiデバイスだった。
# nmcli d
デバイス  タイプ    状態      接続
enp5s0    ethernet  接続済み  enp5s0
lo        loopback  管理無し  --  
wlp4s0    wifi      管理無し  -- 

下記コマンドでは、wifiは「有効」にはなっている。
# nmcli radio wifi
有効
設定前のネットワークマネージャーの状態を表示させた。
# systemctl status NetworkManager.service
NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since 水 2016-11-16 21:22:27 JST; 1h 30min ago
 Main PID: 668 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           ├─ 668 /usr/sbin/NetworkManager --no-daemon
           └─3891 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp5s0.pid -lf /var/lib/NetworkManager/dhclient-56655424-ed3c-xxxx-yyyy-...
11月 16 21:52:19 localhost.localdomain dhclient[3891]: DHCPACK from 192.168.1.1 (xid=0x35bfe30f)
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    address 192.168.1.4
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    plen 24 (255.255.255.0)
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    gateway 192.168.1.1
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    server identifier 192.168.1.1
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    lease time 259200
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>    nameserver '192.168.1.129'
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>  (enp5s0): DHCPv4 state changed unknown -> bound
11月 16 21:52:19 localhost.localdomain dhclient[3891]: bound to 192.168.1.4 -- renewal in 118396 seconds.
11月 16 21:52:19 localhost.localdomain NetworkManager[668]: <info>  Policy set 'enp5s0' (enp5s0) as default for IPv4 routing and DNS.


■ネットワークマネージャーがwifiを扱えるように設定する。


○wifi用プラグインパッケージの情報を表示させた。

下記コマンドで確認してみてパッケージ(NetworkManager-wifi)がインストールされていない場合、
有線ネットワークなど別の経路でインターネットに接続する必要がある。
(インストール済みの場合は、下記リポジトリーで「installed」と示される。)

# yum info NetworkManager-wifi
名前                : NetworkManager-wifi
アーキテクチャー    : x86_64
エポック            : 1
バージョン          : 1.0.6
リリース            : 31.el7_2
容量                : 160 k
リポジトリー        : updates/7/x86_64
要約                : Wifi plugin for NetworkManager
URL                 : http://www.gnome.org/projects/NetworkManager/
ライセンス          : GPLv2+
説明                : This package contains NetworkManager support for Wifi and OLPC devices.

☆wifi用プラグインパッケージのインストールを行った。
# yum install NetworkManager-wifi
総ダウンロード容量: 160 k
インストール容量: 115 k
Is this ok [y/d/N]: y
インストール:
  NetworkManager-wifi.x86_64 1:1.0.6-31.el7_2                                                                
完了しました!

☆NetworkManagerサービスを再起動した。
# systemctl restart NetworkManager.service


これによって、デスクトップ環境のLAN接続アイコンから表示されるウィンドウに、
wifiに関する情報が表示されるようになった。

また、次のコマンドで周辺のwifi情報(SSID、モード、チャネル、電波強度、セキュリティー)を取得できた。

# nmcli dev wifi list
*  SSID               モード    CHAN  レート     信号  バー  セキュリティ
   <xxxxxxxxx>      インフラ  6     54 Mbit/s  84    ▂▄▆█  WPA2      
   <xxxxxxxxx>      インフラ  5     54 Mbit/s  39    ▂▄__  WPA1 WPA2  
   <xxxxxxxxx>      インフラ  1     54 Mbit/s  35    ▂▄__  WPA1 WPA2  
   <xxxxxxxxx>      インフラ  11    54 Mbit/s  37    ▂▄__  WPA2      
   <xxxxxxxxx>      インフラ  7     54 Mbit/s  37    ▂▄__  WEP        
   <xxxxxxxxx>      インフラ  11    54 Mbit/s  39    ▂▄__  WPA1 WPA2  
   <xxxxxxxxx>      インフラ  1     54 Mbit/s  37    ▂▄__  WPA1      
   <xxxxxxxxx>      インフラ  5     54 Mbit/s  35    ▂▄__  WPA2      
   <xxxxxxxxx>      インフラ  7     54 Mbit/s  34    ▂▄__  WEP        
   <xxxxxxxxx>      インフラ  6     54 Mbit/s  35    ▂▄__  --        
   <xxxxxxxxx>      インフラ  7     54 Mbit/s  35    ▂▄__  WPA1 WPA2  
   <xxxxxxxxx>      インフラ  1     54 Mbit/s  35    ▂▄__  WPA2      
   <xxxxxxxxx>      インフラ  11    54 Mbit/s  35    ▂▄__  WPA2      
   <xxxxxxxxx>      インフラ  6     54 Mbit/s  35    ▂▄__  WPA1 WPA2

下記のように、ネットワークマネージャーがwifiインターフェイス「wlp40s」を扱っていることがわかる。

# systemctl status NetworkManager.service
NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since 水 2016-11-16 22:53:33 JST; 3min 35s ago
 Main PID: 5683 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           ├─5683 /usr/sbin/NetworkManager --no-daemon
           └─5696 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp5s0.pid -lf /var/lib/NetworkManager/dhclient-56655424-ed3c-xxxx-yyyy-...
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  startup complete
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (enp5s0): device state change: ip-config -> ip-check (reason 'none') [70 80 0]
11月 16 22:53:34 localhost.localdomain dhclient[5696]: bound to 192.168.1.4 -- renewal in 111153 seconds.
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (enp5s0): device state change: ip-check -> secondaries (reason 'none') [80 90 0]
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (enp5s0): device state change: secondaries -> activated (reason 'none') [90 100 0]
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  NetworkManager state is now CONNECTED_GLOBAL
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  NetworkManager state is now CONNECTED_SITE
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  NetworkManager state is now CONNECTED_GLOBAL
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (enp5s0): Activation: successful, device activated.
11月 16 22:53:34 localhost.localdomain NetworkManager[5683]: <info>  (wlp4s0): supplicant interface state: ready -> inactive



■Wifiアクセスポイントに接続するための設定を行った。

☆nmcliを使って接続情報を作成した。

(ポイント)
con-name に指定するのは、接続名なので任意の名前である。後の設定でよく参照する。
ifname に指定するのは、デバイス名で、最初の手順「nmcli d」で調べた名前である。
ここでは両者で同じ名称を用いている。

# nmcli con add con-name wlp4s0 ifname wlp4s0 type wifi ssid xxxxxxxxxx
接続 'wlp4s0' (<UUID略>) が正常に追加されました。

○作成された接続情報を確認した。
# cat /etc/sysconfig/network-scripts/ifcfg-wlp4s0 
ESSID="xxxxxxxxxx"
MODE=Managed
TYPE=Wireless
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=wlp4s0
UUID=<UUID略>
DEVICE=wlp4s0
ONBOOT=yes

○接続テスト1(必要な情報が不足しているので、失敗した。)
# nmcli con up wlp4s0
エラー: 接続のアクティベートに失敗しました。

☆接続情報に、セキュリティーモードを追加した。
# nmcli con modify wlp4s0 wifi-sec.key-mgmt wpa-psk

○接続テスト2(必要な情報が不足しているので、失敗した。)
# nmcli con up wlp4s0
ワイヤレスネットワーク 'xxxxxxxxxx' へのアクセスにはパスワードまたは暗号キーが必要です。
Warning: password for '802-11-wireless-security.psk' not given in 'passwd-file' and nmcli cannot ask without '--ask' option.
エラー: 接続のアクティベートに失敗しました。

☆接続情報に、パスワードを追加した。
# nmcli con modify wlp4s0 wifi-sec.psk WIFIpassword

☆接続(成功)
# nmcli con up wlp4s0
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)

これで、システムの再起動後でも、上記で設定したwifi接続が自動的に行われた。
(ただし、ONBOOT=yesになっている必要がある。)


○切断するには接続名を与えて次のコマンドを使う。
# nmcli con down wlp4s0
Connection 'wlp4s0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
<完了>

TP-Link WIFI 無線LAN 中継器 11ac/n/a/g/b 433 300Mbps 11ac対応 3年保証 RE200

新品価格
¥2,857から
(2018/3/19 23:42時点)



□さらに見てみる。

○接続情報を確認した。(WIFIパスワードはここには保存されていなかった。)
# cat /etc/sysconfig/network-scripts/ifcfg-wlp4s0 
ESSID="xxxxxxxxxx"
MODE=Managed
TYPE=Wireless
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=wlp4s0
UUID=<UUID略>
DEVICE=wlp4s0
ONBOOT=yes
KEY_MGMT=WPA-PSK
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

○wpa_supplicantというサービスが動作していた。
# systemctl status wpa_supplicant.service
wpa_supplicant.service - WPA Supplicant daemon
   Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; vendor preset: disabled)
   Active: active (running) since 水 2016-11-16 23:53:30 JST; 50min ago
 Main PID: 699 (wpa_supplicant)
   CGroup: /system.slice/wpa_supplicant.service
           └─699 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log -P /var/run/...
11月 16 23:53:30 localhost.localdomain systemd[1]: Starting WPA Supplicant daemon...
11月 16 23:53:30 localhost.localdomain systemd[1]: Started WPA Supplicant daemon.

○テスト(wpa_supplicantサービスを停止してみた。)
# systemctl stop wpa_supplicant.service

すると、Wifi接続が切断されたが、しかしすぐに自動的に再接続された。

このとき、wpa_supplicantというサービスも自動的に再開された。
# systemctl status wpa_supplicant.service
wpa_supplicant.service - WPA Supplicant daemon
   Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; vendor preset: disabled)
   Active: active (running) since 木 2016-11-17 00:44:31 JST; 5s ago
 Main PID: 4217 (wpa_supplicant)
   CGroup: /system.slice/wpa_supplicant.service
           └─4217 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log -P /var/run...
11月 17 00:44:31 localhost.localdomain systemd[1]: Starting WPA Supplicant daemon...
11月 17 00:44:31 localhost.localdomain systemd[1]: Started WPA Supplicant daemon.

この情報から、ログファイルが、/var/log/wpa_supplicant.log であることがわかった。



<参考>
・2.3. USING THE NETWORKMANAGER COMMAND LINE TOOL, NMCLI
< https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Using_the_NetworkManager_Command_Line_Tool_nmcli.html > 2016年11月16日

・Re: CentOS 7 and NetworkManager-gnome package
< https://mail.gnome.org/archives/networkmanager-list/2015-October/msg00022.html > 2016年11月16日

・NetworkManager / Wireless On Latest CentOS7 Installs
< http://centosfaq.org/centos/networkmanager-wireless-on-latest-centos7-installs/ > 2016年11月16日

・CentOS7 で nmcli を使ったWiFi接続できた
< https://papairoiro.blogspot.jp/2015/08/centos7-nmcli-wifi-nuc5ppyh.html > 2016年11月14日

・CentOS7でステルスSSIDへ接続する方法
< http://qiita.com/vuyuky/items/64e8fdd11e3f7ceaa49c > 2016年11月14日