澄清术语“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网络配置时,请记住:
config interface ...
不是物理接口的配置,而是某个网络连接器的规范。proto
不是http、ftp这类的网络协议,而是用于设置物理接口的协议,使其能够参与到它应该连接到的网络中。