# apt-get install iw # apt-get install wavemon
lspciを使ってデバイスの詳細を確認し、iw listでネットワークアダプタの機能詳細を確認。
# lspci | grep Atheros 00:0b.0 Network controller: Atheros Communications Inc. AR922X Wireless Network Adapter (rev 01) # lspci -s 00:0b.0 -vv 00:0b.0 Network controller: Atheros Communications Inc. AR922X Wireless Network Adapter (rev 01) Subsystem: Atheros Communications Inc. Device 2093 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 168, Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 17 Region 0: Memory at fd100000 (32-bit, non-prefetchable) [size=64K] Capabilities: [44] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=100mA PME(D0+,D1-,D2-,D3hot+,D3cold-) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Kernel driver in use: ath9k # iw list Wiphy phy0 Band 1: Capabilities: 0x11ce HT20/HT40 SM Power Save disabled RX HT40 SGI TX STBC RX STBC 1-stream Max AMSDU length: 3839 bytes DSSS/CCK HT40 Maximum RX AMPDU length 65535 bytes (exponent: 0x003) Minimum RX AMPDU time spacing: 8 usec (0x06) HT TX/RX MCS rate indexes supported: 0-15 Frequencies: * 2412 MHz [1] (17.0 dBm) * 2417 MHz [2] (17.0 dBm) * 2422 MHz [3] (17.0 dBm) * 2427 MHz [4] (17.0 dBm) * 2432 MHz [5] (17.0 dBm) * 2437 MHz [6] (17.0 dBm) * 2442 MHz [7] (17.0 dBm) * 2447 MHz [8] (17.0 dBm) * 2452 MHz [9] (17.0 dBm) * 2457 MHz [10] (17.0 dBm) * 2462 MHz [11] (17.0 dBm) * 2467 MHz [12] (disabled) * 2472 MHz [13] (disabled) * 2484 MHz [14] (disabled) Bitrates (non-HT): * 1.0 Mbps * 2.0 Mbps (short preamble supported) * 5.5 Mbps (short preamble supported) * 11.0 Mbps (short preamble supported) * 6.0 Mbps * 9.0 Mbps * 12.0 Mbps * 18.0 Mbps * 24.0 Mbps * 36.0 Mbps * 48.0 Mbps * 54.0 Mbps ... Supported interface modes: * IBSS * managed * AP * AP/VLAN * WDS * monitor * mesh point * P2P-client * P2P-GO ...
ネットワークインターフェイスにIPアドレスを割り当てる。
# cat << EOF >> /etc/network/interfaces allow-hotplug wlan0 auto wlan0 iface wlan0 inet static address 192.168.100.1 netmask 255.255.255.248 network 192.168.100.0 up route add -net 192.168.100.0 netmask 255.255.255.248 gw 192.168.100.1 pre-down route del -net 192.168.100.0 netmask 255.255.255.248 gw 192.168.100.1 EOF
hostapdのインストールと、起動時に自動実行する設定の書き込み。設定ファイルの作成。
# apt-get install hostapd # cat << EOF >> /etc/default/hostapd DAEMON_CONF="/etc/hostapd/hostapd.conf" EOF # cat << EOF > /etc/hostapd/hostapd.conf interface=wlan0 driver=nl80211 ssid=SSID hw_mode=g channel=11 wpa=2 wpa_passphrase=PASSPHRASE wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wmm_enabled=1 ieee80211n=1 EOF
クライアントのMACアドレスと鍵の対応表 /etc/hostapd-psk を作る。クライアントに入力してもらうパスフレーズがPASSPHRASEの場合の例
# apt-get install wpasupplicant # wpa_passphrase SSID PASSPHRASE network={ ssid="SSID" #psk="PASSPHRASE" psk=38497220976092fc2707a838e4d4385019256149f99f935be22c90159d3b8373 } # cat << EOF >> /etc/hostapd-psk **:**:**:**:**:** 38497220976092fc2707a838e4d4385019256149f99f935be22c90159d3b8373 EOF
/etc/hostapd-psk を更新したら、デーモンを再起動させる。
# systemctl stop hostapd # systemctl start hostapd # systemctl --lines 100 --full status hostapd ● hostapd.service - LSB: Advanced IEEE 802.11 management daemon Loaded: loaded (/etc/init.d/hostapd) Active: active (running) since *** ****-**-** 11:33:38 ***; 13s ago Process: 10065 ExecStop=/etc/init.d/hostapd stop (code=exited, status=0/SUCCESS) Process: 10091 ExecStart=/etc/init.d/hostapd start (code=exited, status=0/SUCCESS) CGroup: /system.slice/hostapd.service └─10094 /usr/sbin/hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf *** ** 11:33:38 ************** hostapd[10091]: Starting advanced IEEE 802.11 management: hostapd. *** ** 11:33:38 ************** systemd[1]: Started LSB: Advanced IEEE 802.11 management daemon.
dhcpdでipアドレスを割り当て、さらにMACアドレスで割り当てるIPアドレスを指定する例
# cat << EOF >> /etc/dhcp/dhcpd.conf subnet 192.168.100.0 netmask 255.255.255.248 { option routers 192.168.100.1; range 192.168.100.2 192.168.100.5; } host foobar { hardware ethernet **:**:**:**:**:** fixed-address 192.168.100.2; option host-name "foobar"; } EOF
# hostapd /etc/hostapd/hostapd.conf
最後にホストで動いているサービスにwlan0からつながるための設定
# /sbin/iptables -A INPUT -j ACCEPT -i wlan0
ブチブチ接続が切れるわけじゃないけど、RSSI値が大体-47から-45程度。リンクスピードが130Mbps。アンテナ同士が近づけばかなり改善するので、アンテナに延長ケーブルを付けたい。
実効的な速度は優先の10分の1程度になってしまった。有線(100Mbpsリンク)と無線(130Mbpsリンク)とでそれぞれsambaマウントしたディレクトリにddでファイル書き込みした場合の速度。有線はリンクスピードの8-9割出ているが、無線はリンクスピードの1割程度。結局有線のほうが早い結果になってる。
$ cd /mnt/wire $ dd if=/dev/zero of=./test count=10 bs=10M && rm ./test 10+0 records in 10+0 records out 104857600 bytes (105 MB) copied, 9.18348 s, 11.4 MB/s $ dd if=/dev/zero of=./test count=10 bs=100M && rm ./test 10+0 records in 10+0 records out 1048576000 bytes (1.0 GB) copied, 106.746 s, 9.8 MB/s $ cd /mnt/wireless $ dd if=/dev/zero of=./test count=10 bs=10M && rm ./test 10+0 records in 10+0 records out 104857600 bytes (105 MB) copied, 63.8521 s, 1.6 MB/s $ dd if=/dev/zero of=./test count=10 bs=100M && rm ./test 10+0 records in 10+0 records out 1048576000 bytes (1.0 GB) copied, 649.335 s, 1.6 MB/s
10 分間隔で "group key handshake completed" というメッセージが出る
ログを眺めていたら、以下のようなメッセージが10分間隔で出ている。これは正常。
# tail -f /var/log/daemon.log Jul 6 13:59:31 ****** hostapd: wlan0: STA **:**:**:**:**:** WPA: group key handshake completed (RSN) Jul 6 14:09:31 ****** hostapd: wlan0: STA **:**:**:**:**:** WPA: group key handshake completed (RSN) Jul 6 14:19:31 ****** hostapd: wlan0: STA **:**:**:**:**:** WPA: group key handshake completed (RSN) Jul 6 14:29:31 ****** hostapd: wlan0: STA **:**:**:**:**:** WPA: group key handshake completed (RSN)
以下を設定ファイルに追記すれば、間隔を5分にすることも可能。hostapdを再起動。
# echo "wpa_group_rekey=300" >> /etc/hostapd/hostapd.conf # /etc/init.d/hostapd restart Stopping advanced IEEE 802.11 management: hostapd. Starting advanced IEEE 802.11 management: hostapd. # tail -f /var/log/daemon.log Jul 6 14:59:34 ****** hostapd: wlan0: STA 00:1d:e0:31:7f:7f WPA: group key handshake completed (RSN) Jul 6 15:04:34 ****** hostapd: wlan0: STA 00:1d:e0:31:7f:7f WPA: group key handshake completed (RSN)
さらに、時々接続が切断される様子。接続状態をキープしたい。
# echo "wmm_enabled=0" >> /etc/hostapd/hostapd.conf # /etc/init.d/hostapd restart Stopping advanced IEEE 802.11 management: hostapd. Starting advanced IEEE 802.11 management: hostapd.