2014年04月09日

FreeBSD 10.0-RELEASE の Live CD で、無線LAN経由でネットに繋げる設定のメモ

家の環境だとネットに繋がらない

家の環境だと FreeBSD 10.0-RELEASE を Live CD として起動しただけではネットにアクセスできない。例えばGoogleにpingを打ってみても 「cannot resolve www.google.com: Host name lookup failure」 と言われる。

具体的には、PC本体と無線LAN子機 (BUFFALO WLI-U2-G54HP) をUSBケーブルで接続、親機とはWPA2-PSKで接続している。ネット接続できないのは、多分、PC自体のLANポートとモデム/ルータを直接ケーブルで繋いでいないで、無線LANを使っているせいだろうと予想。今まで、所謂*nix系の Live CDKNOPPIXUbuntuと、割と様々なデバイスに対して良きに計らってくれるタイプの物しか使った事が無かったのが仇となったか。散々調べまわる羽目になった。

結論から書くと

root@:~ # ifconfig wlan0 create wlandev rum0
wlan0: Ethernet address: 00:1d:73:a1:2d:dc
root@:~ # wpa_passphrase 0123456789AB XXXXXXXX > /var/wpa_supplicant.conf
root@:~ # vi /var/wpa_supplicant.conf
2j^c$key_mgmt=WPA-PSK<ESC>:wq<CR>
root@:~ # wpa_supplicant -B -i wlan0 -c /var/wpa_supplicant.conf
Successfully initialized wpa_supplicant
root@:~ # mkdir /tmp/bsdinstall_etc
root@:~ # touch /tmp/bsdinstall_etc/resolv.conf
root@:~ # dhclient wlan0
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 192.168.1.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.29 -- renewal in 86400 seconds.

で、ネットに繋がる(少なくともpingは打てる)ようになった。以下、調べた結果のメモ。

ネットワーク設定の前に……

AMAgrammar <> PROgrammer: FreeBSDの Live CD で、キーボードを日本語106キーボードに設定する方法

ifconfig周り

オプションなしでifconfigした結果が以下。

root@:~ # ifconfig
rl0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2008<CLAN_MTU,WOL_MAGIC>
        ether 00:0a:e4:6d:53:06
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect
        status: nocarrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
rum0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
        ehter 00:1d:73:a1:2d:dc
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: IEEE 802.11 Wireless Ethernet autoselect <adhoc> (autoselect <adhoc>)
        status: no carrier

無線LAN子機が「rum0」に対応している事が分かる。最初、この「rum0」に対してアレコレするのだろうと四苦八苦していたが全く違った。新しく1個インタフェイス作んないとダメらしい。いやいや、マジかよ。罠だろこれ。

root@:~ # ifconfig wlan0 create wlandev rum0
wlan0: Ethernet address: 00:1d:73:a1:2d:dc

その後、"ifconfig wlan0 list scan"すると、周囲のアクセスポイントが一覧できる。例えば、以下のような感じ。

root@:~ # ifconfig wlan0 list scan
SSID/MESH ID    BSSID              CHAN RATE   S:N     INT CAPS
0123456789AB    00:0a:79:a5:85:22    3   54M -72:-95   100 EPS  RSN WPA WME ATH WPS
((他にも沢山出るけれど、省略))

WPA周り

"wpa_passphrase"で、 pre-shared WPA key とやらを生成する。コマンドライン引数はアクセスポイントのSSIDPINコード。後で使うので、ファイルにリダイレクトしておく(当たり前の話だが、此処で指定しているSSIDPINコードは仮の物だ)。

root@:~ # wpa_passphrase 0123456789AB XXXXXXXX > /var/wpa_supplicant.conf
root@:~ # cat /var/wpa_supplicant.conf
network={
	ssid="0123456789AB"
	#psk="XXXXXXXX"
	psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}

wpa_passphraseの出力(今回の場合は/var/wpa_supplicant.confに保存した内容)を見てみると、3行目にコメントアウトされた上でPINコードがベタ書きされている。流石にセキュリティ上まずい気がするのでこの行は消す。また、"key_mgmt"という設定が要るので足す。

viを使うならこんな感じか。

root@:~ # vi /var/wpa_supplicant.conf
2j^c$key_mgmt=WPA-PSK<ESC>:wq<CR>

そして、そのファイルをwpa_supplicantに渡す。

root@:~ # wpa_supplicant -B -i wlan0 -c /var/wpa_supplicant.conf
Successfully initialized wpa_supplicant

DNS周り

ここまで終わったら、DHCPクライアントを立ち上げる。のだが、その前に、/tmp/bsdinstall_etc/resolv.confというファイルを作っておく必要がある

というのも、DNSリゾルバは自身の設定を/etc/resolv.confに読みに行くが、このファイルは/tmp/bsdinstall_etc/resolv.confへのシンボリックリンクとなっており、しかも、/etc/bsdinstall_etcというディレクトリは存在しないからだ。

root@:~ # ls -l /etc/resolv.conf
lrwxr-xr-x  1 root  wheel  31 Jan 17 02:25 /etc/resolv.conf -> /tmp/bsdinstall_etc/resolv.conf
root@:~ # ls /tmp/bsdinstall_etc/resolv.conf
ls: /tmp/bsdinstall_etc/resolv.conf: No such file or directory
root@:~ # ls /tmp
.ICE-unix       .X11-unix       .XIM-unix       .font-unix       .snap
bsdinstall_log
root@:~ # mkdir /tmp/bsdinstall_etc
root@ ~ # touch /tmp/bsdinstall_etc/resolv.conf

で、DHCPクライアント起動。

root@:~ # dhclient wlan0
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 192.168.1.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.29 -- renewal in 86400 seconds.

なお、/tmp/bsdinstall_etc/resolv.conf作成前に "dhclient wlan0" してしまった場合は、一度dhclientkillする必要がある。

root@:~ # rm /var/db/dhclient_wlan0
root@:~ # pkill dhclient
root@:~ # dhclient wlan0
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 192.168.1.1
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.29 -- renewal in 86400 seconds.
root@:~ # resolvconf -u

これでネットに繋がるようになる。少なくともpingは通る。

pkgが通らない……

矢鱈「pingは通る」って言ってるが、実はpingが通ることしか確認できてない。

w3clynxも、curlwgetも用意されてない様で、じゃあそれらを入れようとpkg動かそうとしてみてもコケる。

root@:~ # pkg
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/freebsd:10:x86:32/latest, please wait...
Verifying signature with trusted certificate pkg.freebsd.org.201102301... done
pkg: fail to extract pkg-static

うーん? よく分からん。一先ずは、ここまで。

参考文献

posted by 天井冴太 at 12:22| Comment(1) | TrackBack(0) | Networking | 更新情報をチェックする
この記事へのコメント
Стажировка со стипендией 14.400 рублей https://bit.ly/3k71xT0
Помощь в оформлении мед. книжки
https://clck.ru/QH2hB
Posted by Justinfed at 2020年08月24日 03:44
コメントを書く
コチラをクリックしてください

この記事へのトラックバック