SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|

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

  これをやると、/etc/sysconfig/network-scriptsの下にifcfg-<ESSID>とkeys-<ESSID>が作られる。内容は以下のような感じ。

[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>'

  すぐにdhcpが動くので、この状態で、既に通信が可能になっている。

  ifconfigの形式のが見慣れているので、net-toolsを導入して、確認。

[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

  そして、NetworkManagerを再起動すると……

[root@xxxpi network-scripts]# systemctl daemon-reload 
[root@xxxpi network-scripts]# systemctl restart NetworkManager

  ……経路にループが発生してブロードキャストストームが発生する!……ので、あわてず有線LANを抜いて、再起動! ネットワークトラフィック低下! ブリッジの形成を確認! 現時刻をもって「ブリッジ形成作戦」を終了とします……といいたいところだが、普段使いのPCから、ラズベリーパイにsshアクセスができないことに気づいた(またかよ)……つづく。