澄清术语“Interface”

参阅: DSA Mini-Tutorial > Unfinished bits to be incorporated if still relevant

如果你曾使用过其他 Linux 发行版或者 pfSense 这样的路由器,那么术语“Interface”的用法可能有点令人困惑1)

OpenWrt配置中的“Interface”绝不能与物理接口混淆。这个词确实具有误导性。作为Unix管理员,你应该是知道ifconfig命令的,所以可能自然认为config interface lan做的事情与ifconfig一样。实际上只说对了一部分。

为了澄清一些东西(希望如此),让我们避免使用“interface”这个术语,而用更中性的词汇代替它(便于我们理解)。我们在OpenWrt中实际配置的可以称为“Connector”连接器2)。“Connector”的配置组合包含了将运行OpenWrt的设备连接到网络的所有属性。其包括物理设备(为避免完全使用“interface”术语,我称之为“controller”控制器)和配置信息。配置信息应用于controller,使设备能够加入网络。

# 这是一个伪配置,不是实际有效的配置代码!
config "connector" 'lan'
option "controller" 'eth0'
option "setup" 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'

如果你已经对OpenWrt语法有所了解,您可以看到我用“connector”替换了interface,用“controller”替换了device,用“setup”替换了proto,以避免使用“interface”和任何相关的东西。

当然,该配置信息会对controller(device)有影响,你可以用ifconfig或更好的ip a s eth0命令查看效果。但请注意,这不是“eth0”的完整配置。可能有更多的connectors(interface)连接到涉及同一controller(device|物理设备)的其他网络。并且,根据所选择的设置,connector(interface)配置可能对controller(device|物理设备)之外的其他可配置项产生影响。

以IPv6连通性为例。IPv4和IPv6定义了不同的网络。IPv4地址的设备不能与IPv6地址的设备通信。因此,如果我们想让我们的设备与其他IPv6设备通信,就需要一个额外的connector(interface)。

# 这是一个伪配置,不是实际有效的配置代码!
config "connector" 'lan6'
option "controller" 'eth0'
option "setup" 'dhcp6'

这配置了另一个connector(interface),并且与上一个connector(interface)使用同一controller(device|物理设备)3),但使用了不同的设置策略,即使用dhcp(用于IPv6)的自动策略。因此,该配置不仅会影响controller(device|物理设备),还会影响辅助进程(在本例中为odhcpd)。

总之,在读取或写入OpenWrt网络配置时,请记住:

1)
有几个概念的意思容易搞混
2)
interface配置应避免理解成物理接口,而应理解为连接器
3)
还好使用IPv6不需要新的物理设备
4)
不是很确定这个功能, 但是看起来你可以用 device '@<devname>' 作为一个快捷方式来引用在其它interface配置中使用的物理接口