「ifup(8)」-

网络接口配置

命令语法格式

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的所有接口:

# ifup -a

激活eth0接口:

# ifup eth0

将接口eth0作为逻辑接口home启动:

# ifup eth0=home

关闭当前正在运行的所有接口:

# ifdown -a

打印关键字指定为auto的所有接口的名称:

# ifquery -l

打印关键字指定为allow-hotplug的所有接口的名称:

# ifquery -l –allow=hotplug

显示ifupdown配置中指定的接口选项。 每个键值对使用“:”作为分隔符打印在单独的行上:

# ifquery eth0

如上示例。

退出状态

对于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 创建文章