1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RPi4 に NetworkManager を導入し、wlan0 を ap にしたら嵌った

Last updated at Posted at 2020-04-27

Raspberry Pi4(Buster) に NetworkManager を導入して wlan0 をアクセスポイントにしようと思ったら思いの外嵌ってしまった。参考資料がほとんどなかったのでメモしておきます。

ことの経緯

今までは hostapd やら isc-dhcp-server やらを導入してアクセスポイントを構成していたが、(デフォルトではないものの)Buster になって NetworkManager が使える様になった。(前から使えていたのかな??)

これで Ubuntu と同様にアクセスポイントを構成できる!と思ったのもつかの間、細かな点に相異があり、気をつけるべきポイントが多々あった。

Network Manager の導入

これ自身はパッケージになっているので簡単。

sudo apt install network-manager

先に行く前に

dhcpcd5 を削除しないと競合する様だ。

sudo apt remove dhcpcd5

/etc/dnsmasq.conf の設定

bind-interfaces を追加する。でも後で ps ax してみると、この設定見ていないっぽい...

NetworkManager.conf にdnsmasqの項目を追加する。

/etc/NetworkManager/NetworkManager.conf
[main]
dns=dnsmasq

とりあえず NetworkManager を上げる

/etc/wpa_supplicant/wpa_supplicant.conf にクライアントモードの設定が残っていたら削除する。/sbin/wpa_supplicant が上がっていたら kill で落とした方が良いかも。
後、dnsmasq が上がっていたら kill しないとポート53を占有してこの後の作業に支障が出るので落としておく。

アクセスポイントを構成するには NetworkManager を上げる必要があるため、

sudo systemctl restart NetworkManager

で起動する。

アクセスポイントを作成する

以下のコマンドでアクセスポイントを作成する。

sudo nmcli device wifi hotspot ifnamne wlan0 ssid "MySSID" password "MyPassword"
sudo nmcli connection modify Hotspot autoconnect yes
sudo nmcli connection modify Hotspot ipv4.addresses 192.168.211.1/24

お好みで WiFi 用 DNS エントリを切る

/etc/hosts.internal
192.168.211.1 raspberrypi
/etc/NetworkManager/dnsmasq.d/hosts.internal.conf
addn-hosts=/etc/hosts.internal

NetworkManager を再起動する

sudo systemctl stop NetworkManager

とした後、dnsmasq が残っていたら kill する。

sudo systemctl start NetworkManager

で Netowrk Manager の管理下でアクセスポイントが起動するはず。

(2020/4/28追記)本当はこのあと IP パケットのフォワード設定や iptables設定等があるが、他の方の記事に詳しいのでここで終わります。

今回嵌った点

  1. /etc/dnsmasq.confbind-interfaces を定義しないと Addresss In Use エラーが発生する。(見てない気はしますが。)
  2. Wifi の MAC アドレスは Network Manager を起動するたびに変化する様だ。/etc/NetworkManager/system-connections/Hotspot.nmconnectionmac-address は eth0 のアドレスを設定しておく必要がある。
  3. /etc/dnsmasq.conf の他の項目は無視される。と言うか、dnsmasq の起動オプションに --conf-file=/dev/null とか指定されてしまうので、Network Manager 側の設定ファイルをいじるしかない。また、なるべく直接いじらず、nmcli コマンドを使おう。
  4. /etc/wpa_supplicant/wpa_supplicant.conf にクライアント設定が残っているとうまく動作しない(当たり前か)。

おまけ

Android 端末でつなげていると、しばらくして「インターネット接続がありません」という現象が発生する。デフォルトでは省電力モードになっているためと思われる。

/usr/bin/iw dev wlan0 set power_save off

として様子を見る。/etc/rc.local に上記を設定するとリブート時に自動的に設定される。
→ダメだった。時間を置くとインターネット接続がなくなる。もう少しよく考える必要がありそうだ。

(2020/5/17 追記)
RPi4 専用のパワー制御モードがある模様。

> sudo su
# echo 'on' > /sys/class/net/wlan0/power/control

としてしばらく放っておいたら現象が発生しなくなった。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?