家の環境だとネットに繋がらない
家の環境だと 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 CD はKNOPPIX、Ubuntuと、割と様々なデバイスに対して良きに計らってくれるタイプの物しか使った事が無かったのが仇となったか。散々調べまわる羽目になった。
結論から書くと
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 とやらを生成する。コマンドライン引数はアクセスポイントのSSIDとPINコード。後で使うので、ファイルにリダイレクトしておく(当たり前の話だが、此処で指定しているSSIDとPINコードは仮の物だ)。
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
" してしまった場合は、一度dhclient
をkill
する必要がある。
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
が通ることしか確認できてない。
w3c
もlynx
も、curl
もwget
も用意されてない様で、じゃあそれらを入れようと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
うーん? よく分からん。一先ずは、ここまで。
参考文献
- FreeBSD on EeePC 環境で無線 LAN が使えるようになった - 電気ウナギ的○○
- 30.3. Wireless Networking
- FreeBSD で WPA2-PSK を設定: uyota 匠の一手
- FreeBSD でDHCP Client あれこれ
Помощь в оформлении мед. книжки
https://clck.ru/QH2hB