気の向くままに辿るIT/ICT/IoT
ネットワーク

Debianで無線LAN

ホーム前へ次へ
LAN / Local Area Networkとは?

Debianで無線LAN

Debianで無線LAN

2016/05/27

 Debian(Linux)は、有線LANはもちろん、無線LANも構成できるようになっています。

 何れにせよ、同一ネットワークアドレスにあるPCなどの機器同士で更にデータ共有やデータの送受信をしたい場合には、NFS/Network File Systemや(Windowsの有無に関わらず)Sambaを使うとよいでしょう。

 ネットワークデバイスの参照、設定などには、ifconfigコマンド、ネットワーク経路確認には、routeやtracerouteコマンドなどを利用することができます。

Debianで無線LAN環境を構築

 Debianに限りませんが、無線LAN環境を構成する場合には、子機側の無線LANカードやUSBタイプなどの無線LANアダプタを装着するOS(今回は、Debian)上で各種設定ファイルを記述することになります。

 尚、親機やアクセスポイントとなる無線LANルータのファームウェアのアップデートや子機用ドライバのインストールも必要です。

 親機やアクセスポイントのファームウェアのアップデートは、一般にパソコンと親機のLANポート同士をLANケーブルで直結、ブラウザを介して指定のアドレスにアクセスすることで親機の機能設定と共にできるようになっていると思いますが、これは無線機器内で完結するものでOSにインストールするものではありません。

Debianで無線LAN子機用ドライバのインストール

 Debian 8 Jessieに関しては、多くの各種USB無線LANアダプタや無線LANカードのチップ用ドライバがリポジトリに用意されており、WPA/WPA2を使うに当たっても既にwpa_supplicantはデフォルトでインストール済み、他のOS・ディストロでwpa_supplicant.confを使って接続したことがあるなら、それをそのまま使うことができます。

 今回は、無線LANドングルとしてBUFFALO WLI-UC-GNM2を使いました。

 が、直後にMageia 5でも動作確認できたものの、これらの検証も虚しく、2015年11月末に買って2016年05月末とちょうど半年くらい経ったBUFFALO WLI-UC-GNM2、接続が突然切れるなど動作が不安定になり、寿命が来たようです。

[追記2016/07/31]
と思っていたら、まだ使えることが判明。。。
2016年07月末、あまり使わないe-oneに付けてあったUSB有線LANアダプタをdynabookで使っていましたが、やっぱり無線LAN子機を買おう、ということでいろいろ調べるもAmazonでは最安だし、NetBSDには結局、wli-uc-gnm2が無難かということで同じものを買ったついでに寿命かと思われた手持ちのgnm2を接続してみたらなんと数日使用してみても途切れることなく使える。。。
前回、何度やっても途切れた原因は不明。

(ちなみにアクセスポイントとしてはELECOM WRC-300FEBK/WRC-F300NFを利用。)

$ dmesg | tail
...
wlan0 ...
...
$ lsusb
...
... Ralink RT3070 ...
...
$

 この無線LAN子機WLI-UC-GNM2をUSBポートに挿してみたところ、wlan0に関連付られていることが、また、lsusbコマンドで確認したところ、チップはRalink RT3070であることがわかりました。

$ sudo vi /etc/apt/sources.list
...
deb http://http.debian.net/debian/ jessie main contrib non-free
$ sudo apt-get update && sudo apt-get install firmware-ralink
$

 子機用のドライバは、予めOSがサポートしていない限りは、OS(管理範囲)内にインストールすることになりますが、このRalink RT3070チップは、Debian Wiki rt2800usbによれば、Debianのnonfreeリポジトリにあるfirmware-ralinkパッケージに対応ドライバが収録されていることがわかったのでnonfreeリポジトリを追加の上、これをインストールしました。

$ cat /etc/network/interfaces
...
allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
...
$

 また、Debian Jessieの場合、既にこの時点でマシン起動時を含むネットワーク起動時に参照される今回関連付けられたネットワークインタフェースwlan0の設定を含んだ/etc/network/interfacesファイルが生成されているので手作業で設定する必要はありませんでした。

$ cat /etc/wpa_supplicant/wpa_supplicant.conf
ap_scan=1
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
  scan_ssid=1
  key_mgmt="WPA-PSK"
  pairwise=CCMP
  group=CCMP
  ssid="無線LANルータのssid"
  psk="暗号化されたWPA用パスワード"
}
$

 wpa_supplicant.confは、NetBSDやFedoraで確認済みのものをそのまま使いました。(NetBSDで入れていたctrl_interface_group=wheelはあると変なグループがあるぞ的なエラーになるので外しましたが。)

 尚、wpa_supplicantがインストール済みであれば、同時にインストールされているwpa_passphraseコマンドにSSIDとパスフレーズを引数として実行すると標準出力(画面)に出力されるので、これをリダイレクトするなり、コピーするなりすれば、wpa_supplicant.confの雛形を生成することができます。

 追加の設定内容や書式についての詳細は、以下リンク先を参照。

$ sudo systemctl restart networking.service
$ sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
...
$ sudo dhclient wlan0
$

 あとは、/etc/network/interfacesの設定を有効に(wlan0を起動)するためネットワークを再起動してwpa_supplicantコマンドを-Bオプションでデーモン起動を、-iオプションでネットワークインタフェースを、-cオプションでwpa_supplicant.confパスを指定して実行、dhclientコマンドでIPアドレスを割り当てれば、ネットにつながります。(-D wextも必要だったかも。。。[追記:2016/08/23]と思ったら、そもそもwextは非推奨だったようで今日、Debianをインストールした他のマシンで試してみたら、これに代わる標準とされる-D nl80211と設定する必要がありました。)

$ sudo killall wpa_supplicant
$

 これで、つながらない場合には、(何度も試したとか、設定後マシンを再起動していたとかで)wpa_supplicantが多重起動している可能性もあるため、wpa_supplicantを停止してから先の手順で行えば、つながるでしょう。

 それでも、つながらなければ、マシンを再起動、それでつながれば、コマンドライン設定の際にタイプミスなど何らかの単純ミスの可能性、一方、マシンを再起動してもつながらないのであれば、pskを間違えている可能性など設定を見直す必要があります。

 ちなみにpsk値は、SSIDとパスフレーズの組み合わせから算出される16進値なのでSSIDをダミーにしたりすると本来の値とは異なる値になってしまいます。(wpa_passphraseのwpapskにはパスフレーズの元の値を指定しますが、wpa_supplicant.confはセキュリティを考慮すれば必然的に16進値を使うのが賢明、また、これはあくまで無線LANルータ・アクセスポイント用の一意の値であってOSに依存して変動したりする値ではありません。)

[追記:2017/07/15]

 Debian 9 Stretchにおいて無線LANでpingは通るが、外と繋がらない場合、それは、dhcpクライアントがインストールされていないことが原因、詳細はDebian Jessie 8.8からDebian Stretch 9.0へアップグレードを参照。

[追記:2019/11/26]

 Debian 10 Busterでは、wpa_supplicant.confを作成しておけば、デスクトップのタスクバー上にあるnm-applet(Network Manager)をクリック、SSIDをクリック、SSIDとパスフレーズを問われるので入力を完了させれば接続されるでしょう。

 もし、SSIDが表示されていなければ、nm-appletから([ネットワークの設定]、)[非表示のネットワークに接続]ボタンをクリック、SSIDとパスフレーズの入力を完了させれば接続されるでしょう。

 ただし、いつからかCinnamonデスクトップに限っては、[非表示のネットワークに接続]ボタンをクリックしても反応がなく、Debian Buster 10.2で無線LANに苦戦・解決のようなことになりました。

[追記:2023/06/25]

 Debian bullseye、bookworm、Raspberry Pi OS bullseyeにおいて/etc/intefaces(/etc/intefaces.d以下)や/etc/dhcpcd.confファイル上の設定不備で、有線LAN・無線LANの両方、または、何れかで通信不良が起きる、場合によりNetworkManager上で[有線 管理対象外]となるケースもあったりといった事象に遭遇しましたが、Debian bullseye/bookwormでネットワーク設定できました。

ホーム前へ次へ