どっかの元高専生の技術備忘録

10割自分の備忘録用のブログ。

NetworkManager(nmcli)を使ってLinuxをWiFiのホットスポットにする。

やりたいこと

有線LANに繋がれたLinuxマシンをスマホをとかをつなげるWiFiホットスポットにしたい。
NetworkManagerやらdnsmasqあたりで躓いたので備忘録的に

目次

環境

  • Parrot OS 5.3 (Electro Ara)
  • network-manager 1.42.4-1~bpo11+1
  • dnsmasq 2.85-1

dnsmasqとNetworkManagerとの関係

dnsmasqはDHCPやらDNSやらの処理をしてくれるサービスだけど、デフォルトではスタンドアロンサービスで起動する。
NetworkManagerはWiFiやらEthernetやらDHCPやらの設定を自動でやってくれるサービス。
なんでかこういう仕様か知らないけど、スタンドアロンで動いてるdnsmasqとNetworkManagerのdnsmasqと競合する。
なので、最初にスタンドアロンで起動されるdnsmasqを停止させて、NetworkManagerの下だけでdnsmasqが起動するように設定を変えていく。

dnsmasqの停止とNetworkManagerの下で起動させる

dnsmasqの自動起動と動作を停止させる。

$ sudo systemctl disable dnsmasq
$ sudo systemctl stop dnsmasq

次にNetworkManagerでdnsmasqをDNSサーバーとして使えるように/etc/NetworkManager/NetworkManager.confを変更していく。

$ sudo nano  /etc/NetworkManager/NetworkManager.conf

開けたらdns=dnsmasqを[main]に追記する。自分の場合、下の設定になった。

[main]
plugins=ifupdown,keyfile
dns=dnsmasq

[ifupdown]
managed=false

追記できたらNetworkManagerを再起動しておく。

$ sudo systemctl restart NetworkManager

Unit dnsmasq.service not foundが表示されたたら

多分dnsmasqがインストールされていないので、インストールして一番上から設定しなおす。

$ sudo apt update
$ sudo apt install dnsmasq

ホットスポットの作成

まず、ネットワークのインターフェース名を確認します。

$ nmcli d

DEVICE          TYPE      STATE                   CONNECTION   
wlp1s0          wifi      connected               hogeSSID   
lo              loopback  connected (externally)  lo                   
enp0s1       ethernet  unavailable             -- 

実行結果の内TYPEがwifiになっている箇所のDEVICE名を控えておく、今回の場合wlps0になる。
確認ができたらホットスポット用のプロフィールを作っていく。
今回は以下の設定でホットスポットを作っていくことにする。

プロフィール名 SSID 周波数帯域 暗号化方式 プロトコル パスワード インターフェース 自動接続
Hotspot Hotspot_Linux 2.4GHz WPA2-PSK CCMP 12345 wlp1s0 No
$ nmcli c add type wifi ifname wlp1s0 mode ap con-name Hotspot ssid Hotspot_Linux
$ nmcli c modify Hotspot ipv4.method shared
$ nmcli c modify Hotspot 802-11-wireless.band bg
$ nmcli c modify Hotspot 802-11-wireless-security.key-mgmt wpa-psk
$ nmcli c modify Hotspot 802-11-wireless-security.proto rsn
$ nmcli c modify Hotspot 802-11-wireless-security.group ccmp 
$ nmcli c modify Hotspot 802-11-wireless-security.pairwise ccmp
$ nmcli c modify Hotspot 802-11-wireless-security.psk 12345
$ nmcli c modify Hotspot connection.autoconnect no

終わったら、$ nmcli cを実行すると、さっき作ったHotspotが表示される

ホットスポットの起動

今回は自動起動をオフにしてるので都度起動させる必要がある。
有線LANに接続された状態で$ nmcli c up Hotspotを実行すると、Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/N)が表示される、、、はず。
停止は$ nmcli c down Hotspotで可能。