FreeBSD 配置有限网卡
有线网卡相对于无线网卡来说,一般连接更稳定,网速也更快,在 FreeBSD 中配置有限网卡可以使用如下几种形式:
- 配置静态 IPv4 地址
- 配置动态 IPv4 地址
- 配置静态 IPv6 地址
- 配置动态 IPv6 地址
配置静态 IPv4 地址
如果你的网络环境中分配了一个静态 IP,而不是使用 DHCP 服务器动态分配 IP 地址,就需要使用该种方式配置静态 IP 地址方式。在公司中常使用该配置方式。
在配置静态 IP 地址时需要手动指定 IP、子网掩码和网关。
临时配置 IP
在系统中临时指定 IP 地址,重启系统后就会失效。
临时指定 IP 地址需要使用 ifconfig 命令,使用如下形式配置:
ifconfig em0 inet 192.168.1.150/24
命令解释说明: - em0:网卡名称 - inet:指定使用 IPv4 地址形式 - 192.168.1.150/24:IP 地址+子网掩码,/24 表示掩码占 24 位,等价于 255.255.255.0
开机自启配置
在启动文件 /etc/rc.conf 中添加配置,可以实现开机时自动完成 IP 配置。
1)在/etc/rc.conf 文件中添加配置,可以使用 sysrc 命令:
sudo sysrc ifconfig_em0="inet 192.168.1.150 netmask 255.255.255.0"
命令解释说明: - sysrc:FreeBSD 专用命令,用于修改启动配置文件 - ifconfig_em0:指定为 em0 网卡进行配置,名称格式为 ifconfig_网卡名 - inet 192.168.1.150:使用 inet 指定 IP 地址 - netmask 255.255.255.0:使用 netmask 指定子网掩码
2)配置默认网关
sudo sysrc defaultrouter="192.168.1.1"
命令解释说明: - defaultrouter:指定系统的默认网关地址。
3)配置 DNS 服务器
编辑 /etc/resolv.conf 文件:
sudo vi /etc/resolv.conf
在文件中添加如下的 DNS 地址:
nameserver 211.137.191.26
命令解释说明: - nameserver:用于指定 DNS 服务器 IP,如果存在多个,优先使用第一个 - /etc/resolv.conf:DNS 解析配置文件
4)重启网络服务使配置生效
service netif restart && service routing restart
service netif restart:重启网络接口服务service routing restart:重启路由服务
测试网络连通性
使用 ping 命令测试网络的连通情况:
ping -c10 www.freebsd.org
命令解释说明:
-c210:发送 10 个包后停止命令运行
返回结果:如果没有丢失包,则表示网络连接正常,也可以发送更多的包来查看网络连接的情况。
配置动态 IPv4 地址
如果你的网络环境中配置了 DHCP 服务器,那么就可以使用 DHCP 服务自动配置 IP 相关信息。如在家中安装了无线路由,家庭使用的无线路由都包含了 DHCP 服务器,可以动态配置 IPv4 地址。
配置使用 DHCP 服务
使用如下的命令配置使用 DHCP 服务,在 /etc/rc.conf 文件中添加相应的配置:
sudo sysrc ifconfig_em0="DHCP"
解释说明:指定 em0 网卡通过 DHCP 获取 IP 地址。
触发 DHCP 分配
在配置使用了 DHCP 服务后,使用如下的命令触发使用 DHCP 服务为系统分配地址:
sudo dhclient em0
如果配置成功会输出类似如下的信息:
DHCPREQUEST on em0 to 255.255.255.255 port 67 # 发送 DHCP 请求
DHCPACK from 192.168.1.1 # 收到路由器的 DHCP 响应
bound to 192.168.1.19 -- renewal in 43200 seconds. # 分配到 IP,租期 12 小时
如果已经完成配置,会输出类似如下的信息:
dhclient already running, pid: 817.
exiting.
配置后台运行 DHCP 客户端
默认情况下 dhclient 在前台运行,这可能会导致依赖网络的程序会产生启动延迟。
使用如下命令可配置 dhclient 在后台运行:
sudo sysrc background_dhclient="YES"
IPv6 说明
FreeBSD 已经完全支持 IPv6 地址形式,IPv6 地址为 128 位,分为 单播地址、任播地址、组播地址三种类型,支持自动配置(SLAAC)和静态配置。
IPv6 的优势
当对于 IPv4 来说,IPv6 存在多方面的优势:
- 超大的地址空间,就是在新兴的物联网中的每一个设备一个 IP 也使用不完,解决 IPv4 不够用的问题
- 支持无状态地址自动配置(SLAAC)
- 支持加密进行通信,简化了头部结构,能够提高转发效率
IPv6 地址格式
IPv6 的地址格式形式如下:
- 规范格式:
x:x:x:x:x:x:x:x,共有 8 组数字,每组数字之间使用:分隔,每组的x为 4 位十六进制数,即 16 位二进制,如FEBC:A574:382B:23C1:AA49:4592:4EFE:9982 - 简化格式:用
::代替连续的 0 段,如fe80::1等价于fe80:0000:0000:0000:0000:0000:0000:0001
配置静态 IPv6 地址
1)使用如下形式配置静态 IPv6 地址:
sudo sysrc ifconfig_em0_ipv6="inet6 2001:db8:4672:6565:2026:5043:2d42:5344 prefixlen 64"
命令解释说明:
ifconfig_em0_ipv6:指定配置的网卡为em0,使用 IPv6 地址形式inet6:指定的地址内容为 IPv6 地址形式2001:db8:4672:6565:2026:5043:2d42:5344:配置的静态 IPv6 地址prefixlen 64:使用prefixlen指定子网前缀的长度,类似 IPv4 中的子网掩码
2)使用如下的命令配置 IPv6 的默认网关
sudo sysrc ipv6_defaultrouter="2001:db8:4672:6565::1"
3)配置 IPv6 任播地址
任播地址的作用是向最近的节点发送数据,要配置任播地址需要添加 _aliasN 后缀。
使用如下命令配置 IPv6 地址形式的任播地址:
sudo sysrc ifconfig_em0_alias0="inet6 2001:db8:4672:6565::a anycast"
命令解释说明: - anycast:指定该 IPv6 地址为任播地址
配置动态 IPv6 地址
无状态地址自动配置(SLAAC)是指:
网络中的路由器会周期性的广播一条 RA 消息,其中包含一个 64 位的网络前缀,如:2001:db8:abcd:1234::/64,设备收到这个网络前缀后,会根据 MAC 地址通过特定算法(EUI-64)生成成一个 64 位的接口标识符。把网络前缀和生成的接口标识符组合起来,形成一个 IPv6 地址。
如: 网络前缀 2001:db8:abcd:1234::/64,与接口标识符 ::1a2b:3c4d:5e6f 形成一个完整的地址: 2001:db8:abcd:1234:1a2b:3c4d:5e6f。
使用 SLAAC 配置 IPv6 地址
1)使用如下的命令,启用 SLAAC 自动配置 IPv6 地址:
sudo sysrc ifconfig_em0_ipv6="inet6 accept_rtadv"
命令解释说明:
accept_rtadv:允许网卡接收路由器广播的通告信息
2)启用接收路由器广播的通告的守护进程:
sudo sysrc rtsold_enable="YES"
特殊说明
如果你的系统中启用了 IPv6 转发,即包含该配置 ipv6_gateway_enable=YES,需要添加如下的配置,才能启用自动配置 SLAAC 地址:
sudo sysctl net.inet6.ip6.rfc6204w3=1
或者编辑 /etc/sysctl.conf 文件:
sudo vi /etc/sysctl.conf
添加如下的内容:
net.inet6.ip6.rfc6204w3=1
配置 IPv6 路由器
如果想要使用 FreeBSD 作为 IPv6 路由器,那么需要启用广播 RA 信息的服务,并做相应的配置。
1)启用 rtadvd 广播服务:
sudo sysrc rtadvd_enable="YES"
2)指定广播通告的网卡:
sudo sysrc rtadvd_interfaces="em0" # 指定使用 em0 网卡发送广播通告
3)创建配置文件 /etc/rtadvd.conf, 并添加如下内容:
em0:\
:addrs#1:addr="2001:db8:1f11:246::":prefixlen#64:tc=ether:
配置内容解释说明:
em0::指定配置的网卡名称;addrs#1:广播 1 个 IPv6 网络前缀的通告addr="2001:db8:1f11:246::":指定广播通告的 IPv6 网络前缀prefixlen#64:设置网络前缀的长度为 64 位tc=ether:指定链路类型为以太网
4)启动 rtadvd 广播服务:
sudo service rtadvd start
启用 IPv4-IPv6 地址映射
使用如下命令可以启用 IPv4-IPv6 地址之间的映射:
sudo sysrc ipv6_ipv4mapping="YES"