Raspberry Pi+hostapdでのアクセスポイント化
はじめに
RaspberryPiを利用してWiFiアクセスポイントを作成しました。
アクセスポイントは他にもあったのですがVLANタグが付けられないため、余らせてたRaspberryPiをアクセスポイントにしてVLANタグを付きでネットワークに繋げられないかと考えて設定しました。
概要
hostapdにて内臓のwlan0をアクセスポイントにし、vlanインタフェースにブリッジさせます。
残念ながらRaspberryPi3に内蔵しているWi-Fiモジュールは1つのSSIDしか出せないのでVLAN ID付きのみブリッジさせてます。
環境構成
- ハードウェア: Rapsberry Pi3 Model B
- OS: Raspbian 10
手順
- Raspbianインストール (ここは省略します)
- パッケージインストール
- vlan設定
- ブリッジ設定
- アクセスポイント(hostapd)設定
パッケージインストール
- Raspbianインストール (ここは省略します)
- パッケージインストール
- vlan設定
- ブリッジ設定
- アクセスポイント(hostapd)設定
パッケージインストール
hostapdをインストールします。
なくても大丈夫ですがブリッジ状態の確認のためbridge-utilsも入れます。
※bridge-utilsで設定してもvlanインタフェースと上手くリンクできません。
$ sudo apt-get install hostapd bridge-utils
vlan設定
/etc/network/interfaces.d/vlan を作成し以下のように記載します。
インタフェース名はeth0.(vlan ID)になります。
※vlanというファイルは作らなくてもinterfacesに書けばいいですがわかりやすくするため分けてます。
auto eth0.20
iface eth0.20 inet manual
vlan-raw-device eth0
解説
auto eth0.20
boot時にインタフェース(eth0.20)を自動でアップします。
iface eth0.20 inet manual
IPアドレスの設定を手動にします。
今回はVLAN20側にIPアドレスを振られないようにするため手動にします。
vlan-raw-device eth0
元になるインタフェース(eth0)を指定します。
ブリッジ設定
/etc/network/interfaces.d/bridge を作成し以下のように記載します。
ブリッジインタフェース名はbr0にしました。
auto br0
iface br0 inet manual
bridge_ports eth0.20 wlan0
bridge_stp off
解説
bridge_ports eth0.20 wlan0
eth0.20インタフェースとwlan0インタフェースをリンクさせます。
bridge_stp off
アクセスポイントであれば不要なのでSTPを切ります。
アクセスポイント(hostapd)設定
/etc/hostapd/hostapd.confを作成し以下のように記載します。
※このファイルはデフォルトで作られていません。サンプル設定ファイルは/usr/share/doc/hostapd/examples/hostapd.confがありますが使わなくても大丈夫です。
interface=wlan0
bridge=br0
driver=nl80211
ssid=Test_AccessPoint
hw_mode=g
channel=9
wmm_enabled=1
country_code=JP
ht_capab=[HT40][SHORT-GI-20][SHORT-GI-40]
macaddr_acl=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=Test_Password
rsn_pairwise=CCMP
logger_syslog=-1
解説
重要なところだけ解説します。
必要に応じてサンプルファイルやマニュアルを参照してください。
interface=wlan0
アクセスポイントにするインタフェース(wlan0)を指定します。
bridge=br0
ブリッジインタフェース(br0)を指定します。
これを指定しないとwlan0がブリッジに所属してくれません。
ssid=Test_AccessPint
SSIDを指定します。
環境に合わせてTest_AccessPointを変えてください。
ht_capab=[HT40][SHORT-GI-20][SHORT-GI-40]
使用するフラグリストです。
必要に応じてiwで確認しサポートするフラグを記載してください。
wpa_passphrase=Test_Password
パスワードを設定します。
環境に合わせてTest_passwordを変更してください。
logger_syslog=-1
syslogに全部のログを吐き出します。
後処理
hostapdの自動起動を有効化します。
デフォルトでマスクされてるのでマスクの解除もします。
sudo systemctl unmask hostapd.service
sudo systemctl enable hostapd.service
ここまで終わったら再起動してください。
sudo systemctl reboot -i
再起動後はvlanインタフェースと、ブリッジインタフェースが作成っされてるか、
ブリッジにリンクされてるか確認してください。
$ ip link
:
:
4: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP mode DEFAULT group default qlen 1000
link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.b827eb0af375 no eth0.20
wlan0
おまけ
複数SSID
iwコマンドで出せるSSIDの数を確認できます。
Raspberry Pi3の内蔵モジュールはこのような結果で出てきます。
$ iw phy0 info | grep AP
* AP
* AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
4行目の#{ AP } <= 1となっているので1つのSSIDしか出せません。
ブリッジ、VLANインタフェースのIPアドレス設定
今回はmanualにしdhcpcd.confには書いてません。
この2つのインタフェースにIPをふるとタグなしのeth0自体に固定IPで振れなくなったからです。
必要であればdhcpcd.confに書けば固定IPが設定ができます。
自動設定する場合はmanualのところをdhcpにしてください。
Raspberry Pi 4を使用する場合 (2020/11/8更新)
Raspberry Pi 4になるとRFkill機能が働いてwlan0インタフェースがアップしないことがあります。
RFkillはWi-FiやBT等ワイヤレスデバイスを使用していないと判断されたときにデバイスをブロックし消費電力を抑える機能です。
これが動くことでwlan0インタフェースがアップしないためブリッジができなくなります。
以下のようにブロックを解除することでインタフェースがアップ状態にでき使用できるようになります。
$ sudo rfkill list
0: phy0: Wireless LAN
Soft blocked: blocked ←ソフト側でブロック状態になっています。
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
$ sudo rfkill unblock wifi
Raspberry Pi 4を使用する場合2 (2020/11/21更新)
ステーション数に制限があり、4~5台くらいしか接続できないようです。
2.4GHz帯を使用した場合なので5GHz帯を使用した場合は検証していません。
iwコマンドの出力で最大接続数を調べる方法や、Raspberry Pi 4での接続数上限を知っている方がいたら教えて下さい。。。
参考文献
Author And Source
この問題について(Raspberry Pi+hostapdでのアクセスポイント化), 我々は、より多くの情報をここで見つけました https://qiita.com/nrn11302/items/aad1ba91ab6c08019e55著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .