hostapd 暫定設定備忘録

IPv6 だけを提供する Wi-Fi AP を hostapd で設定しようとして、とりあえず動いている状態の備忘録。

基本的には、DNS64 + NAT64 の設定を eth1 ではなく、wlan0 で実施したものとなる。なお、Debian GNU/Linux 9 上となる。

■ネットワーク関係の設定

/etc/udev/rules.d/90-usb-wifi.rules

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="wlan0"

「xx:xx:xx:xx:xx:xx」には、サーバ側の Wi-Fi アダプタの MAC アドレスを設定する。
※これをやらないと、起動毎に Wi-Fi アダプタのインタフェース名が変わってしまう。

/etc/network/interfaces

allow-hotplug wlan0
iface wlan0 inet6 manual
	pre-up echo 0 > /proc/sys/net/ipv6/conf/wlan0/accept_ra
	pre-up echo 0 > /proc/sys/net/ipv6/conf/wlan0/autoconf
	pre-up echo 0 > /proc/sys/net/ipv6/conf/wlan0/accept_ra_defrtr
	pre-up echo 0 > /proc/sys/net/ipv6/conf/wlan0/accept_redirects

なぜか普通に static で設定するとアドレスが付かない現象が発生するので、起動後に ip コマンドで IPv6 アドレスを付与する。

/etc/rc.local

# 実際はちゃんとしたリンクローカルアドレスを設定する。
ip -6 addr add fe80::xxxx:xxxx:xxxx:xxxx/64 dev wlan0
# 適当な ULA をインターフェイスに設定する。
ip -6 addr add fdxx:xxxx:xxxx:xxxx::1/64 dev wlan0

■ hostapd のインストール

# apt-get install hostapd

■ hostapd の設定

/etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-d"

/etc/hostapd/hostapd.conf

# 下記は設定変更
interface=wlan0
driver=nl80211
logger_syslog_level=1

# 下記は設定ファイルのデフォルト値のまま
logger_syslog=-1
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0

# 以下、SSID 名を設定
ssid=SOMESSID

# 以下、日本と設定
country_code=JP
ieee80211d=1

# IEEE 802.11g を使用
hw_mode=g

# 下記は設定ファイルのデフォルト値のまま
channel=0
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0

# MAC アドレスによる拒否リストファイルを指定
deny_mac_file=/etc/hostapd/hostapd.deny

# 共有鍵による認証とする
auth_algs=1

# 下記は設定ファイルのデフォルト値のまま
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0

# IEEE 802.11n と IEEE 802.11ac は使用しない
ieee80211n=0
ieee80211ac=0

# 下記は設定ファイルのデフォルト値のまま
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1

# WPA2 のみに制限する。
wpa=2

# MAC アドレスごとの共有鍵を /etc/hostapd/hostpd.wpa_psk から読み込む
wpa_psk_file=/etc/hostapd/hostapd.wpa_psk

# WPA-PSK を使用する
wpa_key_mgmt=WPA-PSK

# データの暗号化には CCMP のみ使用する
wpa_pairwise=CCMP
rsn_pairwise=CCMP

# IPv6 のみ使用する
ipaddr_type_availability=01

/etc/hostapd/hostapd.deny

# 接続を拒否する端末の MAC アドレスを 1 行ごとに記入する。
zz:zz:zz:zz:zz:zz

/etc/hostapd/hostapd.wpa_psk

#「MACアドレス 共有鍵」の形式で記入する。
xx:xx:xx:xx:xx:xx Shared_Passphrase1
yy:yy:yy:yy:yy:yy Shared_Passphrase2

■発生する現象

hostapd を停止すると、wlan0 に割り当てられていた IPv6 アドレスが、リンクローカルごと無くなってしまう。よって、hostapd を起動する前に、都度 IPv6 を wlan0 に割り振る必要があった。

なお、wlan0 上に割り当てられた IPv6 アドレスで Listen しているサービスがある場合、サービス停止、hostapd 停止、wlan0 に IPv6 割当、サービス開始、のようにしている。

もっとスマートな方法がないのだろうか・・・。

・追記 (2017/10/16)

例の WPA2 の脆弱性の件、Debian GNU/Linux 9 においては対応したと見られる hostapd (2:2.4-1+deb9u1) がリリースされていた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です