7.4.无线网络 ============ 大多数无线网络都基于 `IEEE® 802.11 标准 `__\ 。 FreeBSD 支持使用 `802.11a `__\ 、\ `802.11b `__\ 、\ `802.11g `__ 和 `802.11n `__ 的网络。 **注意** FreeBSD 上的 `802.11ac `__ 支持目前正在开发中。 一个基本的无线网络由多个无线通信站组成,这些无线通信站使用 2.4GHz 或 5GHz 频段的无线电进行广播,但具体频段因地而异,而且也在不断变化,以实现 2.3GHz 和 4.9GHz 频段的通信。 配置无线网络有三个基本步骤: 1. 扫描并选择接入点 2. 验证工作站 3. 配置 IP 地址或使用 DHCP 下文将讨论每个步骤。 7.4.1.连接到无线网络的快速入门 ------------------------------ 将 FreeBSD 连接到现有的无线网络是一种非常常见的情况。 本程序显示了所需的步骤: - 第一步是从网络管理员处获取无线网络的 SSID(服务集标识符)和 PSK(预共享密钥)。 - 第二步是在 **/etc/wpa_supplicant.conf** 中为该网络添加一个条目。如果该文件不存在,请创建它: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session network={ ssid="myssid" psk="mypsk" } - 第三步是添加网络条目,以便在启动时配置网络: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # sysrc wlans_iwn0="wlan0" # sysrc ifconfig_wlan0="WPA DHCP" - 最后一步是执行以下命令重启 ``netif`` 服务: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # service netif restart 7.4.2.基本无线配置 ------------------ 第一步是将无线网卡配置到一个接口上。要了解系统中有哪些无线网卡,请查看\ `识别网络适配器 `__\ 章节。 .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # ifconfig wlan0 create wlandevice iwm0 要使更改在重启后仍然有效,请执行以下命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # sysrc wlans_iwn0="wlan0" .. **注意** 由于世界各地的监管情况不尽相同,因此有必要正确设置适用于您所在地区的域,以便获得有关可使用哪些频道的正确信息。 可用的区域定义可在 **/etc/regdomain.xml** 中找到。要在运行时设置数据,请使用 ``ifconfig``\ : .. code:: shell-session # ifconfig wlan0 regdomain etsi2 country AT 要持久保存设置,请将其添加到 **/etc/rc.conf** 中: .. code:: shell-session # sysrc create_args_wlan0="country AT regdomain etsi2" 7.4.3.扫描无线网络 ------------------ 可用 `ifconfig(8) `__ 扫描可用的无线网络。 要列出无线网络,请执行以下命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # ifconfig wlan0 up list scan 输出结果应类似于下面的内容: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session SSID/MESH ID BSSID CHAN RATE S:N INT CAPS FreeBSD e8:d1:1b:1b:58:ae 1 54M -47:-96 100 EP RSN BSSLOAD HTCAP WPS WME NetBSD d4:b9:2f:35:fe:08 1 54M -80:-96 100 EP RSN BSSLOAD HTCAP WPS WME OpenBSD fc:40:09:c6:31:bd 36 54M -94:-96 100 EPS VHTPWRENV APCHANREP RSN WPS BSSLOAD HTCAP VHTCAP VHTOPMODE WME GNU-Linux dc:f8:b9:a0:a8:e0 44 54M -95:-96 100 EP WPA RSN WPS HTCAP VHTCAP VHTOPMODE WME VHTPWRENV Windows 44:48:b9:b3:c3:ff 44 54M -84:-96 100 EP BSSLOAD VHTPWRENV HTCAP WME RSN VHTCAP VHTOPMODE WPS MacOS 46:48:b9:b3:c3:ff 44 54M -84:-96 100 EP BSSLOAD VHTPWRENV HTCAP WME RSN VHTCAP VHTOPMODE WPS 1. SSID/MESH ID 标识网络名称。 2. BSSID 标识接入点的 MAC 地址。 3. CAPS 字段标识每个网络的类型以及在其中运行的台站的功能(更多详情请参见 `ifconfig(8) `__ 中的 ``list scan`` 的定义)。 7.4.4.连接和验证无线网络 ------------------------ 从扫描的网络列表中选择无线网络后,就需要进行连接和验证。在绝大多数无线网络中,身份验证是通过路由器配置的密码完成的。其他方案则需要在数据传输前完成加密握手,要么使用预共享密钥或秘密,要么使用涉及 RADIUS 等后端服务的更复杂方案。 7.4.4.1.使用 WPA2/WPA/Personal 验证 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 无线网络的身份验证过程由 `wpa_supplicant(8) `__ 管理。 `wpa_supplicant(8) `__ 配置将在 **/etc/wpa_supplicant.conf** 文件中进行。更多信息,请参阅 `wpa_supplicant.conf(5) `__\ 。 扫描无线网络、选择网络并设置密码 (PSK) 后,该信息将被添加到 **/etc/wpa_supplicant.conf** 文件中,如下例所示: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session network={ scan_ssid=1 ssid="FreeBSD" psk="12345678" } 下一步是在 **/etc/rc.conf** 文件中配置无线连接。 要使用静态地址,必须执行以下命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # sysrc ifconfig_wlan0="inet 192.168.1.20 netmask 255.255.255.0" 要使用动态地址,必须执行以下命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # ifconfig_wlan0="WPA DHCP" 然后执行以下命令重启网络: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # service netif restart .. **注意** 有关如何执行更高级身份验证方法的更多信息,请访问无线高级身份验证。 7.4.4.2.使用开放网络进行身份验证 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **提示** 重要的是,用户在没有任何认证的情况下连接开放网络时要非常小心。 完成无线网络扫描并选择无线网络的 SSID 后,执行以下命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # ifconfig wlan0 ssid SSID 然后执行 `dhclient(8) `__ 获取配置的地址: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # dhclient wlan0 7.4.5.同时使用有线和无线连接 ---------------------------- 有线连接具有更好的性能和可靠性,而无线连接则具有灵活性和移动性。笔记本电脑用户通常希望在这两种连接之间无缝漫游。 在 FreeBSD 上,可以将两个甚至更多的网络接口以 “故障切换”的方式组合在一起。这种配置使用一组网络接口中最优先的可用连接,当链路状态发生变化时,操作系统会自动切换。 `链路聚合和故障切换 `__\ 中介绍了链路聚合和故障切换,\ `以太网和无线接口之间的故障切换模式 `__\ 中提供了同时使用有线和无线连接的示例。