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|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|

2016-08-07(Sun) CUIで無線LANに接続

  実は、ラズベリーパイが流行り始めたころに、なんとなくAとBをゲットしてはいたのだが、うまくFedoraが動かせなかったうえ、それほどの用途も思いつかなかったので、そのまま放置していたのであった。んが、ちょっとした用途が浮上し、最新のOSであるRaspbian Jessieを入れてみたところ、Debian系ながら、使いたいパッケージが十分に揃っていることに気づき、いまさらながらゴソゴソとイジり始める次第であった。

  画像の説明

  というわけで、最近になってようやく整えたHDMI環境に、Full版のRaspbian Jessieを導入したラズベリーパイ1のモデルBを接続……と、普通にフルHDでGUIが表示されることに軽く驚く。んが、全体にもっさりだな……って、なにげにメニューのゲームの中にマインクラフトが入ってんじゃん。意外とヌルヌル動くが……いったい何を目指しているんだ。

  目的とする用途にGUIは不要なので、改めてLite版のRaspbian Jessieを導入しなおす。んが、心配なのが無線LAN。USBポートにこのモジュールを挿しているのだが、サーバ用途で無線LANを使ったことがないので、CUIでの設定の仕方がわからん。iwconfigとか使うんだっけ。

  ググりつつ、試行錯誤する。まずは、アクセスポイントのスキャン。

# iwlist wlan0 scan | grep ESS

  アクセスポイントに接続するにはこう。

# ifdown wlan0
# iwconfig wlan0 essid "<ESSID>" key "s:<KEY>"
# iwconfig wlan0

  しかし、これだとDHCPクライアントが起動しないので、IPが振られない。手動で起動する。

# dhclient -v wlan0

  結局、これだけでネットワークに接続できるようになった。できてみれば、そのまんまだな。

  ただし、いちいち手動でやるのは実用的ではないので、自動で起動する設定を書く。まずは認証設定。/etc/wpa_supplicant/wpa_supplicant.confに定義する。

network={
	ssid="<ESSID>"
	psk="<KEY>"
}

  WEPの場合は以下。

network={
	ssid="<ESSID>"
	key_mgmt=NONE
	wep_key0="<KEY>"
}

  /etc/network/interfacesにDHCPを使う旨を定義する。

# diff /etc/network/interfaces.org /etc/network/interfaces
< iface wlan0 inet manual
> iface wlan0 inet dhcp

  こうすれば、インタフェイスを上げるだけで、IPが振られ、ルーティングも設定されるので、無線LAN経由でのネットワーク開通である。

# ifup wlan0

  無線接続が有効になったことは、以下のように確かめられる。

# 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:150 Mb/s   Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:****-****-****-****-****-****-****-****   Security mode:open
          Power Management:off
          Link Quality=95/100  Signal level=61/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

  しかし、普段使いのPCから、ラズベリーパイにsshアクセスができないことに気づいた……つづく。


2016-08-08(Mon) ブリッジしない無線ブリッジ

  というわけで、とある目的のため、先日からラズベリーパイをイジり始めているのだが、有線接続されている普段使いのPCから、無線LAN経由でラズベリーパイにsshアクセスができないことに気づいた。構築、メンテのためにはsshアクセスが不可欠だ。

  ラズベリーパイには有線LANもあるので、そちらも接続すれば、当然sshアクセスできる。抜くとできない。なんで?

  不思議なことに「ルータ、PPPoEクライアント、DHCPサーバ」を務めているサーバからは、無線LAN経由でsshアクセスができる。何が違う? ウチのネットワークの状況を図化すると、以下のようになる。

  画像の説明

  無線のアクセスポイントはplanexのMZK-MF300N2というものを使っており、ルータモードでなく、アクセスポイントモードで動作させている。つまりは、有線ネットワークと無線ネットワークをまたがるブリッジとして動作しているわけだ。無線を有線に置き換え、ネットワークの状況を図化すると、以下のようになる。

  画像の説明

  この状況から、PCからsshアクセスができない理由はないのだが……pingにも応答しない。そうなるとarpか……と思い、各ホストでtcpdumpを動かしつつ、PCからarpingしてみる……と、ラズベリーパイのwlan0だけarpが到着しない!? なんだそれは。つまりは、無線のアクセスポイントがブリッジの動作をしていないということではないのか。アホか。

  幸い、以前に買ったELECOMのWRH-300WH-Sという安物のコンパクト無線LANルータがあるので、そいつもハブにつなぎ、そっちの無線LAN経由でラズベリーパイにsshアクセスしてみる……当然できる。そらそうだ。ブリッジが「ブロードキャストドメインを分割しない」「MACアドレスを学習し必要なパケットのみ転送する」の原則どおり動作すればそうなる。

  改めてアホにも設定があるんじゃないかと思い直し、すべての設定画面をナメ回したが、それっぽい設定は見当たらない。うーむ、確かに一般的な利用シーンでは、無線側からインターネットアクセスさえできればいい、ということなのだろうが、原理原則的な動作ができないというのはどうなのだろう。サポートを問い詰めてやろうと思ったら、もうサポート期間は過ぎているっぽい。くそ。

  まぁ、今はローエンドな製品なら数千円で買えるし、さっさと他のメーカの無線LANルータを買って、捨てればいいか。

  そのうち、無線LANアクセスポイント自体をラズベリーパイで構築するのもいいかもしれんな。


2016-08-11(Thu) ラズベリーパイ(Raspbian)で無線LANブリッジする

  CUIで無線LAN接続に成功したものの、アホな無線ルータに散々に悩ませられたが、ローエンドな無線LANルータを買って解決。次なる目標はラズベリーパイをルータにすることだ。こんな感じに。

  インターネット─[モデム]─宅内LAN─[無線ブリッジ]…無線LAN…[ラズベリーパイ]─直結LAN─[対象機器]

  ……んが、ラズベリーパイをルータにすると、対象機器へのルーティングの定義が必須となる。めんどい。ここは、ラズベリーパイもブリッジとするべきではないか。それならば、対象機器へのIPの払い出しも、宅内LANにつながっているLinuxルータで一括管理できるし。

  しかし、ラズベリーパイに導入したRaspbianは、Debian系なので個人的に土地勘がない。ブリッジってどうやるんだ?

root@xxxpi:/etc/network# diff -bc interfaces.org interfaces
  auto lo
  iface lo inet loopback
  
! iface eth0 inet manual
  
! allow-hotplug wlan0
! iface wlan0 inet manual
      wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
--- 9,27 ----
  auto lo
  iface lo inet loopback
  
! auto eth0
! iface eth0 inet static
!     address 0.0.0.0
  
! auto wlan0
! iface wlan0 inet static
!     address 0.0.0.0
      wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  
+ auto br0
+ iface br0 inet dhcp
+     bridge_ports eth0 wlan0

  ……と、できてみれば単純な設定だが、無線の設定とも絡んで、かなり手こずらされた。無線の設定は、先日の/etc/wpa_supplicant/wpa_supplicant.confに設定しておけばいい。

root@xxxpi:/etc/network# ifconfig
br0       Link encap:Ethernet  HWaddr aa:bb:cc:dd:ee:52
          inet addr:172.xx.xx.xxx  Bcast:172.xx.xx.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
 
eth0      Link encap:Ethernet  HWaddr aa:bb:cc:dd:ee:52
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
 
wlan0     Link encap:Ethernet  HWaddr aa:bb:cc:dd:ee:74
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

  ブリッジが形成されると、ブリッジのメンバであるeth0とwlan0にはIPアドレスが割り当てられなくなり、br0にIPアドレスが割り当てられる。ブリッジはレイヤ2動作のため、当然、IPアドレスを持たないのだが、このbr0のIPアドレスはブリッジの上にいる自ホストに割り当てられたIPアドレスという感じか。はじめて目にした時にはかなり混乱し、理解するまでに時間を要したっけ。

root@xxxpi:/etc/network# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.xxxxxxxxxxxx       no              eth0
                                                        wlan0

  ブリッジの様子を見ると、確かにeth0とwlan0がメンバになっている。

  で、こうする。

  画像の説明

  先日から愛用しているミニコンポを有線LAN接続するのである。

  これにより、ミニコンポからは有線LAN接続でDLNAサーバにアクセスし、音楽を再生できるようにはなったのだが、なぜかラズベリーパイ上で宅内LAN上のサーバへのnfsアクセスが不安定。fstabに書いておいても起動時にmountしてくれないし、以下のコマンドでmountできる時とできない時がある。またしても無線LANブリッジが怪しいのだが、不安定なだけに調べようがない。うーむ、どうしてくれよう。

root@xxxpi:~# systemctl start rpcbind
root@xxxpi:~# mount /mnt/mediatomb/

  なんでこれまで無線LAN接続で使っていたミニコンポをワザワザ有線LAN接続に変更するのか、なんでラズベリーパイからnfsアクセスが必要なのか、については、また後日(まぁ、だいたい想像がつきそうなもんだが)。


2016-08-12(Fri) Fedoraでpidoraインストール

  どうもRaspbianは挙動不審であり、調査しようにもアウェー感が半端ないんで、Fedoraを動かしたい。んが、以前に動かそうとしたが、うまく動かせなかったんだよな、と思っていたら、ナニ!? NOOBSってのは、OSを選択してインストールするための仕組みだったのかよ。それを早く言ってくれよ。

  というわけで、noobs_lite_v1_9.zipをダウンロードしてzip展開したところ、手元にファイルがどっ散らかった。うげ。なにこれ?

  どうも、SDカードにイメージをddで書き込むのではなく、vfat領域の上にファイルコピーすれば動くらしい。ホンマにそんなんでブートすんのか? と、やってみたら、確かにブートする。これは未知の技術だな。

  Linuxでやるならば以下の手順だが、パーティションの設定がマズいと動かないので注意だ。

※SDカードが/dev/sdbとして認識されている場合
/root # dd if=/dev/zero of=/dev/sdb bs=65535 count=1024
/root # fdisk /dev/sdb
※パーティションのタイプをc, 起動可能フラグを有効化
/dev/sdb1  *        2048 31116287 31114240  14.9G  c W95 FAT32 (LBA)
/root # mkfs.vfat /dev/sdb1 
/root # mount /dev/sdb1 /mnt/temp
/root # cd /mnt/temp
/mnt/temp # unzip NOOBS_lite_v1_9.zip -d .
/mnt/temp # cd
/root # umount /mnt/temp

  あとは、ラズベリーパイ(今回はPi1のB+)にSDカードを挿して、LANケーブル、キーボード、マウス、テレビ、電源をつないで、GUIからpidoraを選択して30分くらい待つだけだ。なんだ、お気楽やん。


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アクセスができないことに気づいた(またかよ)……つづく。


2016-08-27(Sat) 鈴鹿でやっぱりSUPER GT観戦

  今年も、やっぱりSUPER GTの予選に来る。

  画像の説明

  で、やっぱり、いつものところにテントを張る。

  画像の説明

  グランツーリスモ3で見たような車が置いてあった。


2016-08-28(Sun) ラズベリーパイ(pidora)で無線LANアクセスポイントする

  先日「無線LANアクセスポイント自体をラズベリーパイで構築するのもいいかもしれん」などと書いたが、やってみることにした。

  市販の無線LANルータをアクセスポイントモードに設定し、無線ブリッジとして振舞わせたいのだが、どーにも安定しないのだ。有線側からのブロードキャストが無線側に飛ばない。arpが飛ばなければ、接続できない。改めて購入したローエンドな無線LANルータも、結局はダメな感じだ。そりゃ、フツーの人は無線側の端末からWANと通信できるだけで十分なのかもしれないが、わしゃ宅内のホスト同士の通信が必須なんだ。

  さて「ラズベリーパイ アクセスポイント」でググると大量のサイトが引っかかるのだが、どれもhostapdを使うことは共通しているものの、イマイチ内容がバラバラ。手順は書いてあるものの、その必要性がよくわからない。結局はhostapdに添付のドキュメントを読みつつ、試行錯誤が必要になった。

  今回、構成したい無線LANアクセスポイントは、いわゆるルータモードではなく、ブリッジモードで動作させたいので、まずはブリッジインタフェイスを作る。前回と違うのは固定IPアドレスを割り振るところだ(別にDHCPでは絶対ダメということはないが)。

[root@xxxpi ~]# nmcli connection add type bridge ifname br0 stp no
 
[root@xxxpi network-scripts]# diff -bc x.ifcfg-bridge-br0.org ifcfg-bridge-br0 
  DEVICE=br0
  STP=no
  TYPE=Bridge
! BOOTPROTO=dhcp
  DEFROUTE=yes
  PEERDNS=yes
  PEERROUTES=yes
--- 1,10 ----
  DEVICE=br0
  STP=no
  TYPE=Bridge
! BOOTPROTO=none
! IPADDR=172.xx.xx.xx
! NETMASK=255.255.255.0
! GATEWAY=172.xx.xx.xx
  DEFROUTE=yes
  PEERDNS=yes
  PEERROUTES=yes

  さて、ここから無線LANアクセスポイント化を開始する。上述したように、ラズベリーパイを無線LANアクセスポイント化する記事は多くあるのだが、よくわからないまま手順だけ書いてある記事が多いので混乱させられる。使用する無線LANアダプタなどに応じてアレンジを加える必要があるのだ。

  今回、使用した無線LANアダプタは、IO DATAのWN-G300UAなのだが、重要なのは製品名よりも搭載している無線LANチップの種類だ。この製品はRealtekの8192CUという無線LANチップを搭載しており、これが同じならば、OS的には同じ機器であるとみなしていい。

  このことは、機器をUSBコネクタに挿した状態で8192cuドライバが読み込まれているかどうかで判別できる。具体的にはlsmodコマンドで8192cuが表示されるか否かだ。

[root@xxxpi ~]# lsmod
Module                  Size  Used by
8192cu                540710  0 

  次に、無線LANアクセスポイント化に必要なhostapdというパッケージを導入する。

[root@xxxpi ~]# yum install hostapd

  ここが混乱ポイント。hostapdには「ドライバ」という概念が存在し、搭載している無線LANチップの種類に応じて「/etc/hostapd/hostapd.conf」の中で適切に指定してやる必要があるのだが、ここでいう「ドライバ」とは、上記の8192cuドライバ(カーネルモジュール)とは完全に無関係であり、上記でインストールしたhostapdというパッケージに含まれる「/usr/sbin/hostapd」という実行ファイルに、予め組み込み済みのものなのだ。

  そして、上記でインストールしたhostapdというパッケージに含まれる「/usr/sbin/hostapd」という実行ファイルには、Realtekの8192CU用のドライバが組み込まれていない。

  そこでどうするかというと、Realtek社が個別に配布している、hostapdパッケージをコンパイルして、実行ファイルだけまるごと差し替えてやる。これにより、Realtekの8192CUという無線LANチップを搭載した無線LANアダプタで、無線LANアクセスポイントを構成することができる。なんだよ、そういうことなのかよ、そうならそうと言ってくれよ。

  で、手順が以下。

・Realtekのサイトから8192CU用のパッケージをダウンロード
http://www.realtek.com.tw/downloads/searchView.aspx?keyword=RTL8192CU
0001-RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip
 
・展開、コンパイル、差し替え
[root@xxxpi ~]# unzip 0001-RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip 
[root@xxxpi ~]# cd RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/wpa_supplicant_hostapd/
[root@xxxpi wpa_supplicant_hostapd]# tar xvfz wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz 
[root@xxxpi wpa_supplicant_hostapd]# cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd/
[root@xxxpi hostapd]# make
[root@xxxpi hostapd]# mv /usr/sbin/hostapd /usr/sbin/hostapd.org
[root@xxxpi hostapd]# mv /usr/sbin/hostapd_cli /usr/sbin/hostapd_cli.org
[root@xxxpi hostapd]# cp hostapd /usr/sbin/hostapd
[root@xxxpi hostapd]# cp hostapd_cli /usr/sbin/hostapd_cli
 
[root@xxxpi ~]# cd /etc/hostapd/
 
[root@xxxpi hostapd]# diff -bc hostapd.conf.org hostapd.conf
  ignore_broadcast_ssid=0
  
  # Uncomment these for base WPA & WPA2 support with a pre-shared key
! wpa=3
! wpa_key_mgmt=WPA-PSK
! wpa_pairwise=TKIP CCMP
! rsn_pairwise=TKIP CCMP
  
  # DO NOT FORGET TO SET A WPA PASSPHRASE!!
! wpa_passphrase=YourPassPhrase
 
  # Most modern wireless drivers in the kernel need driver=nl80211
! driver=rtl871xdrv
  
  # Customize these for your local configuration...
! interface=wlan0
! hw_mode=g
! ieee80211n=1
! channel=N
! ssid=XXXXXXXX
! eap_server=1
! wpa_group_rekey=7200

  hostapdを動作させる場合、wpa_supplicantが動作していると、処理が競合するっぽいので止めてやる。どうやら、単にサービスを止める設定をするだけでは、dbus経由で再起動がかかってしまうようなので、dbusの設定から殺しておく。

[root@xxxpi ~]# cd /usr/share/dbus-1/system-services/
[root@xxxpi system-services]# mv fi.w1.wpa_supplicant1.service x.fi.w1.wpa_supplicant1.service.org
[root@xxxpi system-services]# systemctl stop wpa_supplicant

  省電力モードが有効になっているとイマイチという情報があるので、無効にしておく。

[root@xxxpi ~]# cd /etc/modprobe.d/
[root@xxxpi modprobe.d]# vi 8192cu.conf
[root@xxxpi modprobe.d]# cat 8192cu.conf
options 8192cu rtw_power_mgnt=0

  最後にhostapdサービスを自動起動する設定を施し、一度、再起動して、再起動後に動作を開始していることを確認する。

[root@xxxpi ~]# systemctl enable hostapd
[root@xxxpi ~]# systemctl start hostapd
[root@xxxpi ~]# systemctl status hostapd

  なお、詳しい検証はしていないが、この直後にPSPやKOBOを接続しようとすると、認証が通らず、接続に失敗する現象が発生した。不思議なことに、PCから接続しようとすれば、接続に成功し、その後はPSPやKOBOも問題なく接続できるようになる。原因は不明。

  それと、接続が不安定な問題。しばしば接続が中断される感じ。注意深くログを見たら、きっかり10分毎に再接続する様子が確認できる。こりゃ、意図的なもんだな。

[root@xxxpi ~]# journalctl -u hostapd.service -n 1000 | grep -C 1 pairwise
 8月 28 14:54:54 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 RADIUS: starting accounting session xxxxxxxx-00000115
 8月 28 14:54:54 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 WPA: pairwise key handshake completed (RSN)
 8月 28 15:04:33 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 IEEE 802.11: deauthenticated due to local deauth request
--
 8月 28 15:04:54 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 RADIUS: starting accounting session xxxxxxxx-00000116
 8月 28 15:04:54 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 WPA: pairwise key handshake completed (RSN)
 8月 28 15:14:33 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 IEEE 802.11: deauthenticated due to local deauth request
--
 8月 28 15:14:55 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 RADIUS: starting accounting session xxxxxxxx-00000117
 8月 28 15:14:55 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 WPA: pairwise key handshake completed (RSN)
 8月 28 15:24:33 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 IEEE 802.11: deauthenticated due to local deauth request
--
 8月 28 15:24:56 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 RADIUS: starting accounting session xxxxxxxx-00000118
 8月 28 15:24:56 xxxpi.itline.jp hostapd[nnnnn]: wlan0: STA xx:xx:xx:xx:xx:61 WPA: pairwise key handshake completed (RSN)

  hostapdパッケージ添付のサンプル設定ファイル「/usr/share/doc/hostapd/hostapd.conf」の中に600という記述がないか探すと……ある。いくつかあるが「wpa_group_rekey=600」がクサい。試しに1200に変更したら……思った通り再接続の間隔が延びた。これだ。

  ようやく安定して使えるようになった。市販の無線LANルータの不安定さはない。やはり、きゃつらはちゃんとブリッジ動作してなかったんだな。時間と金のムダだったわい。さて「ハイパーモーニングサーバ」計画を次の段階に進めるとするか。


2016-08-30(Tue) PC環境をグレードアップ?

  突然だが、メインの環境であるMINT15のGUIが立ち上がらなくなってしまった。普段はサスペンドしてるんで、滅多に再起動なんてしないものの、再起動の際に立ち上がらない確率が高くなるような傾向があったので、気になってはいたんだよな。しかし、相手が確率だけに、明確に問題の箇所があるわけでもなさそうで、ちょっとトラブルシューティングは困難っぽい。

  記録によれば、MINT15は2013年6月21日にインストールして使い続けているようで、もう3年以上。そろそろ新しいディストリに移行するにもいいタイミングかもしれない。最近、処理が妙に重いのも解決するかもしれないしな。そこで、思い切ってFedora24に移行してみた。

  んが、新しい環境はすっきりしていてよいものの、処理が妙に重いのは解決しない。というか、重いのはブラウザだけだ……って、そうか、JavaScriptか。

  考えてみれば、いくらファンレスが静かだからって、今時ShuttleXS35V2というAtomD525(1.80GHz)のマシンを使っているうえ、それでもブラウザが重いからって、Operaの12.16を使い続けているオイラも大概なんだが。この3年間に、それだけJavaScriptが大々的に普及してきたということなのだろうな。そういえば、以前にGoogleマップが重いからって、Goo地図に逃げた気がするし、Operaでは見えないサイトが増えてきたので、同時にFireFoxを立ち上げて逃げたり……そうとう逃げまくってきたのも確かだ。正直、必要性に疑問を感じるようなJavaScriptばかりで、そんなもののせいでマシンを退役するのはバカバカしいが、JavaScriptを切ると、ほとんどのサイトが見えなくなってしまうのはイカンともしがたい。

  そこで、適当なファンレスマシンを購入しようと思ったが、どうも劇的に速度を改善できるようなマシンでは、ファンレスは望めないし、値段も結構するようだ。うーむ「メールとウェブ程度なら」なんてスペックの表現がよくあるが、オイラにとってはウェブが見えるスペックって、結構なハイスペックなんだよな。

  結局、考えあぐねて以前に購入したThinkPadのT500を引っ張り出してきて、それにディスプレイとキーボードをつなぐことにした。どういう気分でこんなお大臣なマシンを買ったのか忘れたが、こいつはCore2DuoP8700(2.53GHz)とかなりのハイスペック。しかもIntelのSSDに換装している。おぉ、速い! これは快適!

  ちなみに、本体のディスプレイが点灯していると、横目に入ってうっとおしいが、以下のコマンドでバックライトを消灯できることがわかった。ただし、スクリーンセーバが働くと、またバックライトが点灯してしまうことがあるので、とりあえずcron登録してゴマかしている。

echo -n 0 > /sys/class/backlight/intel_backlight/brightness

  オマケに、元のマシンはGUIこそ起動しないものの、時々ファイルをサルベージしたい時があるのでsshで接続することがある。その場合、GUIからはサスペンドできないが、以下のコマンドでサスペンド状態に移行できることがわかった。

echo -n mem > /sys/power/state

  そういえば、T500って、いつ買ったんだっけ……って、アレ?2009年9月30日って……7年前じぇねーか。うーむ、元のマシンより古かったのか。