9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

FreeBSDでWiFiを使おうとして3時間ハマった

Linuxだとnmcliで一発なのに、FreeBSDだとそうはいかない。

ハマりポイントと解決策を共有する。

FreeBSDのWiFiアーキテクチャ

┌─────────────────────────────────────────────────────────────┐
│                WiFi Stack                                    │
│                                                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │                 wlan0 (仮想インターフェース)         │    │
│  │            net80211 フレームワーク                   │    │
│  └─────────────────────────────────────────────────────┘    │
│                          ↓                                   │
│  ┌─────────────────────────────────────────────────────┐    │
│  │        ath0/iwn0/rtwn0/... (物理デバイス)           │    │
│  │              ハードウェアドライバ                    │    │
│  └─────────────────────────────────────────────────────┘    │
│                          ↓                                   │
│  ┌─────────────────────────────────────────────────────┐    │
│  │           ファームウェア(必要な場合)               │    │
│  └─────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────┘

重要: 物理デバイス(ath0等)から仮想インターフェース(wlan0)を作る必要がある。

ハマりポイント1: ドライバが認識されない

症状

ifconfig
# em0: ...
# lo0: ...
# (WiFiデバイスがない!)

原因と対策

デバイスの確認

pciconf -lv | grep -A3 -i wireless
# none0@pci0:3:0:0:        class=0x028000 rev=0x00 hdr=0x00 vendor=0x8086 device=0x24f3
#     vendor     = 'Intel Corporation'
#     device     = 'Wireless 8260'

dmesg | grep -i wifi
dmesg | grep -i wireless

対応ドライバの確認

チップベンダー ドライバ ファームウェア
Intel (古い) iwn iwn-firmware
Intel (新しい) iwlwifi (LinuxKPIベース)
Atheros ath 不要
Realtek rtwn rtwn-rtl*-firmware
Ralink rum, run 不要
Broadcom bwn bwi-firmware-kmod

ドライバのロード

# Intel (iwn)
kldload if_iwn

# Realtek
kldload if_rtwn
kldload if_rtwn_usb

# Atheros
kldload if_ath

ファームウェアのインストール

# Intel iwn
pkg install iwn-firmware

# Realtek
pkg install rtwn-rtl8188eufw
pkg install rtwn-rtl8192cfwU

# Broadcom
pkg install bwi-firmware-kmod

永続化

# /boot/loader.conf
if_iwn_load="YES"
iwn8265fw_load="YES"

ハマりポイント2: wlanインターフェースを作ってない

症状

ifconfig iwn0
# iwn0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> ...
# (IPアドレスがない、UPしてない)

ifconfig iwn0 up
# ifconfig: SIOCSIFFLAGS: Invalid argument

原因

FreeBSDでは物理デバイスからwlanインターフェースを作成する必要がある。

対策

# wlan0を作成
ifconfig wlan0 create wlandev iwn0

# 確認
ifconfig wlan0
# wlan0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
#         ether 00:11:22:33:44:55
#         groups: wlan
#         ssid "" channel 1 (2412 MHz 11b)

永続化

# /etc/rc.conf
wlans_iwn0="wlan0"

ハマりポイント3: SSIDが見つからない

症状

ifconfig wlan0 up scan
# (何も表示されない)

対策

カントリーコードの設定

# 日本の場合
ifconfig wlan0 country JP

# 確認
ifconfig wlan0
# ...
# country JP regdomain ETSI

5GHz帯の有効化

# 11a (5GHz)を有効化
ifconfig wlan0 mode 11a

# または自動選択
ifconfig wlan0 mode 11na  # 11n 5GHz
ifconfig wlan0 mode 11ac  # 11ac

スキャン再実行

ifconfig wlan0 up scan
# SSID/MESH ID                      BSSID              CHAN RATE    S:N     INT CAPS
# MyWiFi                            00:11:22:33:44:55    6   54M  -65:-95  100 EPS  RSN
# Neighbor_WiFi                     aa:bb:cc:dd:ee:ff   11   54M  -75:-95  100 EPS  RSN

ハマりポイント4: WPA認証が通らない

症状

ifconfig wlan0 ssid MyWiFi
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
# wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect

対策

wpa_supplicant.confの正しい書き方

# /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
eapol_version=2
ap_scan=1
fast_reauth=1

network={
    ssid="MyWiFi"
    psk="MyPassword"
    key_mgmt=WPA-PSK
    proto=RSN WPA
    pairwise=CCMP TKIP
    group=CCMP TKIP
}

パスワードを平文で書きたくない場合

wpa_passphrase "MyWiFi" "MyPassword"
# network={
#         ssid="MyWiFi"
#         #psk="MyPassword"
#         psk=a1b2c3d4e5f6...(ハッシュ値)
# }

WPA3 (SAE)の場合

network={
    ssid="MyWiFi"
    key_mgmt=SAE
    psk="MyPassword"
    ieee80211w=2
}

ハマりポイント5: DHCPでIPが取れない

症状

dhclient wlan0
# DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 3
# DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6
# (タイムアウト)

対策

接続状態の確認

ifconfig wlan0 | grep status
# status: associated

associatedになっていなければWPA認証に問題あり。

wpa_supplicantをデバッグモードで

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -d
# ...
# wlan0: State: COMPLETED -> DISCONNECTED
# wlan0: CTRL-EVENT-DISCONNECTED bssid=...

手動でIPを設定してみる

ifconfig wlan0 inet 192.168.1.100 netmask 255.255.255.0
route add default 192.168.1.1
ping 192.168.1.1

pingが通ればDHCPサーバーの問題。

完全な設定手順

1. ドライバとファームウェア

# /boot/loader.conf
if_iwn_load="YES"
iwn8265fw_load="YES"

2. rc.conf

# /etc/rc.conf
wlans_iwn0="wlan0"
ifconfig_wlan0="WPA DHCP country JP"

3. wpa_supplicant.conf

# /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
eapol_version=2
ap_scan=1
fast_reauth=1

network={
    ssid="MyWiFi"
    psk="MyPassword"
}

4. 再起動または手動適用

# 再起動
reboot

# または手動で
service netif restart

トラブルシューティングコマンド集

# デバイス確認
pciconf -lv | grep -i wireless
usbconfig list | grep -i wireless

# ドライバ確認
kldstat | grep if_

# インターフェース確認
ifconfig -a

# wlanの詳細
ifconfig wlan0

# スキャン
ifconfig wlan0 list scan

# 接続状態
wpa_cli -i wlan0 status

# ログ確認
dmesg | tail -50
tail -f /var/log/messages

# wpa_supplicantのデバッグ
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -dd

便利なツール

# wpa_cliでインタラクティブに操作
wpa_cli -i wlan0
> scan
> scan_results
> add_network
> set_network 0 ssid "MyWiFi"
> set_network 0 psk "MyPassword"
> enable_network 0
> save_config

NetworkManager的なものは?

FreeBSDには公式のNetworkManager的なものはないけど、いくつかの選択肢:

# wifimgr (GUIツール)
pkg install wifimgr

# networkmgr (TrueOS由来)
pkg install networkmgr

まとめ

FreeBSDのWiFi設定でハマるポイント:

  1. ドライバとファームウェアを確認
  2. wlanインターフェースを作成(これ忘れがち)
  3. countryを設定(5GHzが見えない原因)
  4. wpa_supplicant.confを正しく書く
  5. status: associatedを確認してからDHCP

一度設定すれば安定するけど、最初の設定がLinuxより面倒なのは事実。

この記事が役に立ったら、いいね・ストックしてもらえると嬉しいです!

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?