SVX日記
2016-08-14(Sun) ラズベリーパイ(pidora)で無線LANブリッジする
というわけで、Raspbianでなくpidoraで、同じようにブリッジを形成することにした。
それはそれとして、そのうち無線LANアクセスポイント自体をラズベリーパイで構築してみようと、先行して注文しておいたWN-AC433UAが届いたので、早速装着してみたところ……あかーん! スケベ心で先を見据えて802.11ac対応を選んだのが裏目った。新しすぎてドライバが入ってないではないか。
最近のLinuxのコネクティビティの良さに油断しとったわ。どうやらアウトボックスのドライバは既にあるようだが、今はそこに時間を掛けたくないので。サクッとタイムカプセル処分とする。ちなみに、ひとつ前のWN-G300UAはイケるようだ。最初から、値段も消費電力も優しいコッチにしておけばよかったワイ。
ひと通りガックリしたところで、ブリッジの形成に戻る。pidoraはFedora系なので、ネットワーク系の設定ファイルの場所が、/etc/networkの下ではなく、/etc/sysconfig/network-scriptsの下になる。と、そんなことより、基本的にはNetworkManagerを使うべきなので、場所がどうこうよりは、nmcliコマンドを駆使することの方が重要だ。
[root@xxxpi ~]# nmcli device wifi list ifname wlan0
* SSID MODE CHAN RATE SIGNAL BARS SECURITY
<ESSID1> Infra 1 44 Mbit/s 52 ▂▄__ WPA1 WPA2
<ESSID2> Infra 1 16 Mbit/s 43 ▂▄__ WPA1 WPA2
<ESSID3> Infra 7 54 Mbit/s 23 ▂___ WEP
<ESSID4> Infra 1 54 Mbit/s 46 ▂▄__ WEP
[root@xxxpi ~]# nmcli device wifi rescan ifname wlan0
[root@xxxpi ~]# nmcli device wifi connect "<ESSID>" password "<KEY>" ifname wlan0
[root@xxxpi ~]# iwconfig wlan0
wlan0 IEEE 802.11bgn ESSID:"xxxxxxxxxxxx" Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency:2.412 GHz Access Point: AA:BB:CC:DD:EE:F0
Bit Rate:300 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:****-****-****-****-****-****-****-**** Security mode:open
Power Management:off
Link Quality=100/100 Signal level=74/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
[root@xxxpi network-scripts]# cat ifcfg-<ESSID>
HWADDR=AA:BB:CC:DD:EE:F0
ESSID="<ESSID>"
MODE=Managed
KEY_MGMT=WPA-PSK
SECURITYMODE=open
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=<ESSID>
UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxx
ONBOOT=yes
[root@xxxpi network-scripts]# cat keys-<ESSID>
WPA_PSK='<KEY>'
[root@xxxpi ~]# yum install net-tools
[root@xxxpi ~]# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.xx.xx.xxx netmask 255.255.255.0 broadcast 172.xx.xx.255
ether aa:bb:cc:dd:ee:6e txqueuelen 1000 (Ethernet)
[root@xxxpi ~]# nmcli connection add type bridge ifname br0 stp no
[root@xxxpi ~]# ifconfig br0
br0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether aa:bb:cc:dd:ee:02 txqueuelen 0 (Ethernet)
[root@xxxpi ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 0080.000000000000 no
[root@xxx network-scripts]# cat ifcfg-bridge-br0
DEVICE=br0
STP=no
TYPE=Bridge
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=bridge-br0
UUID=xbridgex-xxxx-xxxx-xxxxxxxxxxxxxxxxx
ONBOOT=yes
[root@xxxpi ~]# nmcli device show br0
[root@xxxpi ~]# nmcli connection show configured bridge-br0
[root@xxxpi ~]# nmcli connection add type bridge-slave ifname wlan0 master br0
[root@xxxpi ~]# ifdown wlan0
……この辺りから、何をどうやっても意図した設定にならなくなってしまい丸一日ドハマリ。nmcliコマンドでチマチマと設定しているのが、なんだかくねくねする棒で背中を掻いているようなもどかしい気分になってきた。
結局、直接に、有線側と無線側の両方の設定ファイルから要らない部分を削除し、ブリッジへ帰属する設定を追加したら希望の動作となった。膨大な時間を無駄にしたわ。あほくさ。ちなみにdhcpのままでいいならifcfg-bridge-br0はノータッチでいい。
[root@xxxpi network-scripts]# diff -bc ifcfg-eth0.org ifcfg-eth0
DEVICE=eth0
- BOOTPROTO=dhcp
ONBOOT=yes
NM_CONTROLLED=yes
--- 1,4 ----
DEVICE=eth0
ONBOOT=yes
NM_CONTROLLED=yes
+ BRIDGE=xbridgex-xxxx-xxxx-xxxxxxxxxxxxxxxxx
[root@xxxpi network-scripts]# diff -bc ifcfg-<ESSID>.org ifcfg-<ESSID>
KEY_MGMT=WPA-PSK
SECURITYMODE=open
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=<ESSID>
UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxx
ONBOOT=yes
--- 4,10 ----
KEY_MGMT=WPA-PSK
SECURITYMODE=open
TYPE=Wireless
NAME=<ESSID>
UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxx
ONBOOT=yes
+ BRIDGE=xbridgex-xxxx-xxxx-xxxxxxxxxxxxxxxxx
[root@xxxpi network-scripts]# systemctl daemon-reload
[root@xxxpi network-scripts]# systemctl restart NetworkManager