The Asphalt World

IT業界で生き残れますように。。。

ラズパイのWiFi設定

ラズパイをWiFi受信機に設定し、2Fの有線LANからインターネット接続できるようにしたいので、まずはラズパイのWiFi設定を実施。
以下を参考にして設定を進める。

WiFi設定(コマンドライン) - Raspberry Pi公式ドキュメントを日本語訳

しかし、以下が通らない。

pi@raspberrypi:~ $ sudo iwlist wlan0 scan
wlan0     Interface doesn't support scanning : Network is down
pi@raspberrypi:~ $

インターフェースが無効化されてるっぽいので無線LANインターフェースを確認

pi@raspberrypi:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.50.100  netmask 255.255.255.0  broadcast 192.168.50.255
        inet6 fe80::6568:6af9:abcd:abcd  prefixlen 64  scopeid 0x20<link>
        ether aa:bb:cc:13:13:43  txqueuelen 1000  (Ethernet)
        RX packets 836  bytes 56455 (55.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 709  bytes 87958 (85.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 96  bytes 9624 (9.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 96  bytes 9624 (9.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:~ $ sudo /etc/wpa_supplicant#

ifconfig wlan up を実行してもエラーになる。
SIOCSIFFLAGS: Operation not possible due to RF-kill

でもデバイスは認識している模様。

pi@raspberrypi:~ $ ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.50.100  netmask 255.255.255.0  broadcast 192.168.50.255
        inet6 fe80::6568:6af9:abcd:abcd  prefixlen 64  scopeid 0x20<link>
        ether aa:bb:cc:13:13:43  txqueuelen 1000  (Ethernet)
        RX packets 976  bytes 64949 (63.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 847  bytes 113884 (111.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 97  bytes 9697 (9.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 97  bytes 9697 (9.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether aa:bb::cc:dd:ee:ff  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:~ 

ググっても、インターフェースが起動していない例が見つからない。

chatGPT(無償版なので3.5だけど)に聞いてみる。

この中は一通り試したので、エラーメッセージを添えて質問。

おお、っぽいのが出てきた。

pi@raspberrypi:~ $ sudo rfkill list
0: phy0: Wireless LAN
        Soft blocked: yes
        Hard blocked: no
1: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
pi@raspberrypi:~ $

おお、これですね。 で、解決方法は??

ふむふむ。

pi@raspberrypi:~ $ sudo rfkill unblock wifi
pi@raspberrypi:~ $ sudo rfkill list
0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
1: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
pi@raspberrypi:~ $

ステータスが変わったので、wlan0をアップ。

pi@raspberrypi:~ $ sudo ifconfig wlan0 up
pi@raspberrypi:~ $ sudo ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.50.100  netmask 255.255.255.0  broadcast 192.168.50.255
        inet6 fe80::6568:6af9:abcd:abcd  prefixlen 64  scopeid 0x20<link>
        ether aa:bb:cc:13:13:43  txqueuelen 1000  (Ethernet)
        RX packets 1489  bytes 97140 (94.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1237  bytes 164336 (160.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 97  bytes 9697 (9.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 97  bytes 9697 (9.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether aa:bb::cc:dd:ee:ff  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:~ $

起動した!

以下でスキャンしてみる

pi@raspberrypi:~ $ sudo iwlist wlan0 scan

出力してきたけど、近くのAP全ての情報を拾ってくるのでSSIDを指定したい。
コマンドのオプションを調べたら、以下で指定できました。
※ただ、一回目は全部出る模様。二回実行すると指定したSSIDの情報だけが取れました。

pi@raspberrypi:~ $ sudo iwlist wlan0 scan essid SSID_XXXXX

では、無事無線も見えるようになったので、続きを実施。 ※そういえば、ラズパイってnanoを使うようになってるんですね。でもviの方が慣れてるのでviでやる。

pi@raspberrypi:/etc/wpa_supplicant $ sudo vi wpa_supplicant.conf

起動してみる。

pi@raspberrypi:/etc/wpa_supplicant $ sudo ifdown wlan0
ifdown: unknown interface wlan0
pi@raspberrypi:/etc/wpa_supplicant $ sudo ifup wlan0
ifup: unknown interface wlan0
pi@raspberrypi:/etc/wpa_supplicant $

あれ?

ググってみると、/etc/network/interfacesを記載すればよいという情報もあるが、以下のように、使わないとも書かれてるサイトも多い。
https://monqy.blogspot.com/2019/11/raspberry-pi-etcnetworkinterfaces.html

とりあえず、ChatGPTの回答では追記が必要となってるので、/etc/network/interfacesに以下を記載してみたが、やはり起動しない。

auto wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

その後、ChatGPTにエラーログを貼り付けながらやり取りしてたら、wpa_supplicantプロセスが上がってないか?という指摘が。
確認するとプロセスが起動していたのでkillしてネットワーク再起動。

pi@raspberrypi:/etc/network $ ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.50.100  netmask 255.255.255.0  broadcast 192.168.50.255
        inet6 fe80::6568:6af9:abcd:abcd  prefixlen 64  scopeid 0x20<link>
        ether aa:bb:cc:13:13:43  txqueuelen 1000  (Ethernet)
        RX packets 4377  bytes 278685 (272.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4650  bytes 842872 (823.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 100  bytes 9916 (9.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 100  bytes 9916 (9.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.140  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 2408:210:94a3:3900:b740:ddcd:4267:754f  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::e95d:dd24:de80:8e90  prefixlen 64  scopeid 0x20<link>
        ether aa:bb::cc:dd:ee:ff  txqueuelen 1000  (Ethernet)
        RX packets 20  bytes 3609 (3.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 49  bytes 7513 (7.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:/etc/network $

無事起動した!!

ただ、本当にinterfacesファイルの追記が必要か気になるので、一回削除してNW再実行。
アップしなくなりましたね。。。

pi@raspberrypi:/etc/network $ ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.50.100  netmask 255.255.255.0  broadcast 192.168.50.255
        inet6 fe80::6568:6af9:abcd:abcd  prefixlen 64  scopeid 0x20<link>
        ether aa:bb:cc:13:13:43  txqueuelen 1000  (Ethernet)
        RX packets 4558  bytes 289707 (282.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4795  bytes 870330 (849.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 100  bytes 9916 (9.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 100  bytes 9916 (9.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.5.141  netmask 255.255.255.0  broadcast 192.168.5.255
        ether aa:bb::cc:dd:ee:ff  txqueuelen 1000  (Ethernet)
        RX packets 27  bytes 4726 (4.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 51  bytes 7687 (7.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:/etc/network $

※今のところは必要、と認識しました。なぜ必要かの調査はいつかそのうち。。。

ちなみに、ChatGPTとか、いろんなサイトでは、以下のようにkey_mgmtが記載されていましたが、参考サイトにはありませんでした。どちらでも起動はするので、APとデバイス側で差分がある時に指定するんですかね?(これもそのうちちゃんと調べよう。)

network={
    ssid="testing"
    psk="testingPassword"
    key_mgmt=WPA-PSK
}

また、以下サイトによると、キーの暗号化もできるらしいのでテスト。 https://raspida.com/wifi4raspbian#wi-fi%E6%83%85%E5%A0%B1%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AFwpa-supplicant-conf

pi@raspberrypi:/etc/wpa_supplicant $ wpa_passphrase SSID XXXXXXXXXXXXXXXXXXXXXX
network={
        ssid="SSID"
        #psk="XXXXXXXXXXXXXXXXXXXXXX"
        psk=3b2626002fb9e1c8a9bda8256cbf4a1496fe2faefa339180258d32f561150d30
}
pi@raspberrypi:/etc/wpa_supplicant $

ちゃんとつながりますね。

pi@raspberrypi:/etc/wpa_supplicant $ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.140  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 fe80::e95d:dd24:de80:8e90  prefixlen 64  scopeid 0x20<link>
        ether aa:bb::cc:dd:ee:ff  txqueuelen 1000  (Ethernet)
        RX packets 450  bytes 64852 (63.3 KiB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 247  bytes 33279 (32.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:/etc/wpa_supplicant $

一応wpa_supplicant.confはrootじゃないと読み込みもできないし、このファイルの内容が見れる人が全員キーを見れていいなら暗号化は必須ではないとは思いますが、ラズパイの性質上盗まれて読み込まれるリスクがあるので暗号化したほうがよいですね(#pskにキーが載ってるので削除を忘れずに)

pi@raspberrypi:/etc/wpa_supplicant $ ls -l wpa_supplicant.conf
-rw------- 1 root root 291 Apr 20 23:22 wpa_supplicant.conf
pi@raspberrypi:/etc/wpa_supplicant $

名前解決も外部へのpingもOK。

pi@raspberrypi:~ $ ping yahoo.co.jp -c 3
PING yahoo.co.jp (182.22.25.124) 56(84) bytes of data.
64 bytes from 182.22.25.124 (182.22.25.124): icmp_seq=1 ttl=55 time=6.06 ms
64 bytes from 182.22.25.124 (182.22.25.124): icmp_seq=2 ttl=55 time=9.79 ms
64 bytes from 182.22.25.124 (182.22.25.124): icmp_seq=3 ttl=55 time=18.9 ms

--- yahoo.co.jp ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 6.059/11.591/18.927/5.405 ms
pi@raspberrypi:~ $

これで無線の設定はOKかな。
現在の構想だとラズパイはfortiから見たGWになるので、次は、物理NICの方を固定IPにして、DHCPサーバを立てて配布できるようにしよう。
あと、GUIの画面もチェックしてみたいけど、ディスプレイ買う気は無いので、xwindowでPCからつながるようにしよう。

ここまでやってきて、最新んのラズパイはnmcliを使ってネットワーク設定するような情報もあって、ちょっとやらかしたな、と思った。
けど、ネットワークマネージャー起動してなかったから合ってたのかな??