本記事の内容は古くなっています。
以下を参照してください。
https://qiita.com/yamato225/items/24acb27403136732e01b
概要
Raspberry Pi3に搭載されたwifiモジュールは、クライアントとしてwifiに接続することも、アクセスポイント(AP)として他の機器からRaspberry piに接続することもできます。
アクセスポイントとして起動すれば、キーボードやモニタを用意せずにスマホからSSH接続して設定を行うことができます。
一方で、アクセスポイント化⇔クライアント化の切り替えがうまく行かず、
少し苦労したので、備忘を兼ねて投稿します。
構成
Raspberry Pi 3
OSバージョン Raspbian stretch lite
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.8 (stretch)
Release: 9.8
Codename: stretch
インストール
hostapd, dnsmasqをインストール。
sudo apt -y install hostapd dnsmasq
/etc/hostapd/hostapd.conf
にhostapdの設定を記述。
interface=wlan0
driver=nl80211
ssid=pipi ##SSID名
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=raspberry ##SSIDパスワード
rsn_pairwise=CCMP
/etc/dhcpcd.conf
に以下の設定を追記。
## AP
# クライアント時は以下をコメントアウトする。
interface eth0
fallback static_eth0
denyinterface wlan0
interface wlan0
static ip_address=172.24.1.1/24
static routers=172.24.1.1
static domain_name_servers=172.24.1.1
static broadcast 172.24.1.255
いったん、ネットワーク系デーモンの自動起動を無効化。
sudo systemctl disable wpa_supplicant
sudo systemctl disable dhcpcd
切り替え手順
APにする
-
/etc/dhcpcd.conf
のAP設定を有効化 sudo systemctl stop wpa_supplicant
sudo systemctl stop dhcpcd
sudo ifconfig wlan0 down && sudo ifconfig wlan0 up
sudo hostapd /etc/hostapd/hostapd.conf &
sudo systemctl start dhcpcd
sudo systemctl start dnsmasq
clientにする
-
/etc/dhcpcd.conf
のAP設定を無効化 sudo systemctl stop dnsmasq
sudo systemctl stop dhcpcd
sudo ifconfig wlan0 down && sudo ifconfig wlan0 up
sudo systemctl start wpa_supplicant
sudo systemctl start dhcpcd
疑問点メモ
- 参考文献他の記事ではhostapdがサービスとして立ち上がるとのことでしたが、今回試した環境ではsystemdのスクリプトのパス(
/etc/systemd/system/hostapd.service
)に/dev/null
へのシンボリックリンクが貼られており、少なくとも単純にaptでインストールしただけではサービス化できませんでした。 - Client→AP化する際にはwpa_supplicantがジャマをしているようで、停止してからdhcpcdを再起動しています。
- AP化の際、dhcpcdの起動よりもhostapdの起動を先にしないと、dhcpcdが設定すべきNICを見つけられずエラーになるようです。clientの場合はwpa_supplicantが、APの場合はhostapdがNICをdhcpcdが操作できる状態にする、ということなんでしょうか?
- 他記事では設定反映のためにOS再起動しているものがありますが、上記手順ではOSの再起動が不要であることを確認しました。