このチュートリアルでは、 wpa_supplicant を使用して、Ubuntu 18.04/20.04サーバーとデスクトップのコマンドラインからWi-Fiネットワークに接続する方法を学習します。 。最新の家庭用ワイヤレスネットワークでは、エンタープライズネットワーク用に設計されたWPA-Enterpriseとは対照的に、通信はWPA-PSK(事前共有キー)で保護されています。 WPA-PSKはWPA-Personalとも呼ばれます。 wpa_supplicant WPAサプリカントコンポーネントの実装です。無線LANのサプリカントは、エンドユーザーのコンピューターにインストールされているクライアントソフトウェアであり、ネットワークに参加するには認証が必要です。
wpa_supplicant
をインストールする必要があることに注意してください Wi-Fiに接続する前にソフトウェアを使用するため、最初に有線イーサネットに接続する必要があります。これは1回だけ行われます。この方法が気に入らなくても、私に腹を立てないでください。たぶんいつかUbuntuはwpa_supplicant
を出荷するでしょう クリーンインストールで。
ステップ1:ワイヤレスインターフェイスとワイヤレスネットワークの名前を見つける
iwconfig
を実行します ワイヤレスインターフェイスの名前を検索するコマンド。
iwconfig
wlan0
Systemdを使用しないLinuxシステムでのワイヤレスネットワークインターフェイスの一般名でした。 UbuntuはSystemdを使用しているため、ワイヤレスネットワークインターフェイスの名前はwlp4s0
のようになります。 。現在、どのアクセスポイントにも関連付けられていないこともわかります。
ワイヤレスインターフェイスが表示されない場合は、次のコマンドを使用してワイヤレスインターフェイスを起動する必要があります。
sudo ifconfig wlp4s0 up
次に、以下のコマンドを使用して近くのネットワークをスキャンし、ワイヤレスネットワーク名を見つけます。 wlp4s0
を置き換えます 独自のワイヤレスインターフェイス名を使用します。 ESSIDはネットワーク名の識別子です。
sudo iwlist wlp4s0 scan | grep ESSID
ステップ2:WPA_Supplicantを使用してWi-Fiネットワークに接続する
次に、wpa_supplicant
をインストールします デフォルトのソフトウェアリポジトリからのUbuntu18.04/20.04で。
sudo apt install wpasupplicant
wpa_supplicant.conf
という名前のファイルを作成する必要があります wpa_passphrase
を使用する 効用。 wpa_supplicant.conf
は、ユーザーがコンピューターに接続するすべてのネットワークを記述した構成ファイルです。次のコマンドを実行して、このファイルを作成します。 ESSIDとWi-Fiパスフレーズを独自のものに置き換えます。
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee /etc/wpa_supplicant.conf
上のスクリーンショットでは、ESSIDに空白が含まれているため、ESSIDを二重引用符で囲んでいることに注意してください。
wpa_passphrase
の出力 コマンドはtee
にパイプされます 、次に/etc/wpa_supplicant.conf
に書き込まれます ファイル。次に、次のコマンドを使用して、ワイヤレスカードをワイヤレスアクセスポイントに接続します。
sudo wpa_supplicant -c /etc/wpa_supplicant.conf -i wlp4s0
次の出力は、ワイヤレスカードがアクセスポイントに正常に接続されていることを示しています。
Successfully initialized wpa_supplicant wlp4s0: SME: Trying to authenticate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz) wlp4s0: Trying to associate with c5:4a:21:53:ac:eb (SSID='LinuxBabe.Com Network' freq=2437 MHz) wlp4s0: Associated with c5:4a:21:53:ac:eb wlp4s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 wlp4s0: WPA: Key negotiation completed with c5:4a:21:53:ac:eb [PTK=CCMP GTK=CCMP] wlp4s0: CTRL-EVENT-CONNECTED - Connection to c5:4a:21:53:ac:eb completed [id=0 id_str=]
Ubuntuデスクトップ版を使用している場合は、次のコマンドでNetwork Managerを停止する必要があります。そうしないと、 wpa_supplicantを使用するときに接続の問題が発生します。 。
sudo systemctl stop NetworkManager
また、次のコマンドを実行して、起動時にNetworkManagerの自動起動を無効にします。
sudo systemctl disable NetworkManager-wait-online NetworkManager-dispatcher NetworkManager
デフォルトでは、wpa_supplicantはフォアグラウンドで実行されます。接続が完了したら、別のターミナルウィンドウを開いて実行します
iwconfig
ワイヤレスインターフェイスがアクセスポイントに関連付けられていることがわかります。
CTRL+C
を押すことができます 現在のwpa_supplicantを停止します -B
を追加して、バックグラウンドで処理および実行します フラグ。
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
認証されてワイヤレスネットワークに接続されていますが、まだIPアドレスを持っていません。 DHCPサーバーからプライベートIPアドレスを取得するには、次のコマンドを使用します。
sudo dhclient wlp4s0
これで、ワイヤレスインターフェイスにプライベートIPアドレスが割り当てられ、次のように表示できます。
ip addr show wlp4s0
これで、インターネットにアクセスできます。プライベートIPアドレスを解放するには、
を実行します。sudo dhclient wlp4s0 -r
隠しワイヤレスネットワークへの接続
ワイヤレスルーターがESSIDをブロードキャストしない場合は、/etc/wpa_supplicant.conf
に次の行を追加する必要があります ファイル。
scan_ssid=1
以下のように:
network={ ssid="LinuxBabe.Com Network" #psk="12345qwert" psk=68add4c5fee7dc3d0dac810f89b805d6d147c01e281f07f475a3e0195 scan_ssid=1 }
ステップ3:起動時に自動接続
起動時にワイヤレスネットワークに自動的に接続するには、wpa_supplicant.service
を編集する必要があります ファイル。 /lib/systemd/system/
からファイルをコピーすることをお勧めします /etc/systemd/system/
へのディレクトリ 新しいバージョンのwpa_supplicant
は必要ないため、ディレクトリからファイルの内容を編集します 変更を上書きします。
sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
Nanoなどのコマンドラインテキストエディタを使用してファイルを編集します。
sudo nano /etc/systemd/system/wpa_supplicant.service
次の行を見つけます。
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
次のように変更します。ここでは、構成ファイルとワイヤレスインターフェイス名をExecStart
に追加しました。 コマンド。
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp4s0
障害が検出された場合は、常にwpa_supplicantの再起動を試みることをお勧めします。 ExecStart
のすぐ下に次を追加します 行。
Restart=always
このファイルに次の行が見つかった場合は、コメントアウトします(行の先頭に#文字を追加します)。
Alias=dbus-fi.w1.wpa_supplicant1.service
ファイルを保存して閉じます。 (Nanoテキストエディタでファイルを保存するには、Ctrl+O
を押します。 、次にEnter
を押します 確認するために。終了するには、Ctrl+X
を押します 。)次にsystemdをリロードします。
sudo systemctl daemon-reload
wpa_supplicantを有効にする 起動時に開始するサービス。
sudo systemctl enable wpa_supplicant.service
また、dhclient
を開始する必要があります 起動時にDHCPサーバーからプライベートIPアドレスを取得します。これは、dhclient
のsystemdサービスユニットを作成することで実現できます。 。
sudo nano /etc/systemd/system/dhclient.service
次のテキストをファイルに入れます。
[Unit] Description= DHCP Client Before=network.target After=wpa_supplicant.service [Service] Type=forking ExecStart=/sbin/dhclient wlp4s0 -v ExecStop=/sbin/dhclient wlp4s0 -r Restart=always [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。次に、このサービスを有効にします。
sudo systemctl enable dhclient.service
静的IPアドレスを取得する方法
静的IPアドレスを取得する場合は、dhclient.service
を無効にする必要があります 。
sudo systemctl disable dhclient.service
ネットプランを使用して、Ubuntu 18.04/20.04で静的IPアドレスを構成する必要があります。 /etc/netplan/
の下に構成ファイルを作成します 。
sudo nano /etc/netplan/10-wifi.yaml
このファイルに次の行を追加します。 192.168.0.102
を置き換えます ご希望のIPアドレスで。インデントに注意してください。余分なスペースがあると、構成が無効になります。
network: ethernets: wlp4s0: dhcp4: no addresses: [192.168.0.102/24] gateway4: 192.168.0.1 version: 2
ファイルを保存して閉じます。次に、構成を適用します。
sudo netplan apply
--debug
をオンにすることもできます 期待どおりに機能しない場合はオプション。
sudo netplan --debug apply
他に.yaml
がある場合 /etc/netplan/
の下のファイル ディレクトリ、次にnetplan
異なるファイルの構成を自動的にマージします。 netplan
systemd-networkd
を使用します バックエンドネットワークレンダラーとして。 wpa_supplicant.service
を設定することをお勧めします systemd-networkd.service
の前に実行されます 、したがって、システムは最初にWi-Fiアクセスポイントに関連付けられ、次にプライベートIPアドレスを取得します。
sudo nano /etc/systemd/system/wpa_supplicant.service
次の行を見つけます。
Before=network.target
次のように変更します:
Before=network.target systemd-networkd.service
ファイルを保存して閉じます。
静的IPアドレスを取得する別の方法は、ルーターの管理インターフェースにログインし、ルーターがこの機能をサポートしている場合は、ワイヤレスカードのMACアドレスに静的IPを割り当てることです。
ホスト名を使用してUbuntuのサービスにアクセスする
実際には、Ubuntuボックスの静的IPアドレスを取得する必要はありません。 UbuntuはmDNS(マルチキャストDNS)を使用して、そのホスト名をローカルネットワークにアナウンスでき、クライアントはそのホスト名を使用してUbuntuボックスのサービスにアクセスできます。このホスト名は、IPアドレスが変更された場合でも、UbuntuボックスのIPアドレスにいつでも解決できます。
mDNSを使用するには、mDNS/DNS-SDのオープンソース実装であるavahi-daemonをインストールする必要があります。
sudo apt install avahi-daemon
サービスを開始します。
sudo systemctl start avahi-daemon
起動時に自動起動を有効にします。
sudo systemctl enable avahi-daemon
AvahiデーモンはUDP5353でリッスンするため、ファイアウォールでこのポートを開く必要があります。 UFWを使用する場合は、次のコマンドを実行します。
sudo ufw allow 5353/udp
次に、hostnamectl
を使用してUbuntuボックスに一意のホスト名を設定する必要があります 指図。 ubuntuboxを、ローカルネットワーク内の他のデバイスによってすでに使用されていない優先ホスト名に置き換えます。
sudo hostnamectl set-hostname ubuntubox
ここでavahi-daemonを再起動します。
sudo systemctl restart avahi-daemon
でステータスを確認した場合
systemctl status avahi-daemon
.local
で終わるmDNSホスト名を確認できます ドメイン。
クライアントコンピュータには、mDNS/DNS-SDソフトウェアもインストールする必要があります。
- Linuxユーザーは
avahi-daemon
をインストールする必要があります 。 - Windowsユーザーは、Bonjour印刷サービスをインストールするかiTunesをインストールして、Bonjourサービスを有効にする必要があります。
- macOSでは、Bonjourがプリインストールされています。
これで、ubuntubox.local
を使用してサービスにアクセスできます ホスト名。IPアドレスを確認して入力する必要がありません。
RaspberryPiでWi-Fiのブロックを解除する
RaspberryPi用のUbuntuARMOSは、デフォルトでワイヤレスインターフェイスをブロックします。次のコマンドでブロックを解除する必要があります:
sudo rfkill unblock wifi
起動時にブロックを解除するには、systemdサービスユニットを作成します。
sudo nano /etc/systemd/system/unblock-wifi.service
次の行を追加します。
[Unit] Description=RFKill Unblock WiFi Devices Requires=wpa_supplicant.service After=wpa_supplicant.service [Service] Type=oneshot ExecStart=/usr/sbin/rfkill unblock wifi ExecStop= RemainAfterExit=yes [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。起動時に自動起動を有効にします。
sudo systemctl enable unblock-wifi
unblock-wifi.service
wpa_supplicant.service
の後に実行する必要があります が起動します。そうしないと、wifiのブロックを解除できません。デスクトップ環境をインストールしている場合は、接続を妨害する可能性のあるネットワークマネージャーが実行されている可能性があることに注意してください。無効にする必要があります。たとえば、Raspberry Piで軽量のLXQTデスクトップ環境を使用しています(sudo apt install lubuntu-desktop
)そしてconnman.serviceとNetworkManager.serviceを無効にする必要があります。
sudo systemctl disable connman.service NetworkManager.service
推奨読書
- LinuxでSystemdを使用する方法–サービス、実行レベル、ログを管理する
複数のWi-Fiネットワーク
/etc/wpa_supplicant.conf
構成ファイルには、複数のWi-Fiネットワークを含めることができます。 wpa_supplicantは、構成ファイル内のネットワークブロックの順序、ネットワークセキュリティレベル、および信号強度に基づいて、最適なネットワークを自動的に選択します。
2つ目のWi-Fiネットワークを追加するには、
を実行しますwpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant.conf
-a
を使用する必要があることに注意してください tee
のオプション コマンド。元のコンテンツを削除する代わりに、新しいWifiネットワークをファイルに追加します。
Wi-Fiセキュリティ
WPA2 TKIPは使用しないでください またはWPA2TKIP + AES Wi-Fiルーターの暗号化方式として。 TKIPはもはや安全とは見なされません。 WPA2-AESを使用できます 暗号化方式として。