hostapdが起動しない時の確認事項
Ubuntu 14.04LTS以降のOSでは未確認です。
Ubuntu 18.04LTSではIPの固定の割り振り方が従来の方法と異なっているため上手く動かない可能性があります。
時間ができたら新しいOSの方でもトライしてみます。
hostapdを使用しようとすると、うまく起動しない場合があります。
とりあえず考えられる場合を挙げます。
githubのREADME用に設定を書いた記事があるので、そちらも参考にしてみてください。
kosuke128.hatenadiary.jp
1. interfaceのエラー
エラー例:
Configuration file: /home/hogehoge/Desktop/hostapd.conf Could not read interface wlan1 flags: No such device nl80211: Driver does not support authentication/association or connect commands nl80211: deinit ifname=wlan1 disabled_11b_rates=0 Could not read interface wlan1 flags: No such device nl80211 driver initialization failed. wlan1: interface state UNINITIALIZED->DISABLED wlan1: AP-DISABLED hostapd_free_hapd_data: Interface wlan1 wasn't started
理由:APとして使用したいインターフェースが設定と合っていない可能性が高いです。
確認するべき場所:
- /etc/network/interfaces
- /etc/default/isc-dhcp-server
- hostapd.confファイル(自分で設定した場合はそのファイル)
改善策:
1. /etc/network/interfacesの確認
--> iface wlan0 inet static の wlanの番号がifconfigで確認した物と合っているか確認。
2. /etc/default/isc-dhcp-server
--> 最後部のINTERFACES=" "の中にwlan0等と記載があるか確認。
3. hostapd.confファイル
--> confファイル内の interface=wlan0 のwlan0が合っているか確認。
設定を変更した後は、ネットワークマネージャーを再起動させましょう。
sudo service network-manager restart
2. make時のエラー
../src/drivers/driver_nl80211.c:17:31: fatal error: netlink/genl/genl.h: そのようなファイルやディレクトリはありません #include <netlink/genl/genl.h>
理由:libnlが読み込めていないため。
確認するべき場所:
- /hostapd-*.*/hostapd/defconfig
- /hostapd-*.*/hostapd/.config
のどちらか。
改善策:defconfig もしくは .config内を以下のようにする。
- #CONFIG_LIBNL32=y + CONFIG_LIBNL32=y
また、defconfig内を変更した場合は、
cp defconfig .config
を端末で入力する必要がある。
それでも同様のエラーが出る場合は、
sudo apt install libnl-dev libssl-dev libnl-genl-3-dev
をインストールしましょう。
3. エラーは出ないが通信が出来ない場合
無線接続を行う端末でSSIDが見えているが、SSIDに接続が出来ない場合。
理由:DHCPサーバーの設定が完了していない、もしくはDHCPサーバーが起動していない可能性が有ります。
もしくは、iptablesの設定が完了していない可能性が有ります。
確認するべき場所:
- /etc/default/isc-dhcp-server
- /etc/dhcp/dhcpd.conf
- sudo service isc-dhcp-server status
- sudo iptables --list
改善策:
1. /etc/default/isc-dhcp-server
--> 1のinterfaceのエラーと同様の確認をしてください。
2. /etc/dhcp/dhcpd.conf
--> 最後部に以下のような書き込みがあるか確認。
--> 更に、/etc/network/interfacesでwlanに設定したIPと下記のIPが一致しているか確認。
subnet 10.5.5.0 netmask 255.255.255.0 { range 10.5.5.10 10.5.5.255; option domain-name-servers ns1.internal.example.org; option domain-name "testtest"; option routers 10.5.5.1; option broadcast-address 10.5.5.255; default-lease-time 600; max-lease-time 7200; }
3. sudo service isc-dhcp-server status
--> そもそもDHCPサーバーが起動しているかを確認します。
端末上で、
test@test: sudo service isc-dhcp-server status isc-dhcp-server stop/waiting
となっていた場合は、起動させましょう。
test@test: sudo service isc-dhcp-server start isc-dhcp-server start/running, process 5225
起動時にエラーが吐かれる場合は、設定がオカシイ可能性があるので、もう一度よく見直して見て下さい。
4. sudo iptables --list
自分の設定の場合は以下のようになっています。
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination
hostapdを起動する前に、以下の設定をシェルスクリプトなどにしておいて、コマンドを打つだけでiptablesの設定が完了するようにしておくと便利です。
iptablesのwlanの番号も他と同様、無線ルーターとして用いるドングルのwlanと同じものに設定をする必要があります。
#!/bin/sh sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
4. ドライバーが合っていない場合
安価で手に入るBuffaloのWLI-UC-GNM2などを使用した場合だと、hostapd.confのdriver部には、
driver=nl80211
と記載する事で問題なく使用する事が出来ますが、エレコムのWDC-433SU2を使用する場合、
driver=rtl871xdrv
をと記述する必要があります。
rtl871xdrvに関する詳しい設定は詳しく説明しているサイトがあるので、そちらを参考にすると良いかと思います。
以上の方法でも改善しない場合は、設定をよく見直してください。
追記 2017/07/28