Raspberry Pi (Linux)
完成!
ラズパイB+のサブネット用、持ち出し用Wi-Fiルーター完成!
概略仕様は以下の通り。
無線LAN側のネットワークアドレスを192.168.77.0/28とし、イーサネット側をDHCPクライアントとする。
起動時にDHCPサーバーから192.168.77で始まるIPアドレスがイーサネット側に割り当てられた場合、もしくはIPアドレスの取得に失敗した場合はブリッジモードに転換する仕様とした。
これは、無線LAN側のネットワークアドレスとイーサネット側のネットワークアドレスが重なった場合通信不能となるため、それを避ける為の仕様でもある。
デフォルトはルーターモードで起動。
IPアドレスチェックスクリプトは次の通り。
#!/bin/sh
sub_net=“192.168.77”
my_net=hostname -I | cut -c 1-10
if [ $sub_net = $my_net ]; then
service dhcpcd stop
service dnsmasq stop
ifconfig eth0 0.0.0.0
ifconfig br0 0.0.0.0
brctl addif br0 eth0
/usr/local/bin/reset_iptable.sh
echo “ブリッジモードで起動しました。”
exit 0
fi
echo “ルーターモードで起動しました。”
exit 0
これをrc.localの末尾で15秒のウエイトを入れて実施。
sleep 15
/usr/local/bin/dhcp_chk.sh 2>&1 | logger -t dhcp_chk.sh
接続先のDHCPサーバーが有効であっても、LANケーブルを抜いたまま起動すれば、IPアドレスチェックスクリプトの $sub_net = $my_net の条件が成立し、強制的にブリッジモードで起動することも出来る。
これで完成!
低消費電力は重要
Raspberry Pi B+のSUBNET用Wi-Fiルーターは、イーサネット側をDHCPクライアントにし、持ち出して(例えば有線LANしか部屋に来ていないホテルなどで)使えるようにした。
SUBNET用なので来客等、部外者の使用も考慮し、Windowsファイル共有関係のFORWORDINGをブロックしている。
ベースとして、Netfilterによる強力なファイアウォール(ステートフルインスペクション)を構成。
ホテルなどのネットワークセキュリーティーがどの程度か不明なので自己防衛となる。
無線側のネットワークを192.168.77.0/28 にしたが、これがイーサネット側(DHCPで割り当てられるネットワーク)と重なる(通信不能となる)ようなことがあれば大当たり。
宝くじでも買うか(笑)
B+は消費電力が低いので、このような密閉ケースでも然程温度が上がらない。
性能面でも十分で、IPフォワーディングのスループットも30Mbps以上出るし、これぐらいのスペックがこの用途にはピッタリだ。
可能な限り低消費電力であることは非常に重要である。
消費電力(発熱)の大きいPi3の用途は未だ決まらず・・・
TP-LINK いいね!
ラズパイルーターのLAN側に充てているUSBイーサネットアダプタを、消費電力の大きいASIX AX88772(BUFFALO LUA3-U2-ATX)から、Realtek R8152(PLANEX USB-LAN100R)に変更したばかりだが、PLANEX USB-LAN100Rは24時間で故障してしまった・・・
おかげで、らじるらじるの録音が中断してしまい、被害を被った。
PLANEXのこの手の製品は、ハーネスの断線が多い模様。
価格の割に品質に問題がある。
そこで振り出しに戻り、
Wi-Fi USBドングルでTP-Linkが気に入っていたので、同じRTL8152Bベースの TP-Link UE200 (990円)を購入してみた。
https://www.amazon.co.jp/gp/product/B01GNP5UUA/
昨日帰宅後、早速 BUFFALO LUA3-U2-ATX と交換。
LAN側は無線LANとVPNとUSBイーサネットをローカルブリッジで繋いでいるので、無線LAN側から入ればリブートしないで交換できる。
ラズパイとはいえ歴としたUNIXマシンである。
UNIXのネットワークは落とさないことも重要(笑)
メーカーサイトによると、UE200のコントローラーはRTL8152Bと謳っているのだが、どうやらオリジナルの互換チップである模様で’cdc_ether’ として認識される。
usb 1-1.5: new high-speed USB device number 6 using dwc_otg
usb 1-1.5: New USB device found, idVendor=2357, idProduct=0602
usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.5: Product: USB 10/100 LAN
usb 1-1.5: Manufacturer: TP-LINK
usb 1-1.5: SerialNumber: 8416F91B2E67
cdc_ether 1-1.5:2.0 eth1: register ‘cdc_ether’ at usb-3f980000.usb-1.5, CDC Ethernet Device, 84:16:f9:1b:2e:67
usbcore: registered new interface driver cdc_ether
大自己満足(笑)
せっかくの穏やかな晴天なのに、道路に塩が撒いてあったおかげて戻ってしまったので、仕方なくラズパイルーターの仕上げ・・・
まず、Wi-Fi USBドングルをTL-WN725N(695円)から、TL-WN823N(980円)に変更。
https://www.amazon.co.jp/gp/product/B0088TKTY2/
かなりパワーアップし、どの部屋にいても54Mbps以上のリンク速度に。
それに、デバイスドライバも正式にマージされたものが使え、安定性も向上。 ケチらず最初からこうすべきだった(笑)
今回選定した、Wi-Fi USBドングルのメーカー、TP-Linkは中華企業なんだが、相当な技術力だと判った。
https://ja.wikipedia.org/wiki/TP-LINK_Technologies
国内メーカーの同等品は消費電力ばかり大きくて使い物にならんらしく、最初から除外してしまった・・・頑張ってくれ。
話を戻して、Wi-Fi USBドングル変更に加え、USBイーサネットアダプタを消費電力の大きいASIX AX88772(BUFFALO LUA3-U2-ATX 1090円)からRealtek R8152(PLANEX USB-LAN100R 1200円)に変更。
https://www.amazon.co.jp/gp/product/B00LVH885U/
ラズパイ本体の消費電力は1.5W程度なのに、以前はアダプタだけで約1Wも食っており、ヒートシンク代わりに金属のアングルを下に敷いていたが、今では触っても冷たい程。
もちろん、通信速度など性能は変わらず。
細々したものを追加で買ったりしているし、結構ムダ金を費やしているが、糞つまらない市販ルーターから解放されることを考えると安いもんだ。
何しろ、2W以下の低消費電力で、IPsec VPN サーバーや Wi-Fiアクセスポイント(IEEE802.11n)がオールインワンなんだから。
大自己満足だ(笑)
ラズパイルーターはPi2でFIX
勿体無いことに、市販ルーター(MR-OPT100EとかAterm1800)みたいな既製品はつまらないので、箱に詰めて仕舞い込んでしまった・・・
2,3年で腐るかな・・・
ところで、Pi3でまた新事実を発見・・・
Pi3にWi-Fi USBドングル(RTL871X)を取り付けて、Pi2ルーターのシステムカードで起動したら、eth0(smsc9512)と一緒にwlan0をブリッジした状態でも「smsc95xx 1-1.1:1.0 eth0: kevent 0 may have been dropped」の異常が発生しない。
今日は、ルーターがその構成のPi3だが、通信速度はPi2と変わらず、VPNでの登り方向で速度計測した場合もPi2と同様に詰まる感じ。
どうやら、オンボードNICをWAN側に充てた方がスムーズな模様。 Pi3の処理能力余裕度は無関係だった。
いずれにしても、手前の遅いVDSL環境では、Pi2ルーターでもPi3ルーターでも差が無いので、より消費電力の低いPi2でFIXすることにする。
但し、WAN側とLAN側のNICは入れ替え。
Pi3のオンボードWi-Fiは、まともには使えないということだけは結論として残る(笑)
Pi3は、その処理能力を生かせる別の用途を考えた方が良い。
ちなみに、RTL871X(with 8188eu.ko)はリンク速度65Mbpsしかないが、それで十分なのだ。
所詮要らないNET環境に、ギガのサービスなんて無意味だ(笑)
結局 Pi2
Raspberry Pi3によるWi-Fi AP付PPPoEルーター構築 の続き・・・
Pi3の固定NICの誤動作(smsc95xx 1-1.1:1.0 eth0: kevent 0 may have been dropped)がどうしても腑に落ちず、Pi2にUSBドングルを付けて試してみた。
コスト最優先で、安価なTP-LinkのTL-WN725N(rtl8712)を選定して試したところ、案の定eth0(SMSC9512)と一緒にブリッジしても全く問題ない上、通信速度もPi3より安定している・・・
やはり、Pi3のオンボードWi-Fiは何か問題が有るのかも・・・
Pi2はPi3よりもかなり消費電力が低いし、Wi-Fi USBドングルはアクセスランプ付で視認性も良いし、ラズパイルーターは結局Pi2に戻ってしまった(笑)
TL-WN725Nは700円程度で買える上、作りも良いし素晴らしい製品だ。
消費電力も低い模様で、全く熱を持たない。
デバイスドライバ(r8188eu.ko)はカーネルモジュールとしてはまだ正式にマージされておらず、stagingな状況だが、全く問題なく安定している。
感激した。
TP-Link 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル TL-WN725N
https://www.amazon.co.jp/gp/product/B008IFXQFU/
Raspberry Pi3によるWi-Fi AP付PPPoEルーター構築
Raspberry Pi3による無線LANアクセスポイント付PPPoEルーター構築の件、 eth0のハング対策 の続きで結構悩んだが、単にWAN側とLAN側のNICを入れ替えただけで、ラズパイの固定NICの誤動作(smsc95xx 1-1.1:1.0 eth0: kevent 0 may have been dropped)が解消し、昨夜からルーターのRPiをPi2からPi3に替えた。
基本、 Pi2のルーター に、hostapdを追加しただけ。
(詳細は Raspberry PiによるWi-Fi AP付PPPoEルーター構成 の記事を参照。)
但し、ラズパイの固定NIC(smsc95xx)とhostapdのwlan0を一緒にローカルブリッジに接続すると冒頭に記載の問題が発生する為、以下の通りブリッジ接続するNICをeth0(smsc95xx)からeth1(asix)に変更した。
・br0 に、 eth1、tap_vpn、wlan0 をブリッジ接続。
NICを入れ替えただけで、嘘の様にトラブルが解消され嬉しいが、やはり、smsc95xxの改善を期待したい。
(smsc95xxが悪いとは言い切れないが;)
その後は概ね快調だが、Piでは乱数のエントロピーが不足し、無線LANが極端に遅い場合がある模様・・・
cat /proc/sys/kernel/random/entropy_avail 807 ← これを1000以上にしたい。
実際、まれに200~300kbpsで繋がる場合が・・・その場合は、再接続しているが・・・
追加パッケージ「rng-tools」を入れて、チップセットのハードウエア乱数発生器(bcm2708_rng)を使うのがよさそう。
あと、Pi2の時と同じアンダークロック条件、arm_freq=600 gpu_freq=200 sdram_freq=200 で動かしてるが、室温15.8℃でCPU温度が43℃もある・・・
Pi2の時は35℃程度だったから、8℃ぐらい熱い。
夏場は60℃前後で常用か・・・
----------------------- 補足 --------------------------
・ケースは外観でPi3を識別できる様、ゴールドにした(笑)
しかし・・・
消費電力の割に優位性が認められなかったので、 結局 Pi2 に戻ってしまった。
Raspberry PiによるWi-Fi AP付PPPoEルーター構成 の内容にてFIX。
eth0のハング対策
Pi3による無線LANアクセスポイント付PPPoEルーター構築の件、eth0のハング関連調査で、昨夜はtapデバイスをブリッジ接続から外して試したが、やはりwlan0と通信するとeth0が全てドロップするようになってしまった・・・
しかし、その場合でも、wlan0は問題なく使えるのでWi-Fiルーターとしては生きる。
ローカルブリッジにeth0とwlan0を繋いで、ルーティング無しの単なる無線ブリッジにする場合はeth0のトラブルは起きないから、ちょっと根が深い問題だ・・・
しかし、難易度の高いデバイスドライバのソースコードなんて読んでも、絶対にバグなんか見つからない(笑)
ラズパイ特有のハードウエア的な問題も否定できないだろうし。
こうなると、力技で構成を変えて試してみるしかない・・・
今日も出勤だが、特にすべき仕事も無いので、朝からこちらを優先して検討した(笑)
・2つのローカルブリッジを用意し、同じセグメントで隣接した固定IPアドレスを付加。
・一方は有線LANのeth0とVPNサーバーのtapデバイス、もう一方に無線LANのwlan0をブリッジ接続する。
・Netfilterの方も二つのIPアドレスに対し、それぞれ並列で設定。
これでだめなら、もうPi3の使い道が無くなる・・・
やはり、今時有線は使うなということか(笑)
Pi3の用途
Pi3、昨日仕事の合間にhostapdを入れてwlan0をブリッジ接続するだけで簡単にWi-Fiアクセスポイントになった。
eth0とブリッジ接続するだけでOK。
HUBだからルーティングとか考えなくて良い。
帰宅後タブレットを繋いでみたが、何ら問題なく即座に接続され、通信速度もAterm1800(ブリッジモード)と変わらない結果だった。
下り34Mbps、上り10Mbps。
回線がボトルネックなんで、Pi3+hostapdの無線ブリッジは十分使える印象・・・
その割に消費電力が低く、よく出来ている。
普段無線はOFFにしておきたかったが、低消費電力で常時ONできればストレスも低いし、この際、Pi3はルーター用に回すか・・・







