====== NetworkManager による Hotspot の作成(nmcli) ====== ===== パッケージインストール ===== $ sudo dnf install NetworkManager-wifi ===== WiFi 接続が有効な場合はそれを切断する ===== WiFi 接続状況を確認する。\\ $ nmcli con NAME UUID TYPE DEVICE bridge-br0 baab9d3a-a9fa-4adf-9ff6-a0f8b1baa85e bridge br0 virbr0 1d4e7d98-420a-47af-a01c-f51f203da95b bridge virbr0 TomoyanMWRT 2673681b-2218-4bd3-8d8e-1a8421f759fe wifi wlp7s0 bridge-slave-enp8s0 de661bb4-ff51-4a94-a030-0ca70e81551a ethernet enp8s0 WiFi 接続を切断する。\\ $ nmcli con down TomoyanMWRT 接続 'TomoyanMWRT' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/2) WiFi デバイスの状況を確認する。 $ nmcli dev DEVICE TYPE STATE CONNECTION br0 bridge 接続済み bridge-br0 virbr0 bridge 接続済み virbr0 enp8s0 ethernet 接続済み bridge-slave-enp8s0 wlp7s0 wifi 切断済み -- WiFi Hotspot (WiFi アクセスポイント) を作成する。\\ Hotspot の名前は、ここでは CmonWRT とする。また、WiFi インターフェースは wlp7s0 である。\\ $ nmcli con add type wifi ifname wlp7s0 con-name CmonWRT autoconnect yes ssid CmonWRT 接続 'CmonWRT' (586f6bf3-7472-4edd-8304-17814a03be12) が正常に追加されました。 $ nmcli con modify CmonWRT 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared $ nmcli con modify CmonWRT wifi-sec.key-mgmt wpa-psk $ nmcli con modify CmonWRT wifi-sec.psk "veryveryhardpassword1234" WiFi Hotspot のパスワードを確認。(設定したものと違う場合があるので確認) $ sudo cat /etc/sysconfig/network-scripts/keys-CmonWRT WPA_PSK="veryveryhardpassword1234" もしも、パスワードが設定したものと違う場合は、使えない文字を除いて設定される様である。(何故使えない文字があるのかは不明)\\ $ sudo vi /etc/sysconfig/network-scripts/keys-CmonWRT WPA_PSK="veryveryhardpassword1234" WiFi Hotspot を有効化する。\\ $ nmcli con up CmonWRT 接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/11) WiFi の接続状況を確認する。\\ $ nmcli con NAME UUID TYPE DEVICE CmonWRT 586f6bf3-7472-4edd-8304-17814a03be12 wifi wlp7s0 bridge-br0 baab9d3a-a9fa-4adf-9ff6-a0f8b1baa85e bridge br0 virbr0 1d4e7d98-420a-47af-a01c-f51f203da95b bridge virbr0 bridge-slave-enp8s0 de661bb4-ff51-4a94-a030-0ca70e81551a ethernet enp8s0 ===== Hotspot の DHCP と DNS は NetworkManager の DNSMasq Plugin が自動的に面倒を見てくれる ===== 以下の dnsmasq プロセスの 4252 を NetworkManager がコネクションをアップした時点で自動的に起動してくれる。\\ $ ps -ef | grep dnsmasq dnsmasq 1684 1 0 08:51 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/vm-net.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 1685 1684 0 08:51 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/vm-net.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper dnsmasq 4252 1041 0 09:03 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/dev/null --no-hosts --keep-in-foreground --bind-interfaces --except-interface=lo --clear-on-reload --strict-order --listen-address=10.42.0.1 --dhcp-range=10.42.0.10,10.42.0.254,60m --dhcp-lease-max=50 --dhcp-leasefile=/var/lib/NetworkManager/dnsmasq-wlp7s0.leases --pid-file=/var/run/nm-dnsmasq-wlp7s0.pid --conf-dir=/etc/NetworkManager/dnsmasq-shared.d ===== トラブルシューティング ===== ==== Fedora 30 の NetworkManager-1.16.0-1.fc30.x86_64 で OS 再起動後に Hotspot のパスワードが違うと言われて再接続不能になる ==== OS 再起動の度にパスワードは正しいのに、パスワードが違うと言われて繋がらなくなる。\\ 原因不明、恐らくバグかもしれない...。わからない...orz\\ WiFi Hotspot を削除して再作成すると繋がる。\\ これでは、はっきり言って使い物にならない...。\\ $ nmcli con del CmonWRT 接続 'CmonWRT' (586f6bf3-7472-4edd-8304-17814a03be12) が正常に削除されました。 $ nmcli con add type wifi ifname wlp7s0 con-name CmonWRT autoconnect yes ssid CmonWRT 接続 'CmonWRT' (e71a362b-29b0-4766-bf56-d08fc1621a11) が正常に追加されました。 $ nmcli con modify CmonWRT 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared $ nmcli con modify CmonWRT wifi-sec.key-mgmt wpa-psk $ nmcli con modify CmonWRT wifi-sec.psk "veryveryhardpassword1234" $ nmcli con up CmonWRT 接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/7) ===== 参考文献 ===== [[https://gist.github.com/narate/d3f001c97e1c981a59f94cd76f041140|Create Wi-Fi Hotspot on Linux using nmcli · GitHub]]\\ [[https://fedoramagazine.org/using-the-networkmanagers-dnsmasq-plugin/|Using the NetworkManager's DNSMasq plugin - Fedora Magazine]]\\ [[http://blog.father.gedow.net/2016/02/12/networkmanager-dnsmasq/|NetworkManager+dnsmasqで名前解決の耐障害性を向上 | 外道父の匠]]\\