网络接口配置
命令语法格式
ifup [-nv] [–no-act] [–verbose] [–interfaces=FILE] [–state-dir=DIR] [–allow CLASS] -a|IFACE…
ifdown [-nv] [–no-act] [–verbose] [–interfaces=FILE] [–state-dir=DIR] [–allow CLASS] -a|IFACE…
ifquery [-nv] [–verbose] [–interfaces=FILE] [–state-dir=DIR] [–allow CLASS] IFACE…
ifquery –list [-nv] [–verbose] [–interfaces=FILE] [–state-dir=DIR] [–allow CLASS] [-a|IFACE…]
ifquery –state [–state-dir=DIR] [–allow CLASS] [-a|IFACE…]
命令描述
ifup – 启动网络接口
ifdown – 关闭网络接口
ifquery – 解析接口配置
命令ifup和ifdown可用于基于文件/etc/network/interfaces中的接口定义来配置(或分别解除配置)网络接口。ifquery命令可用于解析接口配置。
命令支持的选项及含义
选项摘要如下。
-a, –all
如果给到ifup命令,则影响标记为auto的所有接口。接口按照在/etc/network/interfaces中定义的顺序显示。 与–allow结合使用,则作用于指定类别的所有接口。
如果给到ifdown命令,则影响所有已定义的接口。按接口当前在状态文件中列出的顺序进行关闭。只有/etc/network/interfaces中定义的接口才会被关闭。
–allow=CLASS
仅允许对/etc/network/interfaces中allow-CLASS行中列出的接口执行操作。
–force
强制配置或取消配置接口。
–ignore-errors
如果脚本的任何命令失败,请继续执行。
-i FILE, –interfaces=FILE
从FILE读取接口定义,而不是从/etc/network/interfaces中。
–state-dir=DIR
将接口状态保持在DIR中,而不是/run/network中。
-X PATTERN, –exclude=PATTERN
从PATTERN操作的接口列表中排除接口。 参数PATTERN使用通常的Shell glob语法。如果未使用shell通配符,则它必须与确切的接口名称匹配。可以多次指定此选项,从而导致排除多个模式。
-o OPTION=VALUE
将OPTION设置为VALUE,就像它在/etc/network/interfaces中一样。
-n, –no-act
不要配置任何接口,或运行任何“up”或“down”命令。
–no-mappings
不要运行任何映射。 有关映射功能的更多信息,请参阅interface(5)。
–no-scripts
不要运行在/etc/network/if-*.d/下任何脚本
–no-loopback
禁用回环接口的特殊处理。
默认情况下,环回接口(在Linux上的lo接口)在内部预定义为自动启动接口,因此它会自动在ifup -a上启动。 在用户重新定义环回设备的情况下,无论如何都只配置一次接口。 但是,如果另一个接口也定义为环回,则按常规配置。 指定此选项会禁用此行为,因此不会自动配置环回接口。
-v, –verbose
在执行命令时显示命令。
–state
对于ifquery,转储接口的状态。 如果未指定接口,则列出所有接口以及分配给它们的逻辑接口,并使用指示成功的状态代码退出。 如果指定了一个或多个接口,则仅显示这些接口的状态;如果作为参数给出的所有接口都已启动,则返回成功的代码。 否则,返回0。
-l, –list
对于ifquery,列出与指定类匹配的所有接口。 如果未指定类别,则打印列为auto的所有接口。
其他选项
-h, –help
显示选项概述。
-V, –version
显示版本和版权信息。
注意事项
命令ifup,ifdown,ifquery实际上是以不同名称来调用相同程序。
该程序不直接配置网络接口;它运行低级别的实用程序,如ip来做它的工作。
调用时,ifdown检查ifup是否仍在运行。 在这种情况下,信号SIGTERM被发送到ifup。
在接口取消配置期间,ifdown忽略错误的方式与指定–ignore-errors的方式相同。
KNOWN BUGS/LIMITATIONS
该程序记录网络接口是“up”还是“down”。在特殊情况下,这些记录可能与接口的实际状态不一致。例如,使用ifup启动,并稍后使用ifconfig取消配置的接口,此时仍将记录为“up”状态。要解决此问题,您可以使用–force选项强制ifup或ifdown运行配置或取消配置命令,不管它认为接口的当前状态是什么。
文件/run/network/ifstate必须可写,ifup或ifdown才能正常工作。如果该位置不可写(例如,因为根文件系统以只读方式挂载以进行系统恢复),则/run/network/ifstate应成为可写位置的符号链接。如果无法实现,则可以使用–force选项运行配置或取消配置命令,而无需更新文件。
请注意,程序不会自动运行:单独的ifup不会显示由于安装硬件而出现的接口,而单独ifdown不会关闭由于硬件被移除而消失的接口。要自动配置网络接口,您需要安装其他软件包,如udev(7)或ifplugd(8)。
CONCURRENCY
ifupdown使用每个接口锁定的方式来确保对同一接口的并发ifup和ifdown调用以串行方式运行。但是,对不同接口的调用将能够并行运行。
相关文件
/etc/network/interfaces
网络接口的定义有关更多信息,请参阅interface(5)。
/run/network/ifstate
网络接口的当前状态
使用示例
激活在/etc/network/interfaces中定义为auto的所有接口:
激活eth0接口:
将接口eth0作为逻辑接口home启动:
关闭当前正在运行的所有接口:
打印关键字指定为auto的所有接口的名称:
打印关键字指定为allow-hotplug的所有接口的名称:
显示ifupdown配置中指定的接口选项。 每个键值对使用“:”作为分隔符打印在单独的行上:
如上示例。
退出状态
对于ifup和ifdown,如果给定的接口已经成功配置(取消配置),则退出状态将为“0”,如果有任何错误,则退出状态为“1”。 这些命令的结果是幂等的;在已经启动的接口上运行ifup将导致退出状态为“0”,同样在未启动的接口上运行ifdown也将导致退出状态为“0”。
如果存在匹配的iface接口,则ifquery通常会以退出状态“0”返回,如果没有匹配的接口,则返回“1”。 如果给定的接口已知但未启动,则ifquery –state也将以退出状态“1”返回。
相关手册
interfaces(5), ip(8), ifconfig(8).
参考文献
- man 8 ifup, Version 0.8.32
更新日志
- 10/25/2018 创建文章