发生了什么
几天前,我通过 USB 将 FreeBSD 8 安装到我的 Macbook(Core Duo,13 英寸)。我要做的第一件事就是找回我的 GUI。我是 FreeBSD 新手,这是我第一次离开 Mac 或 Windows,所以我需要学习一些东西。我尝试使用 ports 全新安装 xorg,但它返回了许多“无地址记录”错误。我意识到我还没有配置网络设置,然后好玩的事情就开始了。
我运行了 ifconfig 并发现了 5 个设备:msk0、ath0、fwe0、fwip0、lo0。*
ath0 被识别为媒体:IEEE 802.11 无线以太网自动选择,所以很清楚我需要哪一个。
据我所知,这里涉及 3 个文件和两个流程:
- /boot/loader.conf
- /etc/wpa_supplicant.conf
/etc/rc.conf
/etc/rc.d/netif
- wpa_supplicant(也是前者的一部分)
我确信这是一个很大的简化,所以如果我错了,请纠正我。
我尝试过
我使用一些基本设置配置了 /boot/loader.conf,我非常确定这个文件没有问题。其他两个则比较令人费解。我尝试在 wpa_supplicant.conf 中创建一个网络包。我找到了路由器的 ssid,但安全性并不那么容易。路由器的安全配置设置为“自动”,没有给出任何解释。还有其他选项,但选择了“自动”。另一台笔记本电脑使用 WEP 进行连接(它是 Vista,所以我不知道如何获取更多信息),但我从未对其进行过配置。路由器底部有一个标有“无线密钥”的字符串,我输入该字符串将其设置为网络上的新机器(Windows 和 Mac,因此简化了)。我从未选择过安全类型,只是通过安装 FreeBSD 才了解它们。
因此也许 WEP 就是“自动”的意思,但我找不到任何其他证据。
wpa_supplicant.conf 似乎从未正确配置过。我总是收到与此相关的错误,并且 WPA_supplicant 无法工作。当我启用 -d -d 时,它给了我“无法在驱动程序中禁用/启用 WPA”错误,并且还有一次错误。不过,这是在我尝试 rc.conf 中的一些可疑配置时发生的。通常它什么也不做,只是劫持 shell 并每 10 秒打印一次“CTRL-SCAN-EVENT-RESULT”。
我学会了如何将 ath0 设备克隆到 wlandev 接口 (wlan0)。ath0 与其关联,并且它们的连接似乎很顺利。但 wlan0 与网络的连接是个问题。我无法使用 rc.conf 创建它,我做错了什么,每次解析时都会出现 ifconfig: create: bad value 错误。我改为通过 shell 来创建它。
现在怎么办?
我今天用 wlan0 扫描了一下: ifconfig wlan0 list scan 它显示了我的路由器,甚至邻居的路由器。终于得到一些反馈,我松了一口气。
因此,wlan0 处于 UP 状态并检测到路由器,但状态始终为:无运营商。它无法与它关联,我不知道为什么。运行 /etc/rc.d/netif start 返回的结果与 ifconfig 几乎相同。它显示 lo0 和 wlan0,有时显示 ath0。我仍然不确定 lo0 在做什么。
那么,我该如何与它关联?我们可以根据另一台笔记本电脑的设置方式假设它是 WEP 安全性。我将在这里提供所有相关输出。
启动后,rc.conf 为空白,ifconfig 返回以下内容:
msk0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=11a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4>
ether 00:17:f2:29:89:3b
media: Ethernet autoselect
ath0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
ether 00:16:cb:bb:fe:65
media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
status: no carrier
fwe0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 02:17:f2:60:ad:7e
ch 1 dma -1
fwip0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
lladdr 0.17.f2.ff.fe.60.ad.7e.a.2.ff.fe.0.0.0.0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
我运行:ifconfig wlan0 create wlandev ath0 它返回:
wlan0: bpf attached
wlan0: bpf attached
wlan0: Ethernet address: xx:xx:xx:xx:xx:xx
Ifconfig 现在返回:
msk0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=11a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4>
ether 00:17:f2:29:89:3b
media: Ethernet autoselect
ath0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
ether 00:16:cb:bb:fe:65
media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
status: no carrier
fwe0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 02:17:f2:60:ad:7e
ch 1 dma -1
fwip0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
lladdr 0.17.f2.ff.fe.60.ad.7e.a.2.ff.fe.0.0.0.0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
wlan0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:16:cb:bb:fe:65
media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
status: no carrier
ssid "" channel 1 (2412 Mhz 11b)
regdomain 106 indoor ecm authmode OPEN privacy OFF txpower 20 bmiss 7
scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7
roam:rate 1 wme burst bintval 0
我跑:
ifconfig wlan0 up
ifconfig wlan0 scan
它找到我的路由器并显示其详细信息。我现在可以使用以下命令向其提供我的路由器详细信息: ifconfig wlan0 key value key value ... 当我运行 ifconfig 时,它们显示在 wlan0 中,但它仍然没有关联。
- 我应该向它提供哪些详细信息,到底需要什么?
- 如果有的话,我应该在 /etc/wpa_supplicant.conf 中添加什么(如果需要该 psk,那么最有可能是我上面提到的字符串)?
- 如果我在 wpa_supplicant.conf 中定义了 ssid,我还应该将其提供给 wlan0 吗?
- 那么我应该使用什么过程来关联它? 5.我应该如何将这些内容添加到 rc.conf 以便它在启动时自动执行这些操作?
在此先非常感谢您所给予的任何帮助,我花了几个小时研究 shell,并从中学到了很多东西(经过所有这些编辑,我终于掌握了 vi 的使用方法)。但越早解决这个问题越好。
*PS 我当时和现在都在想,这额外的三个设备是从哪里来的(我期望找到的都是无线和有线设备)。lo0 每次启动时都会启动,而 /etc/rc.d/netif,我不知道它是什么,也无法在 dmesg 中找到它。
资源: /etc/loader.conf:代码:
if_ath_load="YES"
wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"
/etc/wpa_supplicant.conf(我清空了其中所有不必要的内容,因为我只是导致了错误)
network={
ssid="BTVOYAGER2110-1C"
}
/etc/rc.conf 没有网络设置,由于出现错误,我将其注释掉。我曾尝试克隆 ath0 并向其提供信息,但我通过 shell 进行了此操作。
我将 dmesg 的输出作为附件,以防万一有用。我会包含启动文本(登录前显示),但我不知道如何将其捕获到文本文件中。如果需要它并且有人告诉我怎么做,我会的(实际上,即使不需要它,我如何查看它来阅读?)。
答案1
这是我使用 FreeBSD 8.2 和 ath 卡(例如沃尔玛的 Belkin)时的工作方式。我的卡被识别为 ath0。请注意,我的网络现在没有安全性。我建议先让它在没有安全性的情况下工作,然后修改配置以增加安全性。
忽略有关修改 /boot/loader.conf 的说明。Ath 驱动程序已内置到内核中,因此您无需为其加载模块。我的 loader.conf 完全是空的。
我必须创建文件 /etc/wpa_supplicant.conf。内容如下:
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheel network={ ssid="mynetworkname" key_mgmt=NONE priority=1 }
修改 rc.conf 并准确添加以下几行:
wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP"
(请注意,在上面的第二行中我最初忘记输入“WPA”,因此它不起作用)重新启动您的机器。这对我有用。
要扫描可用网络,请使用:
ifconfig wlan0 list scan
(注意:尽管我正在格式化我的代码,但它并没有显示在格式化的网站上)
答案2
我的 MacBook Pro 也遇到了同样的问题,几天后我找到了一个对我有用的解决方案:是 WPA2 无法正常工作。由于我的路由器支持 WPA 和 WPA2(可能是您的路由器安全设置为“自动”,但我不知道您的路由器),我只需在 wpa_supplicant.conf 中添加“proto=WPA”即可更改为 WPA:
network={
ssid="myNetwork"
psk="mySecret"
proto=WPA
}
是的,我知道 WPA 不如 WPA2 安全,但目前我并不关心!