第7章 网络

7.1 概要

本章深入探讨了网络配置和性能主题,展示了 FreeBSD 操作系统强大的网络功能。无论是在有线网络还是无线网络中工作,本章都提供了在 FreeBSD 中配置和优化网络连接的全面指南。

在深入探讨细节之前,读者最好对网络概念有所了解,例如协议、网络接口和寻址。

本章涵盖以下内容:

  • 配置 FreeBSD 中的有线网络,包括网络接口设置、地址分配和自定义选项。

  • 掌握在 FreeBSD 中配置无线网络的技能,涵盖无线网络接口设置、安全协议和故障排除技术。

  • FreeBSD 的网络功能及其在网络性能方面的卓越声誉。

  • 了解 FreeBSD 支持的各种网络服务和协议,并提供 DNS、DHCP 等的配置说明。

有关如何在高级网络中进行高级网络配置的更多信息。

7.2. 设置网络

设置有线或无线连接是 FreeBSD 用户的常见任务。本节将介绍如何识别有线和无线网络适配器以及如何配置它们。

在开始配置之前,有必要了解以下网络数据

  • 如果网络具有 DHCP

  • 如果网络没有 DHCP,则要使用的静态 IP 地址

  • 网络掩码

  • 默认网关的 IP 地址

网络连接可能在安装时由bsdinstall(8)配置。

7.2.1. 识别网络适配器

FreeBSD 支持各种各样的网络适配器,包括有线和无线网络。查看所用FreeBSD 版本的硬件兼容性列表,以查看网络适配器是否受支持。

要获取系统使用的网络适配器,请执行以下命令

% pciconf -lv | grep -A1 -B3 network

输出应类似于以下内容

em0@pci0:0:25:0:        class=0x020000 rev=0x03 hdr=0x00 vendor=0x8086 device=0x10f5 subvendor=0x17aa subdevice=0x20ee
    vendor     = 'Intel Corporation' (1)
    device     = '82567LM Gigabit Network Connection' (2)
    class      = network
    subclass   = ethernet
--
iwn0@pci0:3:0:0:        class=0x028000 rev=0x00 hdr=0x00 vendor=0x8086 device=0x4237 subvendor=0x8086 subdevice=0x1211
    vendor     = 'Intel Corporation' (1)
    device     = 'PRO/Wireless 5100 AGN [Shiloh] Network Connection' (2)
    class      = networ

“@”符号之前的文本是控制设备的驱动程序名称。在本例中,它们是em(4)iwn(4)

1显示供应商名称
2显示设备名称

只有在 FreeBSD 未正确检测到网络接口卡模块时,才需要加载它。

例如,要加载alc(4) 模块,请执行以下命令

# kldload if_alc

或者,要在启动时将驱动程序加载为模块,请将以下行放在/boot/loader.conf

if_alc_load="YES"

7.3. 有线网络

加载正确的驱动程序后,需要配置网络适配器。FreeBSD 使用驱动程序名称后跟一个单元编号来命名网络接口适配器。单元编号表示适配器在启动时检测到的顺序,或稍后发现的顺序。

例如,em0 是系统上使用em(4) 驱动程序的第一个网络接口卡 (NIC)。

要显示网络接口配置,请输入以下命令

% ifconfig

输出应类似于以下内容

em0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=481249b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,LRO,WOL_MAGIC,VLAN_HWFILTER,NOMAP>
        ether 00:1f:16:0f:27:5a
        inet6 fe80::21f:16ff:fe0f:275a%em0 prefixlen 64 scopeid 0x1
        inet 192.168.1.19 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet 127.0.0.1 netmask 0xff000000
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

在此示例中,显示了以下设备

  • em0:以太网接口。

  • lo0:环回接口是一种软件环回机制,可用于性能分析、软件测试和/或本地通信。更多信息请参见lo(4)

此示例显示 em0 正在运行。

关键指标是

  1. UP 表示接口已配置并准备就绪。

  2. 该接口具有 IPv4 Internet (inet) 地址 192.168.1.19

  3. 该接口具有 IPv6 Internet (inet6) 地址 fe80::21f:16ff:fe0f:275a%em0

  4. 它具有有效的子网掩码 (netmask),其中 0xffffff00 等于 255.255.255.0

  5. 它具有有效的广播地址 192.168.1.255

  6. 接口的 MAC 地址 (ether) 为 00:1f:16:0f:27:5a

  7. 物理介质选择处于自动选择模式 (media: Ethernet autoselect (1000baseT <full-duplex>))。

  8. 链路状态 (status) 为 active,表示检测到载波信号。对于 em0,当未将以太网电缆插入接口时,status: no carrier 状态是正常的。

如果ifconfig(8) 输出显示的内容类似于下一个输出,则表明接口尚未配置

em0: flags=8822<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=481249b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,LRO,WOL_MAGIC,VLAN_HWFILTER,NOMAP>
        ether 00:1f:16:0f:27:5a
        media: Ethernet autoselect
        status: no carrier
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

7.3.1. 配置静态 IPv4 地址

本节提供了有关在 FreeBSD 系统上配置静态 IPv4 地址的指南。

可以使用ifconfig(8) 从命令行执行网络接口卡配置,但除非将配置也添加到/etc/rc.conf,否则在重新引导后不会持久保留。

如果网络在安装期间由bsdinstall(8)配置,则网络接口卡 (NIC) 的某些条目可能已存在。在执行sysrc(8)之前,请仔细检查/etc/rc.conf

可以通过执行以下命令设置 IP 地址

# ifconfig em0 inet 192.168.1.150/24

要使更改在重新引导后保持持久,请执行以下命令

# sysrc ifconfig_em0="inet 192.168.1.150 netmask 255.255.255.0"

添加默认路由器,执行以下命令

# sysrc defaultrouter="192.168.1.1"

将 DNS 记录添加到/etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

然后重新启动 netifrouting,执行以下命令

# service netif restart && service routing restart

可以使用ping(8)测试连接

% ping -c2 www.FreeBSD.org

输出应类似于以下内容

PING web.geo.FreeBSD.org (147.28.184.45): 56 data bytes
64 bytes from 147.28.184.45: icmp_seq=0 ttl=51 time=55.173 ms
64 bytes from 147.28.184.45: icmp_seq=1 ttl=51 time=53.093 ms

--- web.geo.FreeBSD.org ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 53.093/54.133/55.173/1.040 ms

7.3.2. 配置动态 IPv4 地址

如果网络具有 DHCP 服务器,则配置网络接口以使用 DHCP 非常容易。FreeBSD 使用dhclient(8) 作为 DHCP 客户端。dhclient(8) 将自动提供 IP、网络掩码和默认路由器。

要使接口与 DHCP 一起工作,请执行以下命令

# sysrc ifconfig_em0="DHCP"

可以通过运行以下命令手动使用dhclient(8)

# dhclient em0

输出应类似于以下内容

DHCPREQUEST on em0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
unknown dhcp option value 0x7d
bound to 192.168.1.19 -- renewal in 43200 seconds.

这样可以验证使用 DHCP 分配地址是否正常工作。

dhclient(8) 客户端可以在后台启动。这可能会导致依赖于正常网络的应用程序出现问题,但在许多情况下,它将提供更快的启动速度。

要在后台执行dhclient(8),请执行以下命令

# sysrc background_dhclient="YES"

然后重新启动 netif,执行以下命令

# service netif restart

可以使用ping(8)测试连接

% ping -c2 www.FreeBSD.org

输出应类似于以下内容

PING web.geo.FreeBSD.org (147.28.184.45): 56 data bytes
64 bytes from 147.28.184.45: icmp_seq=0 ttl=51 time=55.173 ms
64 bytes from 147.28.184.45: icmp_seq=1 ttl=51 time=53.093 ms

--- web.geo.FreeBSD.org ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 53.093/54.133/55.173/1.040 ms

7.3.3. IPv6

IPv6 是众所周知的 IP 协议的新版本,也称为 IPv4。

IPv6 在提供 IPv4 的所有优势的同时,还提供了许多新功能

  • 其 128 位地址空间允许使用 340,282,366,920,938,463,463,374,607,431,768,211,456 个地址。这解决了 IPv4 地址短缺和最终的 IPv4 地址耗尽问题。

  • 路由器仅在其路由表中存储网络聚合地址,从而将路由表的平均空间减少到 8192 个条目。这解决了与 IPv4 相关的可扩展性问题,IPv4 要求在互联网路由器之间交换每个分配的 IPv4 地址块,导致其路由表变得过大,无法实现高效路由。

  • 地址自动配置 (RFC2462)。

  • 强制性多播地址。

  • 内置 IPsec(IP 安全)。

  • 简化的报头结构。

  • 支持移动 IP。

  • IPv6 到 IPv4 的过渡机制。

FreeBSD 包含KAME 项目 的 IPv6 参考实现,并附带使用 IPv6 所需的一切。

本节重点介绍如何配置和运行 IPv6。

IPv6 地址有三种不同的类型

单播

发送到单播地址的数据包将到达属于该地址的接口。

任播

这些地址在语法上与单播地址没有区别,但它们是针对一组接口的。发送到任播地址的数据包将到达最近的路由器接口。任播地址仅由路由器使用。

多播

这些地址标识一组接口。发送到多播地址的数据包将到达属于该多播组的所有接口。IPv4 广播地址(通常为 xxx.xxx.xxx.255)在 IPv6 中由多播地址表示。

在读取 IPv6 地址时,规范形式表示为 x:x:x:x:x:x:x:x,其中每个 x 表示一个 16 位十六进制值。例如 FEBC:A574:382B:23C1:AA49:4592:4EFE:9982

通常,地址将具有长串的全零子字符串。可以使用 ::(双冒号)替换每个地址的一个子字符串。此外,每个十六进制值的前面最多可以省略三个 0。例如,fe80::1 对应于规范形式 fe80:0000:0000:0000:0000:0000:0000:0001

第三种形式是用众所周知的 IPv4 表示法编写最后 32 位。例如,2002::10.0.0.1 对应于十六进制规范表示 2002:0000:0000:0000:0000:0000:0a00:0001,这又等效于 2002::a00:1

要查看 FreeBSD 系统的 IPv6 地址,请执行以下命令

# ifconfig

输出应类似于以下内容

em0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=481249b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,LRO,WOL_MAGIC,VLAN_HWFILTER,NOMAP>
        ether 00:1f:16:0f:27:5a
        inet 192.168.1.150 netmask 0xffffff00 broadcast 192.168.1.255
        inet6 fe80::21f:16ff:fe0f:275a%em0 prefixlen 64 scopeid 0x1
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>

在此示例中,em0 接口使用 fe80::21f:16ff:fe0f:275a%em0,这是一个从 MAC 地址自动生成的自动配置的链接本地地址。

一些 IPv6 地址是保留的。可以在下表中查看保留地址列表

表 1. IPv6 保留地址示例
IPv6 地址前缀长度(位)描述注释

::

128 位

未指定

相当于 IPv4 中的 0.0.0.0

::1

128 位

环回地址

相当于 IPv4 中的 127.0.0.1

::00:xx:xx:xx:xx

96 位

嵌入式 IPv4

较低的 32 位是兼容的 IPv4 地址。

::ff:xx:xx:xx:xx

96 位

IPv4 映射的 IPv6 地址

较低的 32 位是不支持 IPv6 的主机的 IPv4 地址。

fe80::/10

10 位

链接本地

相当于 IPv4 中的 169.254.0.0/16。

fc00::/7

7 位

唯一本地

唯一本地地址旨在用于本地通信,并且仅在特定的一组协作站点内可路由。

ff00:

8 位

多播

2000::-3fff:

3 位

全局单播

所有全局单播地址都从此池分配。前 3 位为 001

有关 IPv6 地址结构的更多信息,请参阅RFC3513

7.3.4. 配置静态 IPv6 地址

要将 FreeBSD 系统配置为具有静态 IPv6 地址的 IPv6 客户端,需要设置 IPv6 地址。

执行以下命令以满足要求

# sysrc ifconfig_em0_ipv6="inet6 2001:db8:4672:6565:2026:5043:2d42:5344 prefixlen 64"

要分配默认路由器,请指定其地址,执行以下命令

# sysrc ipv6_defaultrouter="2001:db8:4672:6565::1"

7.3.5. 配置动态 IPv6 地址

如果网络具有 DHCP 服务器,则配置网络接口以使用 DHCP 非常容易。dhclient(8) 将自动提供 IP、网络掩码和默认路由器。

要使接口在没有 DHCP 的情况下工作,请执行以下命令

# sysrc ifconfig_em0_ipv6="inet6 accept_rtadv"
# sysrc rtsold_enable="YES"

7.3.6. 路由器通告和主机自动配置

本节演示如何在 IPv6 路由器上设置rtadvd(8) 以通告 IPv6 网络前缀和默认路由。

要启用rtadvd(8),请执行以下命令

# sysrc rtadvd_enable="YES"

指定进行 IPv6 路由器通告的接口非常重要。例如,要告诉 rtadvd(8) 使用 em0

# sysrc rtadvd_interfaces="em0"

接下来,创建配置文件 /etc/rtadvd.conf,如本例所示

em0:\
	:addrs#1:addr="2001:db8:1f11:246::":prefixlen#64:tc=ether:

em0 替换为要使用的接口,将 2001:db8:1f11:246:: 替换为分配的前缀。

对于专用的 /64 子网,无需更改其他内容。否则,将 prefixlen# 更改为正确的值。

7.3.7. IPv6 和 IPv4 地址映射

当服务器上启用 IPv6 时,可能需要启用 IPv4 映射的 IPv6 地址通信。此兼容性选项允许将 IPv4 地址表示为 IPv6 地址。允许 IPv6 应用程序与 IPv4 通信反之亦然可能存在安全问题。

在大多数情况下,此选项可能不需要,并且仅出于兼容性考虑而提供。此选项将允许仅 IPv6 应用程序在双栈环境中与 IPv4 协同工作。这对于可能不支持仅 IPv6 环境的第三方应用程序最有用。

要启用此功能,请执行以下命令

# sysrc ipv6_ipv4mapping="YES"

7.4. 无线网络

大多数无线网络基于 IEEE® 802.11 标准

FreeBSD 支持使用 802.11a802.11b802.11g802.11n 运行的网络。

802.11ac 在 FreeBSD 上的支持目前正在开发中。

基本的无线网络由多个站点组成,这些站点通过无线电进行通信,这些无线电在 2.4GHz 或 5GHz 频段广播,尽管这因地区而异,并且还在发生变化以支持在 2.3GHz 和 4.9GHz 范围内进行通信。

配置无线网络有三个基本步骤

  1. 扫描并选择接入点

  2. 对站点进行身份验证

  3. 配置 IP 地址或使用 DHCP。

以下各节将讨论每个步骤。

7.4.1. 连接到无线网络的快速入门

将 FreeBSD 连接到现有的无线网络是一种非常常见的情况。

此过程显示了所需的步骤

  • 第一步是从网络管理员处获取无线网络的 SSID(服务集标识符)和 PSK(预共享密钥)。

  • 第二步是为此网络添加一个条目到 /etc/wpa_supplicant.conf 中。如果文件不存在,请创建它

network={
 ssid="myssid" (1)
 psk="mypsk" (2)
}
1是无线网络的 SSID。将其替换为无线网络的名称。
2是无线网络的 PSK。将其替换为无线网络的密码。
  • 第三步是添加网络条目以在启动时配置网络

# sysrc wlans_iwn0="wlan0"
# sysrc ifconfig_wlan0="WPA DHCP"
  • 最后一步是重新启动 netif 服务,执行以下命令

# service netif restart

7.4.2. 基本无线配置

第一步是将无线网卡配置到接口。要了解系统中有哪些无线网卡,请查看 识别网络适配器 部分。

# ifconfig wlan0 create wlandev iwm0

要使更改在重新引导后保持持久,请执行以下命令

# sysrc wlans_iwm0="wlan0"

由于世界各地的监管情况不同,因此有必要正确设置适用于您所在位置的域,以便获得有关可以使用哪些信道的正确信息。

可在 /etc/regdomain.xml 中找到可用的区域定义。要设置运行时数据,请使用 ifconfig

# ifconfig wlan0 regdomain etsi2 country AT

要使设置持久化,请将其添加到 /etc/rc.conf

# sysrc create_args_wlan0="country AT regdomain etsi2"

7.4.3. 扫描无线网络

可以使用 ifconfig(8) 扫描可用的无线网络。

要列出无线网络,请执行以下命令

# ifconfig wlan0 up list scan

输出应类似于以下内容

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 文件中,如下例所示

network={
        scan_ssid=1 (1)
        ssid="FreeBSD" (2)
        psk="12345678" (3)
}
1SSID 扫描技术。仅当网络隐藏时才需要使用此选项。
2网络名称。
3无线网络的密码。

下一步是在 /etc/rc.conf 文件中配置无线连接。

要使用静态地址,需要执行以下命令

# sysrc ifconfig_wlan0="inet 192.168.1.20 netmask 255.255.255.0"

要使用动态地址,需要执行以下命令

# sysrc ifconfig_wlan0="WPA DHCP"

然后重新启动网络,执行以下命令

# service netif restart

有关如何执行更高级别的身份验证方法的更多信息,请参阅 无线高级身份验证

7.4.4.2. 使用开放网络进行身份验证

重要的是,用户在连接到没有任何身份验证的开放网络时要非常小心。

完成无线网络扫描并选择无线网络的 SSID 后,执行以下命令

# ifconfig wlan0 ssid SSID

然后执行 dhclient(8) 以获取配置的地址

# dhclient wlan0

7.4.5. 使用有线和无线连接

有线连接提供更好的性能和可靠性,而无线连接提供灵活性和移动性。笔记本电脑用户通常希望在这两种类型的连接之间无缝漫游。

在 FreeBSD 上,可以以“故障转移”方式将两个或更多网络接口组合在一起。这种类型的配置使用一组网络接口中最优选且可用的连接,并且当链路状态发生变化时,操作系统会自动切换。

链路聚合和故障转移在 链路聚合和故障转移 中进行了介绍,并在 以太网和无线接口之间的故障转移模式 中提供了一个使用有线和无线连接的示例。

7.5. 主机名

主机名表示主机在网络上的完全限定域名 (FQDN)。

如果未为主机设置主机名,FreeBSD 将分配值 Amnesiac

7.5.1. 检查当前主机名

hostname(1) 可用于检查当前主机名

$ hostname

输出应类似于以下内容

freebsdhostname.example.com

7.5.2. 更改主机名

要更改主机的主机名并在重新引导后使其持久化,请执行以下命令

# sysrc hostname="freebsdhostname.example.com"

7.6. DNS

DNS 可以理解为 电话簿,其中将 IP 标识为主机名,反之亦然。

有三个文件处理 FreeBSD 系统如何与 DNS 交互。这三个文件是 hosts(5)resolv.conf(5)nsswitch.conf(5)

除非 /etc/nsswitch.conf 文件中另有说明,否则 FreeBSD 将查看 /etc/hosts 文件中的地址,然后查看 /etc/resolv.conf 文件中的 DNS 信息。

nsswitch.conf(5) 文件指定 nsdispatch(名称服务切换调度程序)应如何操作。

默认情况下,/etc/nsswitch.conf 文件的 hosts 部分如下所示

hosts: files dns

例如,在使用 nscd(8) 服务的情况下。可以通过将行保留如下所示来更改首选项顺序

hosts: files cache dns

7.6.1. 本地地址

/etc/hosts 文件是一个简单的文本数据库,它提供主机名到 IP 地址的映射。可以将通过 LAN 连接的本地计算机的条目添加到此文件中,以实现简单的命名目的,而不是设置 DNS 服务器。此外,/etc/hosts 可用于提供 Internet 名称的本地记录,从而减少查询外部 DNS 服务器以获取常用名称的需要。

例如,在本地环境中拥有 www/gitlab-ce 的本地实例的情况下,可以将其作为如下添加到 /etc/hosts 文件中

192.168.1.150 git.example.com git

7.6.2. 配置名称服务器

FreeBSD 系统如何访问 Internet 域名系统 (DNS) 由 resolv.conf(5) 控制。

/etc/resolv.conf 的最常见条目是

nameserver

解析器应查询的名称服务器的 IP 地址。这些服务器按照列出的顺序进行查询,最多查询三个。

search

主机名查找的搜索列表。这通常由本地主机名的域名确定。

domain

本地域名。

一个典型的 /etc/resolv.conf 文件如下所示

search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30

只能使用 searchdomain 选项中的一个。

当使用 DHCP 时,dhclient(8) 通常会使用从 DHCP 服务器接收到的信息重写 /etc/resolv.conf 文件。

如果正在进行配置的机器 **不是** DNS 服务器,则可以使用 local-unbound(8) 来提高 DNS 查询性能。

要在启动时启用它,请执行以下命令

# sysrc local_unbound_enable="YES"

要启动 local-unbound(8) 服务,请执行以下命令

# service local_unbound start

7.7. 故障排除

在对硬件和软件配置进行故障排除时,请先检查简单的事项。

  • 网络电缆是否已插入?

  • 网络服务是否已正确配置?

  • 防火墙是否已正确配置?

  • FreeBSD 是否支持网卡?

  • 路由器是否正常工作?

在发送错误报告之前,请务必检查 FreeBSD 发布页面 中的硬件说明,将 FreeBSD 版本更新到最新的稳定版本,检查邮件列表存档并搜索互联网。

7.7.1. 有线网络故障排除

如果网卡工作正常,但性能不佳,请阅读 tuning(7)。此外,请检查网络配置,因为不正确的网络设置会导致连接速度缓慢。

如果系统无法将数据包路由到目标主机,则会出现 No route to host 消息。如果未指定默认路由或电缆已拔出,则可能发生这种情况。检查 netstat -rn 的输出,并确保存在到主机的有效路由。如果不存在,请阅读 网关和路由

ping: sendto: Permission denied 错误消息通常是由防火墙配置错误引起的。如果在 FreeBSD 上启用了防火墙但未定义任何规则,则默认策略是拒绝所有流量,甚至包括 ping(8)。有关更多信息,请参阅 防火墙

7.7.2. 无线网络故障排除

本节介绍了一些帮助解决常见无线网络问题的步骤。

  • 如果扫描时未列出访问点,请检查配置是否已将无线设备限制在有限的信道集中。

  • 如果设备无法与访问点关联,请验证配置是否与访问点上的设置匹配。这包括身份验证方案和任何安全协议。尽可能简化配置。如果使用 WPA2 或 WPA 等安全协议,请将访问点配置为开放身份验证且无安全设置,以查看是否可以通过流量。

  • 一旦系统可以与访问点关联,请使用 ping(8) 等工具诊断网络配置。

  • 还有许多更低级别的调试工具。可以使用 wlandebug(8) 在 802.11 协议支持层中启用调试消息。


上次修改时间:2024 年 9 月 20 日,作者 Fernando Apesteguía