我试图了解cloned_interfaces
FreeBSD 的rc.conf
真正用途。
手册页说:
cloned_interfaces
:(str) 设置为此主机上创建的可克隆网络接口的列表。通过设置变量,可以将更多克隆参数传递给
ifconfig(8)
create
每个接口的命令create_args_<interface>
。如果使用关键字指定接口名称sticky
,则即使rc.d/netif
使用参数调用脚本,该接口也不会被破坏stop
。当重新配置接口而不破坏它时,这非常有用。中的条目cloned_interfaces
会自动附加到network_interfaces
配置中。
这并没有提供任何关于它的作用的有用信息。例如if_bridge
,它被 ,if_tap
和 所使用if_epair
。
它实际上有什么作用?
为什么特定网络模块需要它而不是其他网络模块?
它会创建某种虚拟设备吗?
什么时候需要?
安全影响?
性能影响?
答案1
cloned_interfaces
rc.conf
是、rc.conf.local
、 等中的几个设置之一。控制网络接口的设置和关闭。在 Mewburnrc
系统中/etc/rc.d/netif
,主要负责使用这些设置。通过 nosh 系统管理,外部格式导入子系统可以获取这些设置,并将它们转换为/var/local/sv
.
两个系统的基础都运行ifconfig
很多并且运行一些长时间运行的守护进程。
cloned_interfaces
network_interfaces
与列出要启动和关闭的网络接口的设置几乎相同。两者之间的唯一区别在于,它network_interfaces
描述了预先存在的网络接口,因为(网络接口硬件的)硬件检测已经使它们存在;而cloned_interfaces
网络接口是仅通过这些服务启动和关闭操作而存在的。
、bridge
、tap
或epair
网络接口并不代表实际的网络接口硬件。因此,在启动和关闭时需要一个额外的步骤,此时需要一个新的网络接口克隆的并被摧毁。这也是通过ifconfig
命令完成的。第一个bridge
网络接口通过运行进行克隆ifconfig bridge0 create
,并通过 进行销毁ifconfig bridge0 destroy
。列表bridge0
中的列出cloned_interfaces
会导致这种情况发生,并且这些命令首先和最后运行;而将其列出则network_interfaces
不会,并且系统会假设存在bridge0
要操纵的现有设备。
(从技术上讲,环回接口也不是硬件。它也是克隆的;因此第一个克隆的环回接口是lo0
,对于那些曾经想知道这个名称的人来说。但是它有特殊的外壳,因为它作为桥接器不是可选的、水龙头和 epair 是。)
除此之外,两组接口的处理方式相同。
进一步阅读
答案2
有了cloned_interfaces
你可以做很多事情,例如:
调整 FreeBSD 虚拟 LAN 配置:VLAN 是一组具有一组共同要求的主机,这些主机之间的通信就像连接到同一条线路上一样,无论其物理位置如何。 VLAN 具有与物理 LAN 相同的属性,但它允许将终端站分组在一起,即使它们不在同一 LAN 网段上也是如此。网络重新配置可以通过软件完成,而不是物理地重新定位设备。要使配置持久化,请打开/etc/rc.conf:
vi /etc/rc.conf
追加/修改如下:
cloned_interfaces="vlan0"
ifconfig_vlan0="inet x.x.x.x netmask y.y.y.y vlan 2 vlandev em0"
- 创建永久环回接口 (FreeBSD),使用
ifconfig lo1 create
,然后将以下内容添加到 /etc/rc.conf:
cloned_interfaces="lo1"
ifconfig_lo1="inet a.b.c.d/netmask"
where a.b.c.d is the ip address.
使用链路聚合控制协议 LACP 在 FreeBSD 中进行链路聚合/绑定:在 FreeBSD 中将多个以太网链路绑定在一起相当简单,例如使用 LACP,它确实需要一些交换机配置才能工作,然后确保链路聚合模块在启动时启动,因此编辑 /boot/loader.conf 并添加以下行:
if_lagg_load=”YES”
现在配置端口…在本示例中,我们将 igb0 和 bge0 绑定在一起形成两个端口 LACP 捆绑包。我们将 IP 192.0.2.10/24 分配给该接口。将以下内容添加到 /etc/rc.conf 中:
cloned_interfaces=”lagg0″
ifconfig_igb0=”up”
ifconfig_bge0=”up”
ifconfig_lagg0=”laggproto lacp laggport igb0 laggport bge0 up”
ifconfig_lagg0_alias0=”inet 192.0.2.10/24″
- 单一 IP 的 FreeBSD Jail,假设我们有以下场景:您有一个带有单个 IP 的 FreeBSD VPS,并且您希望创建一个 FreeBSD 监狱以提供额外的安全性和/或隔离。在这篇文章中,我将说明如何使用单个 VPS 和在内部 IP 上创建的监狱,并通过 NAT 访问和端口转发到监狱的特定端口(Web、ssh 等)。然后创建本地接口如下:
在 rc.conf 中将环回接口克隆到 lo1,以便我们可以使用 192.168。, 10.,或 172.16.* 我们的私人监狱网络。
cloned_interfaces="lo1"
ipv4_addrs_lo1="192.168.0.1-9/29"
上面的代码将创建一个 lo1 环回设备,并在该接口上创建 192.168.0.1 到 192.168.0.9。从这里我们将使用 192.168.0.2 创建一个监狱。然后,我们将配置 PF 以允许来自这些本地地址的出站流量 (NAT),并将 Web (80) 和 SSH 端口传递到特定的监狱 IP。
启用网桥:在 FreeBSD 中,是创建桥接口时
if_bridge
自动加载的内核模块。ifconfig
还可以通过将设备添加if_bridge
到自定义内核配置文件来将桥接支持编译到自定义内核中。该桥是使用接口克隆创建的。创建桥接口:# ifconfig bridge create
bridge0
# ifconfig bridge0
bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 96:3d:4b:f1:79:7a
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
创建桥接接口时,会自动为其分配一个随机生成的以太网地址。 maxaddr 和 timeout 参数控制网桥将在其转发表中保留多少个 MAC 地址,以及在最后一次看到每个条目后多少秒将其删除。其他参数控制 STP 的运行方式。
接下来,指定要添加为网桥成员的网络接口。为了使网桥能够转发数据包,所有成员接口和网桥都需要处于 up 状态:
# ifconfig bridge0 addm fxp0 addm fxp1 up
# ifconfig fxp0 up
# ifconfig fxp1 up
网桥现在可以在 fxp0 和 fxp1 之间转发以太网帧。将以下行添加到 /etc/rc.conf 以便在启动时创建桥:
cloned_interfaces="bridge0"
ifconfig_bridge0="addm fxp0 addm fxp1 up"
ifconfig_fxp0="up"
ifconfig_fxp1="up"
如果桥接主机需要 IP 地址,请在桥接接口上设置,而不是在成员接口上设置。地址可以静态设置或通过 DHCP 设置。此示例设置静态 IP 地址:
# ifconfig bridge0 inet 192.168.0.1/24
还可以将 IPv6 地址分配给桥接接口。要使更改永久生效,请将寻址信息添加到 /etc/rc.conf。
这些是 !! 的一些应用程序cloned_interfaces
!