Comment on page
7.3.有线网络
在加载正确的驱动程序后,需要配置网络适配器。FreeBSD 使用驱动程序名称后跟单元号来命名网络接口适配器。单元号表示在引导时或稍后被发现的适配器的顺序。
要显示网络接口配置,请输入以下命令:
% 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
:以太网接口。
该示例显示
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
状态是正常的。
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
nd
6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
本节提供在 FreeBSD 系统上配置静态 IPv4 地址的指南。
注意
可以执行以下命令设置 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
然后 执行以下命令重新启动
netif
和 routing
:# service netif restart && service routing restart
% 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
如果网络有 DHCP 服务器,配置网络接口使用 DHCP 非常简单。FreeBSD 使用 dhclient(8) 作为 DHCP 客户端。dhclient(8) 将自动提供 IP、子网掩码和默认路由器。
要使接口使用 DHCP,请执行以下命令:
# sysrc ifconfig_em0="DHCP"
# 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 进行地址分配是否正常工作。
技巧# sysrc background_dhclient="YES"
然后重新启动
netif
执行以下命令:# service netif restart
% 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
IPv6 是众所周知的 IP 协议的新版本,也被称为 IPv4。
IPv6 相对于 IPv4 提供了几 个优势以及许多新功能:
- 其 128 位地址空间允许有 340,282,366,920,938,463,463,374,607,431,768,211,456 个地址。这解决了 IPv4 地址短缺和最终的 IPv4 地址耗尽问题。
- 路由器只在其路由表中存储网络聚合地址,从而将路由表的平均空 间减小到 8192 条目。这解决了与 IPv4 相关的可伸缩性问题,该问题要求在 Internet 路由器之间交换分配的每个 IPv4 地址块,导致其路由表变得太大以允许有效的路由。
- 强制使用多播地址。
- 内置 IPsec(IP 安全)。
- 简化的报头结构。
- 对移动 IP 的支持。
- IPv6 到 IPv4 的过渡机制。
本节将重点介绍如何配置和运行 IPv6。
有三种不同类型的 IPv6 地址:
Unicast,单播
发送到单播地址的数据包将到达属于该地址的接口。
Anycast,任播
这些地址在语法上与单播地址无法区分,但它们定位到一组接口。发送到任播地址的数据包将到达最近的路由器接口。任播地址仅由路由器使用。
Multicast,多播
这些地址标识一组接口。发送到多播地址的数据包将到达属于多播组的所有接口。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 位是 IPv4 地址,用于不支持 IPv6 的主机。 |
fe80::/10 | 10 位 | 链路本地 | 相当于 IPv4 中的 169.254.0.0/16。 |
fc00::/7 | 7 位 | 唯一本地 | 唯一本地地址用于本地通信,仅在一组合作站点内可路由。 |
ff00:: | 8 位 | 多播 | |
2000::-3fff:: | 3 位 | 全球单播 | 所有全球单播地址都分配自此池。前 3 位是 001 。 |
要将 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"
要使接口与 DHCP 协同工作,请执行以下命令:
# sysrc ifconfig_em0_ipv6="inet6 accept_rtadv"
# sysrc rtsold_enable="YES"
# sysrc rtadvd_enable="YES"
# 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#
更改为正确的值。在服务器上启用 IPv6 后,可能需要启用 IPv4 映射的 IPv6 地址通信。此兼容选项允许将 IPv4 地址表示为 IPv6 地址。允许 IPv6 应用程序与 IPv4 通信以及反之可能会带来安全问题。
在大多数情况下,可能不需要此选项,而且此选项仅供兼容使用。此选项将允许仅支持 IPv6 的应用程序在双栈环境中与 IPv4 一起工作。这对于可能不支持 IPv6-only 环境的第三方应用程序非常有用。
要启用此功能,请执行以下命令:
# sysrc ipv6_ipv4mapping="YES"
最近更新 9d ago