Raspberry Pi (Jessie) でのネットワーク設定メモ

0 件のコメント
RHEL/CentOS 系を使ったことはあったが、Raspberry Pi の標準はdebian系。
その違いを含め、最近のsystemd-sysvなどのLinuxの変化もちゃんと把握してなかったこともあって、無駄にハマることが結構あった。。

とりあえず、ここはネットワーク周りの設定関連情報についてメモっとく。
最後にAP用の情報も追記

デバイス名の認識について

eth0やwlan0などのデバイス名の認識はudevのルールに従う。
但し、どう認識されているのかが、よくわからんかった。

/lib/udev/rules.d/ 以下に各種ルール用ファイルがあり、ネットワーク系デバイスは 75-persistent-net-generator.rules に記載がある。
この19-21行目が下記。
デバイス名がeth0や、wlan0などの場合は、udev設定が吐き出されないようになっていてブラックボックス状態。
# device name whitelist
 KERNEL!="ath*|msh*|ra*|sta*|ctc*|lcs*|hsi*", \
                                         GOTO="persistent_net_generator_end"
これを
# device name whitelist
 KERNEL!="ath*|msh*|ra*|sta*|ctc*|lcs*|hsi*|eth*|wlan*", \
                                         GOTO="persistent_net_generator_end"
としておけば、認識したデバイスについてのルールを、/etc/udev/rules.d/70-persistent-net.rules に吐き出してくれる。
サンプルとしては下記
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# Unknown net device (/devices/platform/soc/3f300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0) (brcmfmac_sdio)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:27:eb:0a:21:b3", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

# USB device 0x:0x (smsc95xx)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:27:eb:5f:74:e6", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
このファイルを修正することで、wlan0→wlan1にしたり、デバイス名をカスタマイズできるようになる。

ネットワーク設定方式を統一する

過渡期なのかどうかはわからんが、ネットワークという低レイヤな設定についても、複数の設定方法がある。
大きく分類すると新式なNetworkManager系設定と旧式なifconfig系設定の2パターン。 これを混在して使うとハマる。。

NetworkManagerで統一する

NetworkManagerは基本的にデスクトップ(或はモバイル的)環境を想定してるのか、プラグの抜き差しや、WiFi環境の変化など、環境が変化するような場合にも柔軟に対応してくれる。
旧方式では、ifplugdなどを利用して対応していたが、新式のNetworkManagerを使う場合はそういった追加機能は不要で、全部やってくれるみたい。

NetworkManager利用のための準備

こっちで統一するのであれば、/etc/network/interfaces をこんな感じ↓で空にする。
# mv /etc/network/interfaces /etc/network/interfaces.bkup
# touch /etc/network/interfaces

通常、こんなの↓が入っているが、iface *** のような行がこのファイルにあると、そのデバイスはNetworkManagerの管理下に入らずに、旧式設定での設定になる。
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


NetworkManagerの操作

NetworkManagerの操作をする場合、「プロファイル」に各種設定を結びつけるような方法になる。
プロファイル名がeth0など、デバイス名と同名で説明されているケースがあるがちゃんと区別すること。

NetworkManager はGUIで説明されてることが多いが、CLI操作したいときはnmcliを使う。
ここではnmcliに絞った操作方法を記載する。
スクリプト処理とかするときはやっぱりCUIを知っといたほうが良い

管理下のデバイス表示

「管理無し」と表示されるデバイスは NetworkManagerの管理下にはなく、旧式の方法で管理されている。
# nmcli dev status
デバイス  タイプ    状態      接続           
wlan0     wifi      接続済み  aterm-99999-g 
eth0      ethernet  切断済み  --             
lo        loopback  管理無し  --

WiFiスキャン

周囲のWiFiをリスト表示。
# nmcli dev wifi list
*  SSID             モード    CHAN  レート     信号  バー  セキュリティ 
   Buffalo-G-xxxx   インフラ  4     54 Mbit/s  79    ▂▄▆_  WPA1 WPA2    
   rt400m-xxxxxx-1  インフラ  13    54 Mbit/s  40    ▂▄__  WPA1 WPA2    
   rt400m-xxxxxx-2  インフラ  13    54 Mbit/s  39    ▂▄__  WEP          
   PS3-xxxxxxx      インフラ  6     54 Mbit/s  84    ▂▄▆█  WPA1

WiFi設定をする

nmcli dev wifi connect SSID password SSID-KEY ifname wlan0
この操作だと、SSIDとして指定した名称が自動的に「プロファイル名」に適用され、設定ファイル /etc/NetworkManager/system-connections/SSID が生成される。
これで次回起動後は自動的に接続可能になる。
なお、この設定ではデフォでDHCP設定となる。

DHCP→固定IPに設定変更

nmcli con mod プロファイル名 ipv4.method manual ipv4.addresses "x.x.x.x/x y.y.y.y" ipv4.dns "z.z.z.z"
※ y.y.y.y はGW
※ z.z.z.z はDNS。/etc/resolv.confに反映される

固定IPからDHCPへ変更

nmcli con mod プロファイル名 ipv4.method auto ipv4.addresses "" ipv4.dns ""

プロファイルを削除

nmcli con del プロファイル名

固定IPで新規プロファイル追加

nmcli connection add type ethernet con-name プロファイル名 ifname wlan0 ip4 10.1.1.3/24 gw4 10.1.1.1

DHCPで新規プロファイル追加

nmcli con add type ethernet con-name プロファイル名 ifname wlan0

有効化

nmcli con up ifname eth0

無効化

nmcli dev disconnect eth0

旧式で統一

個人的にはこっちに慣れていて好きなので旧式と呼ぶのは好きじゃないが。。

旧式利用のための準備

NetworkManager を無効化

# systemctl stop NetworkManager
# systemctl mask NetworkManager

設定ファイル /etc/network/interfaces を準備

eth0が固定IP、wlan0がDHCPの例。
auto lo
iface lo inet loopback

iface eth0 inet static
    address 192.168.0.10
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.100

allow-hotplug wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
DNSはresolv.confに書く派です。
なお、JESSIEにて固定IPを使うときは/etc/dhcpcd.confに下記のように記載するという情報が多いけど、、
interface eth0
static ip_address=192.168.0.15/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
これって、networkingスクリプトによって設定したネットワーク設定を、dhcpcdが上書きしてしまうから。
なので、dhcpcd.confに固定IP設定を書くんじゃなくて、dhcpcd.confに
denyinterfaces eth0
を入れて、/etc/network/interfaces にWheezyのときと同様に固定IPを記載するのが、王道のように思える。

旧式のネットワーク操作

とりあえずWiFi回りだけ。
ifconfig/iproute2 などのコマンド操作や、networkingスクリプトでの処理説明は省略。

WiFiスキャン

iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: A4:12:42:xx:xx:xx
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=64/70  Signal level=-46 dBm  
                    Encryption key:on
                    ESSID:"xxxxxxxxxx"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s
                    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=0000000000000000
                    Extra: Last beacon: 40ms ago

WiFi設定

wpa_passphrase SSID SSID-KEY | grep -v '#psk' >> /etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant.confの例
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="aterm-xxxxx"
        psk=5cccf4bde3f63f365e766cec0557db3ed10ba948427cee06467b80f8ebc12345
}

hostapd を使って、RasPiをAPにするときのドライバーについてメモ

AP(AccessPoint)として利用できるWiFiドングルは限られてる。
入手しやすいものだと、、こうか。
PlanexのGW-USNANO2AAdafruitで提供されているhostapdのバイナリに置き換えて、rtl871xdrv でいける
BuffaloのWLI-UC-GNMhostapd v2.0 以降で、nl80211でいける
Raspberry Pi3のビルトインBCM43438hostapd v2.0 以降で、nl80211でいける



0 件のコメント :

コメントを投稿

ご来訪者様の判別のため、
匿名希望の方もコメントの記入者欄に「名前/URL」 を選択し、
テキトーなペンネームを入れてくださいm(_ _)m
※ URLは不要。書いていただいてもOK。