概要
モバイルルータは端末の同時接続数に制限が設定されていることが多いです
ルータに接続できる端末の上限に達した場合などは新たにアクセスポイントを作成する必要があります
今回は RaspberryPi を使ってモバイルルータ用のアクセスポイントを増設してみました
なお Zero を使っていますが Zero でなくても問題ないです
環境
- Raspberry Pi Zero 512MB
- Raspbian 10.0 (Buster)
- Linux raspberrypi 4.19.57+
- BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM (重要、おまけで後述)
ドングル接続
まずは RaspberryPi に USB ドングルを 2 つ接続しましょう
すでに wlan0 を使っている場合は wlan1 が追加されます
wlan0 と wlan1 で使いたいドングルが異なる場合は接続する順番を調整してインタフェースとドングルを合わせてください
wlan1 の IP 固定化
wlan0 はこれまで通りモバイルルータに接続してインターネットに接続します
wlan0 のみモバイルルータに接続するように wpa_supplicant-wlan0.conf を作成しておきます
そしてアクセスポイントとなる wlan1 の IP を固定化します
sudo vim /etc/network/interfaces
allow-hotplug wlan1
iface wlan1 inet manual
自動で IP が振られないように iface wlan1 inet manual
を設定します
sudo vim /etc/dhcpcd.conf
interface wlan1
static ip_address=192.168.130.1/24
static routers=192.168.130.1
static domain_name_servers=192.168.130.1
static broadcast 192.168.130.255
wlan1 配下にぶら下がったデバイスには 192.168.130.0/24
のネットワーク帯から IP が振られるようにします
hostapd のインストールと設定
sudo apt install -y hostapd
インストールできたら設定ファイルを作成します
sudo vim /etc/hostapd/hostapd.conf
interface=wlan1
driver=nl80211
ssid=ap1
hw_mode=g
channel=7
wmm_enabled=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=hogefuga
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface
は wlan1
にしましょう
ssid
と wpa_passphrase
好きなものを設定しましょう
wpa_passphrase
は平文のパスワードを設定します
他も基本的にはそのままで OK です
channel
あたりは各自の環境に合わせて適宜変更しても良いかもしれません
ctrl_interface
に関しては hostapd_cli
を使うための設定です
sudo vim /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-dd -t -f /home/pi/hostapd.log"
設定ファイルのパスを記載します
またログをファイルに出力するようにしておきます
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
sudo systemctl status hostapd
これでアクセスポイントが見えるようになっていれば成功です
この状態では接続まではできないのでルーティングと dhcp の設定をします
ルーティング設定
wlan0 経由でちゃんとモバイルルータを使ってインターネットに出れるようにします
sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
確認は sudo iptables -t nat -n -L
で行います
RaspberryPi が再起動した場合でも自動でルーティング情報が適用されるように rc.local
に記載しておきます
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
sudo vim /etc/rc.local
iptables-restore < /etc/iptables.ipv4.nat
dhcp サーバのインストールと設定
sudo apt install -y isc-dhcp-server
dnsmasq でもできるなのでここはお好みでも良いかもしれません
あとは wlan1 に設定した固定 IP の範囲から IP を払い出す設定を記載します
sudo vim /etc/dhcp/dhcpd.conf
subnet 192.168.130.0 netmask 255.255.255.0 {
range 192.168.130.10 192.168.130.100;
option broadcast-address 192.168.130.255;
option routers 192.168.130.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
log-facility local7;
log-facility
はどちらでも良いです
これを記載すれば dhcpd のログが /var/log/messages
に出力されるようになります
あとはインタフェースの設定をしてプロセスを起動しましょう
sudo vim /etc/default/isc-dhcp-server
INTERFACESv4="wlan1"
sudo systemctl start isc-dhcp-server
ここまでで wlan1 に固定 IP が振られていてアクセスポイントが見えるようになっていて dhcp サーバが起動していれば動作するはずです
動作確認
sudo reboot -h now
とりあえずこれまでの設定を反映させるために再起動しましょう
hostapd
や isc-dhcp-server
も自動で起動するはずです
ただ isc-dhcp-server
だけは wlan1 に IP が振られていないと起動してくれません
wlan1 に IP が振られるのは hostapd
が起動してからです
なので hostapd
が起動する前に isc-dhcp-server
が起動してしまうと dhcpd がうまく起動していないのでその場合は手動で起動しましょう
sudo systemctl start isc-dhcp-server
あとは iPhone などからアクセスポイントを探して設定したパスフレーズで接続できることを確認しましょう
接続できない場合はルーティングや dhcpd の設定がおかしい場合が多いようです
対策としては /etc/rc.local
に以下の記載します
/bin/sleep 30 && /etc/init.d/isc-dhcp-server start
そして isc-dhcp-server
を自動起動しないようにしておけば大丈夫だと思います
sudo systemctl disable isc-dhcp-server
おまけ: WLI-UC-GNM2S は RaspberryPi では動作しなかった
今回使用した Wifi の USB ドングルは「BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM」というドングルです
実はこれもう生産自体が終了しており Amazon などでは手に入るようですが少しお値段が張ります
後継機として WLI-UC-GNM2 や WLI-UC-GNME などがあるようですが WLI-UC-GNM2S というのが最新の後継機としてあるようです
これでも使えるかなと思って購入してみたのですが自分の RaspberryPi 環境では動作しませんでした
アクセスポイントを張ることはできるのですが接続することができませんでした
ドライバは RT3070 でこのドライバ自体は Raspbian 10.0 や 9.0 には問題なくインストールされているので lsusb
などで認識はするのですが iwlist wlan0 scan
などでアクセスポイントを見つけようとして見つかりません
せっかく購入したので何とか解決できないが頑張りましたがダメでした、、
おまけ: hostapd.conf を変更した場合は dhcp サーバも再起動しましょう
sudo systemctl restart hostapd
sudo /etc/init.d/isc-dhcp-server restart
おまけ: 速度について
個人的にですが直接モバイルルータに接続している状態と RaspberryPi のアクセスポイントに接続している状態では回線速度は 1/8 から 1/10 くらいに下がります
RaspberryPi のスペックや Wifi ドングルの熱の状態にもよりますが基本的には RaspberryPi を経由したほうが遅くなるので注意しましょう
最後に
RaspberryPi を使ってモバイルルータのためのアクセスポイントを作成してみました
大抵のモバイルルータは同時接続に制限があるのでその場合は役に立つかなと思います
まだ運用して間もないのでこれから問題が出てくるかもしれません
とりあえず一番気になるのはドングルの発熱かなと思います
2 つドングルを接続すると USB ポートの部分が結構な熱さになるので熱暴走したり破損したりしないか心配です
あとは単純に RaspberryPi Zero のスペックが低いので大量のデバイスを接続してしまうと通信が重くなってしまうかなと思います
この辺のモバイルルータか RaspberryPi かどちらに接続するかのバランスも大事になってくるかなと思います
いろいろわかったらまた別記事で紹介したいと思います
0 件のコメント:
コメントを投稿