PV: 回 / All:

【Linux備忘録】CLIで無線接続 (wpa_supplicant)

NetworkManagerを入れていない方はこちらの方法を利用できます。
ドライバがインストールされている前提で進みますのでお気を付けください。
それではどうぞ。

環境の準備

  1. パッケージをインストール
  2. 無線LANの情報確認
~# apt install iw wpasupplicant
~$ iw dev
phy#0
    Interface wlp34s0     <- NIC ID
        ifindex 4
        wdev 0x1
        addr c4:0f:08:9f:1d:ed
        type managed
        multicast TXQ:
            qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes tx-packets
            0       0       0       0       0       0       0       0        0

iw devコマンドでデバイスが存在することを確認します。
私の環境ではNIC IDがwlp34s0ですが、基本的に皆さんのPCではwlan0のはずです。

次に、wpa_supplicantの設定を行います。
/etc/wpa_supplicant/wpa_supplicant-wlp34s0.confを作成します。
wlp34s0は皆さんの環境のNIC IDに合わせて下さい。

ctrl_interface=/var/run/wpa_supplicant     <- デーモンが自動的に作成するディレクトリ。停止中は削除状態
ctrl_interface_group=0    <- 設定を触れるユーザーグループを指定
update_config=1           <- wpa_cliで設定を変更した場合にこのファイルに自動的に反映される
country=JP

まずここまで入力してください。
次に、パスワードを入力します。でも、直書きは嫌ですよね。
そんな時のために、wpasupplicantにはwpa_passphraseというものがあります。

~# wpa_passphrase <SSID>
# reading passphrase from stdin
network={
        ssid="<SSID>"
        #psk="[passphrase]"  <- 削除推奨
        psk=[加工済みのpassphrase]
}

ここに出力されたnetwork={}のセクションを丸ごとコピーして、
wpa_supplicant-wlp34s0.confの末尾にペーストします。
セキュリティの関係上、#pskは消しておきましょう。

これに情報を追加します。
対応するセキュリティ規格に合わせ、ネットワークセクション内に、key_mgmtを追加します。

key_mgmt=WPA-PSK

最終的な設定はこのようになっているはずです。

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
country=JP

network={
        ssid="<SSID>"
        psk=[加工済みpassphrase]
        key_mgmt=WPA-PSK
}

こうなればもうあと1歩です。

サービス(daemon)を起動する

wpa_supplicantサービスを起動・自動起動有効にしましょう。

systemctl start wpa_supplicant
systemctl enable wpa_supplicant
systemctl start wpa_supplicant@wlp34s0
systemctl enable wpa_supplicant@wlp34s0
systemctl status wpa_supplicant@wlp34s0

接続を確認するため、iwを利用します。

~# iw dev wlp34s0 link
Connected to 60:32:b1:fd:7f:0a (on wlp34s0)
    SSID: <SSID>
    freq: 5180
    RX: 3113 bytes (31 packets)
    TX: 1669 bytes (14 packets)
    signal: -67 dBm
    rx bitrate: 6.0 MBit/s
    tx bitrate: 26.0 MBit/s VHT-MCS 3 VHT-NSS 1

    bss flags:      short-slot-time
    dtim period:    1
    beacon int:     100

これで成功です。
次に、IPアドレスを設定しましょう。
※私はサーバーなので/etc/network/interfaceで設定しますが、皆さんは以下のコマンドで大丈夫でしょう。

dhclient wlp34s0

これは私の備忘録も兼ねていますので設定を書いておきます。

iface wlp34s0 inet static
        address 192.168.0.5
        gateway 192.168.0.1
        metric 1
        dns-nameservers 192.168.0.3

iface wlp34s0 inet6 auto
        metric 1

宅内のネットが何となくわかってしまいそうですね。
ちなみに、私の環境ではなぜか/etc/network/if-pre-up.d/wpasupplicantがなかったので、その中に

exit 0

を書いておきました。エラーなくなったねめでたしめでたし

通信テストをする

利用用途によってはこれが必要です。

tcpdump -i wlp34s0

私の場合はバックアップ用の接続のため、ここでarping -iやping -Iを使用して疎通を確認します。

arping -i wlp34s0 192.168.0.1
ping -I 192.168.0.199 

これで、tcpdumpを同時に見ながら確認すると、こんな風に表示されています。OKですね

18:56:49.863820 ARP, Request who-has 192.168.0.1 tell pve.local, length 46
18:58:32.880384 IP one.one.one.one > 192.168.0.199: ICMP echo reply, id 17346, seq 1, length 64
18:58:33.904409 IP one.one.one.one > 192.168.0.199: ICMP echo reply, id 17346, seq 2, length 64
18:58:34.928293 IP one.one.one.one > 192.168.0.199: ICMP echo reply, id 17346, seq 3, length 64

あとがき

私の環境は、Proxmoxのバックアップ接続用に確保していました。
たまにLANコンバーターにしてるルーターがたまにおかしくなるのでその時のため用です。
ちなみに、これでキャリアとCloudflare Tunnelを利用したサービスもできます。しないけど

P.S.

バックアップ接続のテストをしたら全然だめだったので取り外しました
ネットワークの詳しい勉強をして慣れてから再挑戦します
ProxmoxをWi-Fiで繋ぐことを来年中の目標にしようかな…

Linux,備忘録

Posted by nanasi_rasi