前回、FreeBSD をインストールしたのはいいけれど、無線 LAN の設定がまだでした。
なお、ここでの設定メモは、ほぼ公式サイトからの要点抜粋ですので、躓いたら公式ハンドブックに立ち戻っていただけると問題解消に近づくと思います。
公式サイト:https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/
設定環境
FreeBSD 12.1-RELEASE r354233 GENERIC
Dell デスクトップ Core i5-3330、16MB、256SSD
-
FreeBSD を USB からインストールする
数年前からOSのインストールはメモリやネットから直製PCに行うことが当たり前になってきました。メモリからインストールする ...
続きを見る
FreeBSD で無線 LAN(Wi-Fi)設定
かつては有線 LAN が使えればそれだけで OK の時代が合ったように思いますが、現在では無線と有線をブリッジしたり、ルーターにしたりと様々な応用がありますので、ここは妥協できない設定ポイントになります。
有線 LAN の認識は特に難しいことは無いと思うので、無線 LAN だけをしっかり設定します。
他のマシンから有線 LAN で FreeBSD マシンに接続して、ターミナルから設定することも可能ですが、その場合は有線 LAN と無線 LAN が別々のネットワークに属しているかどうか注意してください。同一ネットワーク、同一ケートウェイなんて設定を行って、設定を終えたら、あとから有線を取り外そうとか考えるとトラブルになりますので要注意です。
ここでは、マシンに直接 root でログインして設定していくことを前提にしています。
FreeBSD で無線 LAN ことはじめ
root でログインして以下のコマンドをうちます。
csh
# bsdconfig netdev
すると、現在認識されているデバイスの一覧が出てきます。図は設定がすでに済んだ状態のものです(でも unknown network interface type となっています)。
今回設定するのは wlan0 というデバイスになるのですが、これがしっかり設定されていれば、あとはシグナルをスキャンして接続するだけという手順になります。
そうでなければ、これからの手順を一つずつ踏んでいきます。
なお、bedconfig はかつての /stand/sysinstall の進化版あたるものですが、ネットワーク設定に関しては意図しない設定ファイルの書き換えなどの思わぬトラブルになる可能性があるので、ここでは確認のためだけに使っています。
基本は手動で、昔ながらの設定ファイル書き換えで行います。
無線LANデバイスを確認
root になってコンソールから sysctl net.wlan.devices とやると、現在認識されている無線LANデバイスが見えます。
認識されていることと、使えるかどうかは別物ですので注意です。ココで認識されていない場合は、カーネルを作り替えるか、あるいは別途モジュールを読み込む必要が出てきます。
csh
# sysctl net.wlan.devices
net.wlan.devices: ath0
ath0 というのは Qualcomm Atheros 社の pci/cardbus 接続のネットワークインターフェイスになります。要は載っかっている半導体チップのことです。
今回使用した PC には AR9485 が乗っかっていますので、おそらく認識としては間違いないと判断しました。
私的によくやることですが、動作確認済みの Wi-Fi USB LAN カードをテスト用に準備しています。
設定に躓いたとき、ネットワークの設定がまずいのか、デバイスの(ドライバなどの)問題なのかを切り分けるために、確実に動作すると確信のあるデバイスで、まず試してみることが多いです。
csh
# sysctl net.wlan.devices
net.wlan.devices: run0 ath0
この場合の run は Ralink 社の RT2700U、RT2800U、RT3000U 等のチップが載っかったモノになります。Ralink 社チップがらみとしては、ral、ural、rum などのデバイスがあります。Atheros 社のチップがらみでは、AR9170 等が乗っかった otus、AR5005* 等が載った uath などの USB 接続のインターフェイスもよく見かけます。あとは、Broadcom 社製の BCM43xx が載っかった bwi や bwn あたりが有名どころです。
Wi-Fiネットワークインターフェイスを作成して起動する
チップが認識されていることを確認したら、今度はそのチップを使うように Wi-Fi ネットワークインターフェイスを作成して使えるようにします。
定番の呪文のようなコマンドがありまして、
csh
# ifconfig wlan0 create wlandev ath0 country JP
# ifconfig wlan0 up scan
として、そのチップを使ってシグナルチェックです。何も表示されない場合は、もしかしてインターフェイスの認識に失敗している可能性があります。なお、国名指定は各国別の電波法を遵守するためのおまじないみたいなものです(この作業を行わないと電波法違反になるという厳しい人もいるので、やっておくようにします)。
国名指定できるコードは:/etc/regdomain.xml 参照
FreeBSD で WPA 認証用の設定をファイルに書き込む
WPA 認証用の設定は、自動接続のためにファイルにして保存しておきます。ファイル名などはとくに何でも良いのですが、マニュアル的には /etc/wpa_supplicant.conf が定番になっています。/etc/wpa.conf と簡略したファイル名にしている人も多いようです。
bash
# wpa_passphrase 「この PC が接続する SSID」「その SSID の接続パスワード」 > /etc/wpa_supplicant.conf
# chmod 600 /etc/wpa_supplicant.conf
Wi-Fi 接続用のパスワードが保存されるので、chmod でパーミッションを 600 にしておきます。
#network={
ssid="この PC が接続する SSID"
#psk="その SSID の接続パスワード"
psk=99025d67ee1f79148dbbf6cb21aaa1d5280ec0ec4f317407ca145bd0c8bd6bf9d
}
といったファイルが作成されます。
作成されたファイル(/etc/wpa_supplicant.conf)の1番頭に、
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
を付け加えておきます(付け加えなくても、実会ではあまりありません)。
ctrl_interface はソケット作成ディレクトリです。
設定したインターフェイスでアクセスポイントに接続する
csh
# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
コマンドラインから処理するときは「-B」オプションをつけないと、コンソールを占有してしまいますので注意です。バックグラウンドで動くデーモンとして起動するオプションです。
FreeBSD で IP ネットワークの設定
Wi-Fi 接続でルーターなどから DHCP 割り当てを行う場合は、FreeBSD 側は DHCP クライアントを起動させている必要があります。
csh
# dhclient wlan0
FreeBSD のネットワークインターフェイスを再起動させる
csh
# service netif restart
これで、しっかり wlan0 に IP アドレスを拾ってくれば、うまく動作しています。
FreeBSD 起動時に以上の作業を自動的に行うようにする
ここまでの作業が問題なく成功したら、PC 起動時に自動的に Wi-Fi でネットワークに接続するように設定を行います。
触るファイルは /etc/rc.conf だけです。
/etc/rc.conf に Wi-Fi インターフェイス設定を入れる
まずインターフェイスの設定を入れます。
wlans_ath0="wlan0"
ifconfig_wlan0="WPA DHCP country JP"
この記述で、起動時に DHCP による IP アドレス取得がうまくいかない人は、以下のようにします。
wlans_ath0="wlan0"
ifconfig_wlan0="WPA SYNCDHCP country JP"
DHCP とやるか SYNCDHCP かは、どのタイミングで dhclient を起動するかどうかです。SYNCDHCP としておくと、dhclient がアドレス取得に成功するまで、スタートアップスクリプトの実行を待たせてタイミングを計ってくれます。
DHCP サーバーのアドレス割り当て処理がもっさりしている場合、特にスペック的に弱い Wi-Fi ルーターなどの場合は、SYNCDHCP の方がうまくハマります。しっかり速い DHCP サーバーから割り当てを受けられる場合は DHCP と書く方がパフォーマンスが上がる可能性があります。
オマケで念を押した設定を加える
ここまでの設定で、再起動しても普通に Wi-Fi に接続しにいくはずですが、さらに念を押すなら
ifconfig_wlan0="WPA DHCP country JP"
とやっている部分をもう少し詳細に、
ifconfig_wlan0="ssid 接続したいSSID WPA DHCP country JP"
として、接続したい SSID を指定することもできます。さらに、
ifconfig_wlan0="mode 11g ssid 接続したいSSID WPA DHCP country JP"
と 11g を指定することもできます。これらの設定は、あとから吟味するときに試すようにします。
また、DHCP による IP アドレスの割り当てではなく、固定 IP で接続する場合は、
ifconfig_wlan0="inet 192.168.1.20 netmask 255.255.255.0 ssid 接続したいSSID WPA DHCP country JP"
として、IPを固定(例では 192.168.1.20)することもできます。
さらに、wpa_supplicant 関連の設定として、
wpa_supplicant_conf_file="/etc/wpa_supplicant.conf"
wpa_supplicant_flags="-i wlan0"
を /etc/rc.conf に追加しておくと安心です。