ifup - 激活网络接口
ifdown - 停用网络接口
ifquery - 解析接口配置
概要
ifup [-nv] [--no-act] [--verbose] [-i FILE|--interfaces=FILE] [--state-dir=DIR] [--allow CLASS]
-a|IFACE...
ifup -h|--help
ifup -V|--version
ifdown [-nv] [--no-act] [--verbose] [-i FILE|--interfaces=FILE] [--state-dir=DIR] [--allow CLASS]
-a|IFACE...
ifquery [-nv] [--verbose] [-i FILE|--interfaces=FILE] [--state-dir=DIR] [--allow CLASS] IFACE...
ifquery -l|--list [-nv] [--verbose] [-i FILE|--interfaces=FILE] [--state-dir=DIR] [--allow CLASS]
[-a|IFACE...]
ifquery --state [--state-dir=DIR] [--allow CLASS] [-a|IFACE...]
描述
ifup 和 ifdown 命令可用于根据 /etc/network/interfaces 文件中的接口定义来配置(或分别取消配置)网络接口。ifquery 命令可用于解析接口配置。
选项
以下是选项摘要。
-a, --all
如果提供给 ifup,则影响所有标记为“auto”的接口。接口将按照在 /etc/network/interfaces 中定义的顺序进行激活。与 --allow 结合使用时,对指定类别的所有接口起作用。如果提供给 ifdown,则影响所有已定义的接口。接口将按照当前在状态文件中列出的顺序进行停用。只有在 /etc/network/interfaces 中定义的接口才会被停用。
-f, --force
强制配置或取消配置接口。
--ignore-errors
如果任何命令或脚本失败,则继续。
-h, --help
显示选项摘要。
--allow=CLASS
仅允许 /etc/network/interfaces 中的 allow-CLASS 行中列出的接口被操作。
-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
不要运行任何映射。有关映射功能的更多信息,请参阅 interfaces(5)。
--no-scripts
不要运行 /etc/network/if-*.d/ 中的任何脚本。
--no-loopback
禁用对环回接口的特殊处理。默认情况下,环回接口(在 Linux 上为 lo)在内部预定义为“auto”接口,因此在 ifup -a 上会自动激活。如果用户重新定义环回设备,则接口无论如何都只会配置一次。但是,如果另一个接口也被定义为环回接口,则它将像往常一样进行配置。指定此选项可禁用此行为,因此环回接口将不会自动配置。
-V, --version
显示版权和版本信息。
-v, --verbose
显示执行的命令。
-l, --list
对于 ifquery,列出所有匹配指定类的接口。如果没有指定类,则打印所有标记为自动的接口。
--state
对于 ifquery,转储接口的状态。如果没有指定接口,则列出所有一起启动的接口以及分配给它们的逻辑接口,并以状态码指示成功。如果指定了一个或多个接口,则仅显示这些接口的状态;如果所有指定的接口都已启动,则返回成功代码;否则,返回 0。
示例
ifup -a
启动所有在 /etc/network/interfaces 中定义为自动启动的接口。
ifup eth0
启动接口 eth0。
ifup eth0=home
将接口 eth0 作为逻辑接口 home 启动。
ifdown -a
关闭所有当前已启动的接口。
ifquery -l
打印所有使用 auto 关键字指定的接口的名称。
ifquery -l --allow=hotplug
打印所有使用 allow-hotplug 关键字指定的接口的名称。
ifquery eth0
显示 ifupdown 配置中指定的接口选项。每个键值对单独在一行上打印,使用“:”作为分隔符。
注意事项
ifup、ifdown 和 ifquery 实际上是同一个程序,通过不同的名称调用。
该程序不直接配置网络接口;它运行低级实用程序,例如 ip,来完成其工作。
在调用时,ifdown 会检查 ifup 是否仍在运行。在这种情况下,将发送 SIGTERM 信号给 ifup。
在接口停用期间,ifdown 忽略错误,就像指定了 --ignore-errors 一样。
文件
/etc/network/interfaces
网络接口的定义。有关更多信息,请参阅 interfaces(5)。
/run/network/ifstate
网络接口的当前状态
并发性
Ifupdown 使用每个接口的锁定,以确保对同一接口的并发 ifup 和 ifdown 调用按顺序执行。但是,对不同接口的调用可以并行运行。
退出状态
对于 ifup 和 ifdown,如果所有给定的接口都已成功(反)配置,则退出状态为 0;如果发生任何错误,则为 1。这些命令的结果是幂等的;在已经启动的接口上运行 ifup 将导致退出状态为 0,并且类似地,在未启动的接口上运行 ifdown 也会导致退出状态为 0。
ifquery 通常会在找到匹配的 iface 节时返回退出状态 0,否则返回 1。ifquery --state 也会在给定的接口已知但未启动时返回退出状态 1。
已知问题/限制
该程序会记录网络接口是启动还是关闭。在特殊情况下,这些记录可能与接口的实际状态不一致。例如,如果使用 ifup 启动接口,然后使用 ifconfig 停用接口,则该接口仍会被记录为启动状态。要修复此问题,可以使用 --force 选项来强制 ifup 或 ifdown 运行配置或反配置命令,而不管它认为接口的当前状态如何。
为了使 ifup 或 ifdown 正常工作,文件 /run/network/ifstate 必须是可写的。如果该位置不可写(例如,因为根文件系统以只读模式挂载用于系统恢复),则应将 /run/network/ifstate 设置为指向可写位置的符号链接。如果这不可能,则可以使用 --force 选项来运行配置或取消配置命令,而无需更新该文件。
请注意,该程序不会自动运行:单独使用 ifup 不会启动因安装硬件而出现的接口,单独使用 ifdown 也不一定会关闭因移除硬件而消失的接口。要自动配置网络接口,您需要安装其他软件包,如 udev(7) 或 ifplugd(8)。
作者
^ fupdown 套件由 Anthony Towns <_> 创建,目前由 Santiago Ruano Rincón <_> 和 Josue Ortega <_> 维护。
许多其他人也参与了 ifupdown 的开发,有关完整历史记录,请参阅 /usr/share/doc/ifupdown/changelog.Debian.gz。