Debian/Ubuntu的networking的/etc/network/interfaces
配置文件的:up
,down
,pre-up
,pre-down
,post-up
,post-down
在 Debian/Ubuntu 的 /etc/network/interfaces
配置文件中,up
、down
、pre-up
、pre-down
、post-up
、post-down
是用于在接口生命周期不同阶段执行自定义脚本或命令的钩子(Hooks) 。它们允许你在网络接口启用(up
)或禁用(down
)的前后触发特定操作,例如配置路由、启动服务或清理资源。以下是详细解析:
1. 钩子执行顺序与时机
当一个接口通过 ifup <接口名>
或 ifdown <接口名>
被启用或禁用时,钩子按以下顺序执行:
钩子名称 | 触发时机 |
---|---|
pre-up |
在接口物理启用(如分配 IP、设置 MAC)之前执行。 |
up |
在接口逻辑启用(IP 分配完成)之后 执行(较少直接使用,通常用 post-up )。 |
post-up |
在接口完全启用(包括路由、DNS 配置)之后执行。 |
pre-down |
在接口开始关闭(如释放 IP)之前执行。 |
down |
在接口逻辑关闭(IP 释放完成)之后执行(较少直接使用)。 |
post-down |
在接口完全关闭(物理状态变更)之后执行。 |
2. 各钩子的典型应用场景
2.1 pre-up
-
用途:在接口启用前执行检查或初始化操作。
-
示例 :
bashiface eth0 inet static address 192.168.1.100/24 pre-up [ -f /etc/special_config ] # 检查文件是否存在,若不存在则阻止接口启动 pre-up ip link set dev eth0 mtu 9000 # 修改 MTU
2.2 post-up
-
用途:在接口启用后执行路由、服务启动等操作。
-
示例 :
bashiface eth0 inet static address 192.168.1.100/24 post-up ip route add 10.0.0.0/8 via 192.168.1.2 # 添加静态路由 post-up systemctl restart my-service # 重启依赖网络的服务
2.3 pre-down
-
用途:在接口关闭前清理资源或保存状态。
-
示例 :
bashiface eth0 inet static pre-down /usr/local/bin/backup_routes.sh # 备份当前路由表 pre-down ip route flush cache # 清空路由缓存
2.4 post-down
-
用途:在接口关闭后执行最终清理或日志记录。
-
示例 :
bashiface eth0 inet static post-down echo "接口 eth0 已关闭 $(date)" >> /var/log/network.log post-down iptables -F # 清理防火墙规则(谨慎使用)
3. 高级用法与注意事项
3.1 多命令执行
每个钩子可以定义多个命令,按顺序执行:
bash
iface eth0 inet static
post-up ip route add 10.0.0.0/8 via 192.168.1.2
post-up ip route add 172.16.0.0/16 via 192.168.1.3
3.2 脚本调用
可调用外部脚本(需确保脚本有执行权限):
bash
iface eth0 inet static
post-up /usr/local/bin/network_setup.sh
3.3 错误处理
-
忽略错误 :使用
|| true
防止命令失败导致接口启动/关闭中断。bashpost-up ip route add 10.0.0.0/8 via 192.168.1.2 || true
-
严格模式:默认若命令失败(返回非零状态码),接口操作会终止。
3.4 变量替换
在钩子中可使用接口相关变量,如 $IFACE
(当前接口名):
bash
iface eth0 inet static
post-up echo "接口 $IFACE 已启动" >> /var/log/network.log
4. 完整配置示例
场景
- 接口
eth0
静态 IP 为192.168.1.100/24
。 - 启动后添加两条静态路由,并记录日志。
- 关闭前备份路由表,关闭后清理临时文件。
配置文件 /etc/network/interfaces
bash
auto eth0
iface eth0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
# 启用前检查网卡是否存在
pre-up if [ ! -e /sys/class/net/eth0 ]; then echo "网卡 eth0 不存在"; exit 1; fi
# 启用后操作
post-up ip route add 10.0.0.0/8 via 192.168.1.2
post-up ip route add 172.16.0.0/16 via 192.168.1.3
post-up echo "$(date) - 接口 $IFACE 启动完成" >> /var/log/network.log
# 关闭前操作
pre-down ip route save > /etc/network/routes_backup.txt
# 关闭后操作
post-down rm -f /tmp/eth0_tempfile
5. 调试与日志
-
查看接口状态变化 :
bashjournalctl -u networking.service -f # 实时监控网络服务日志
-
手动触发钩子 :
bashsudo ifup eth0 --force # 强制启用接口并执行钩子 sudo ifdown eth0 # 关闭接口并执行钩子
6. 常见问题
6.1 钩子命令未执行
- 原因 :
- 脚本权限不足(需
chmod +x /path/to/script
)。 - 语法错误(如缺少引号或变量未转义)。
- 脚本权限不足(需
- 解决 :检查日志
journalctl -u networking.service
。
6.2 命令依赖未满足
- 场景 :
post-up
中启动的服务依赖其他接口或系统组件。 - 解决 :使用
sleep
延迟或依赖管理工具(如systemd
服务依赖)。
总结
pre-up
/post-up
:用于接口启用前后的初始化与收尾(最常用)。pre-down
/post-down
:用于接口关闭前后的资源清理。- 灵活场景:通过钩子可实现路由配置、服务启停、日志记录等高级操作。
- 注意安全:确保钩子中的命令或脚本可信,避免引入安全风险。
在 Debian/Ubuntu 的 /etc/network/interfaces
配置文件中,up
、down
、pre-up
、pre-down
、post-up
、post-down
是用于控制网络接口生命周期中执行自定义命令的关键指令。以下是它们的详细解析和典型用法:
指令执行顺序
- pre-up → up → post-up
(接口激活时触发) - pre-down → down → post-down
(接口关闭时触发)
各指令详解
1. pre-up
-
触发时机 :接口被激活前(如
ifup eth0
)。 -
用途:准备接口依赖资源(如加载内核模块、创建虚拟接口)。
-
示例 :
bashauto eth0 iface eth0 inet static pre-up modprobe 8021q # 加载 VLAN 模块 pre-up ip link add eth0.100 type vlan id 100 dev eth0 # 创建 VLAN 接口 address 192.168.1.100/24
2. up
-
触发时机:接口激活后立即执行。
-
用途:配置 IP、路由、启动服务等。
-
示例 :
bashauto eth0 iface eth0 inet static address 192.168.1.100/24 up ip route add 10.0.0.0/8 via 192.168.1.254 # 添加路由 up systemctl start nginx # 启动依赖网络的服务
3. post-up
-
触发时机:接口完全启动后。
-
用途:执行依赖接口就绪的操作(如设置 NAT、更新防火墙)。
-
示例 :
bashauto eth0 iface eth0 inet static address 192.168.1.100/24 post-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 启用 NAT
4. pre-down
-
触发时机:接口关闭前。
-
用途:优雅关闭服务或清理资源。
-
示例 :
bashauto eth0 iface eth0 inet static address 192.168.1.100/24 pre-down systemctl stop nginx # 先停止服务再关接口
5. down
-
触发时机:接口关闭后。
-
用途:删除路由、关闭依赖接口的服务。
-
示例 :
bashauto eth0 iface eth0 inet static address 192.168.1.100/24 down ip route del 10.0.0.0/8 via 192.168.1.254 # 删除路由
6. post-down
-
触发时机:接口完全关闭后。
-
用途:最终清理或状态更新(如通知监控系统)。
-
示例 :
bashauto eth0 iface eth0 inet static address 192.168.1.100/24 post-down logger "Interface eth0 is down" # 记录日志
最佳实践
-
命令可靠性 :使用绝对路径(如
/usr/sbin/ip
),避免环境变量问题。 -
错误处理 :可通过
|| true
忽略命令失败(如up command || true
)。 -
调试技巧 :在命令前加
echo
输出调试信息:bashup echo "Configuring eth0..." >> /var/log/network.log
-
测试命令:先在终端手动执行命令,确保无误后再写入配置文件。
完整示例
bash
auto eth0
iface eth0 inet static
pre-up modprobe bonding
pre-up ip link add bond0 type bond mode active-backup
address 192.168.1.100/24
up ip link set eth0 master bond0
post-up systemctl start docker # 确保网络就绪后启动 Docker
pre-down systemctl stop docker
down ip link set eth0 nomaster
post-down ip link delete bond0
通过灵活组合这些指令,可以实现高度定制化的网络配置逻辑。
在 Debian/Ubuntu 系统的 /etc/network/interfaces
配置文件中,up
、down
、pre-up
、pre-down
、post-up
、post-down
是用于在接口启动或关闭时执行自定义命令的指令。它们允许在特定阶段插入额外的操作,例如配置路由、挂载文件系统或启动服务。
指令说明与执行顺序
1. 接口启动阶段(ifup
)的执行顺序
当使用 ifup <interface>
或系统启动时,接口的配置会按以下顺序执行:
pre-up
:在接口配置 之前 执行的命令(如加载驱动、检查硬件)。up
:在接口配置(如分配 IP 地址)之后 、接口激活 之前 执行的命令。post-up
:在接口完全激活 之后 执行的命令(如添加路由、启动服务)。
2. 接口关闭阶段(ifdown
)的执行顺序
当使用 ifdown <interface>
或系统关闭时,接口的配置会按以下顺序执行:
pre-down
:在接口关闭 之前 执行的命令(如删除路由、停止服务)。down
:在接口关闭(如释放 IP 地址)之后 执行的命令。post-down
:在接口完全关闭 之后 执行的命令。
指令详解
指令 | 执行时机 | 典型用途 |
---|---|---|
pre-up |
接口配置前(如分配 IP 地址前) | 加载驱动、检查硬件、预检操作。 |
up |
接口配置后,激活前(IP 地址已分配) | 需依赖 IP 地址的配置(如添加路由、启动服务)。 |
post-up |
接口完全激活后(网络已就绪) | 需要网络可达的配置(如挂载网络文件系统、启动依赖网络的服务)。 |
pre-down |
接口关闭前(IP 地址未释放) | 删除路由、停止服务、清理资源。 |
down |
接口关闭后(IP 地址已释放) | 释放资源、清理残留配置。 |
post-down |
接口完全关闭后(网络已断开) | 清理日志、执行最终操作。 |
示例配置
以下示例展示如何在接口配置块中使用这些指令:
bash
auto enp0s3
iface enp0s3 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
# 预配置:加载驱动(如虚拟网卡)
pre-up modprobe dummy
# 接口配置后,添加静态路由
up route add -net 192.168.2.0/24 gw 192.168.1.2
# 接口激活后,挂载网络文件系统
post-up mount -a
# 接口关闭前,删除路由
pre-down route del -net 192.168.2.0/24 gw 192.168.1.2
# 接口关闭后,卸载驱动
post-down modprobe -r dummy
常见用例
1. 配置静态路由
bash
iface enp0s3 inet static
...
# 接口激活时添加路由
up ip route add 10.0.0.0/24 via 192.168.1.10
# 接口关闭时删除路由
pre-down ip route del 10.0.0.0/24 via 192.168.1.10
2. 启动/停止服务
bash
iface enp0s3 inet static
...
# 接口激活后启动服务
post-up systemctl start myservice
# 接口关闭前停止服务
pre-down systemctl stop myservice
3. 挂载网络文件系统
bash
iface enp0s3 inet static
...
# 接口激活后挂载 NFS
post-up mount -t nfs server:/path /mnt/nfs
# 接口关闭前卸载
pre-down umount /mnt/nfs
4. 配置 VLAN
bash
iface enp0s3.10 inet static
...
# 预配置:创建 VLAN 接口
pre-up vconfig add enp0s3 10
# 接口关闭时移除 VLAN
post-down vconfig rem enp0s3.10
注意事项
-
缩进和语法:
- 指令(如
up
、pre-up
)需与iface
行对齐,命令需缩进(通常使用 4 个空格或 Tab)。 - 命令需以
;
分隔多个命令,或换行缩进。
- 指令(如
-
变量替换:
- 可使用
$IFACE
表示当前接口名称(如post-up ip link set $IFACE up
)。
- 可使用
-
错误处理:
-
如果命令失败,接口可能无法启动。建议添加
|| true
避免因命令失败导致接口无法启动:bashpost-up some_command || true
-
-
与 Netplan 的兼容性:
- 在 Ubuntu 18.04+ 中,默认使用
Netplan
,若需继续使用interfaces
,需确保ifupdown
已安装且配置不冲突。
- 在 Ubuntu 18.04+ 中,默认使用
验证配置
-
检查接口状态:
baship addr show enp0s3 ip route show
-
模拟启动/关闭接口:
bashsudo ifup -n enp0s3 # 模拟启动并输出命令 sudo ifdown -n enp0s3 # 模拟关闭
通过合理使用这些指令,可以灵活扩展网络接口的功能,满足复杂的网络需求。
在 Debian/Ubuntu 系统的 /etc/network/interfaces
配置文件中,up
、down
、pre-up
、pre-down
、post-up
和 post-down
是用于在网络接口不同状态变化时执行特定命令的关键字,下面为你详细介绍它们的用途和区别:
1. pre-up
- 用途:在网络接口正式启动之前执行指定的命令。通常用于执行一些必要的准备工作,比如加载内核模块、创建必要的文件或目录等。
- 示例:
plaintext
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
pre-up modprobe bonding mode=802.3ad miimon=100 # 加载 bonding 内核模块
2. up
- 用途:在网络接口成功启动并分配了 IP 地址之后执行指定的命令。常用于配置静态路由、防火墙规则等操作。
- 示例:
plaintext
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2 dev eth0 # 添加静态路由
3. post-up
- 用途 :在
up
命令执行完毕之后执行指定的命令。可用于执行一些额外的配置或监控任务,例如启动网络服务、记录日志等。 - 示例:
plaintext
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
post-up /usr/local/bin/network_monitor.sh # 启动网络监控脚本
4. pre-down
- 用途:在网络接口正式关闭之前执行指定的命令。一般用于执行一些清理工作,如停止相关服务、保存配置等。
- 示例:
plaintext
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
pre-down /etc/init.d/network_service stop # 停止网络相关服务
5. down
- 用途:在网络接口关闭过程中执行指定的命令。通常用于删除之前配置的路由、规则等。
- 示例:
plaintext
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2 dev eth0
down route del -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2 dev eth0 # 删除静态路由
6. post-down
- 用途:在网络接口完全关闭之后执行指定的命令。可用于执行一些最终的清理或通知任务。
- 示例:
plaintext
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
post-down echo "Network interface eth0 is down" > /var/log/network.log # 记录接口关闭日志
注意事项
- 命令执行顺序 :这些关键字的执行顺序为
pre-up
->up
->post-up
和pre-down
->down
->post-down
。 - 错误处理 :在编写命令时,建议添加适当的错误处理机制,避免因某个命令执行失败而影响整个网络接口的配置。例如,可以使用
|| true
来忽略命令执行的错误。 - 配置生效 :修改
/etc/network/interfaces
文件后,需要重启网络服务使配置生效。可以使用以下命令:
bash
sudo systemctl restart networking
在 Debian/Ubuntu 的 /etc/network/interfaces
文件中,up
、down
、pre-up
、pre-down
、post-up
和 post-down
是用于在网络接口状态变化时执行自定义命令或脚本的指令。它们的执行顺序和作用如下:
1. 执行顺序
-
接口启用时:
pre-up
:在接口启用之前执行。up
:在接口启用时执行。post-up
:在接口完全启用后执行。
-
接口禁用时:
pre-down
:在接口禁用之前执行。down
:在接口禁用时执行。post-down
:在接口完全禁用后执行。
2. 指令说明
-
pre-up
:- 在接口启用之前执行的命令。
- 如果命令失败,接口的启用过程会继续。
- 适合用于需要在接口启用前完成的准备工作,例如加载模块或检查配置。
-
up
:- 在接口启用时执行的命令。
- 如果命令失败,接口的启用过程会继续。
- 适合用于在接口启用后立即执行的操作,例如添加路由或启动服务。
-
post-up
:- 在接口完全启用后执行的命令。
- 如果命令失败,接口的启用过程会继续。
- 适合用于需要在接口完全可用后执行的操作,例如启动依赖于网络的服务。
-
pre-down
:- 在接口禁用之前执行的命令。
- 如果命令失败,接口的禁用过程会继续。
- 适合用于在接口禁用前清理资源或保存状态。
-
down
:- 在接口禁用时执行的命令。
- 如果命令失败,接口的禁用过程会继续。
- 适合用于在接口禁用时执行的操作,例如删除路由或停止服务。
-
post-down
:- 在接口完全禁用后执行的命令。
- 如果命令失败,接口的禁用过程会继续。
- 适合用于在接口完全禁用后执行的清理工作。
3. 示例用法
示例 1:添加和删除路由
bash
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
pre-up ip link set eth0 up
up ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0
post-up systemctl start some-service
pre-down ip route del 10.0.0.0/8 via 192.168.1.254 dev eth0
down ip link set eth0 down
post-down systemctl stop some-service
示例 2:加载模块和启动服务
bash
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
pre-up modprobe 8021q
up vconfig add eth0 10
post-up systemctl start vlan-service
pre-down vconfig rem eth0.10
post-down systemctl stop vlan-service
4. 注意事项
-
命令失败 :如果
pre-up
、up
、post-up
、pre-down
、down
或post-down
中的命令失败,接口的启用或禁用过程会继续,但可能会导致后续操作出现问题。 -
脚本支持 :可以在这些指令中调用脚本文件,例如:
bashpost-up /etc/network/scripts/start-service.sh
-
顺序依赖 :确保命令的执行顺序不会导致依赖问题,例如在
post-up
中启动的服务可能依赖于接口完全启用。
通过合理使用这些指令,可以灵活地在网络接口状态变化时执行自定义操作,满足复杂的网络配置需求。
在 Debian/Ubuntu 系统中,/etc/network/interfaces
是传统的网络接口配置文件,其中 up
, down
, pre-up
, pre-down
, post-up
, post-down
是用于定义网络接口状态变化时触发的钩子指令。以下是详细说明:
1. 指令执行顺序
当接口启动或关闭时,这些指令按以下顺序执行:
接口启动:pre-up → up → post-up
接口关闭:pre-down → down → post-down
2. 各指令详解
pre-up
-
作用 :在接口物理激活前执行命令。
-
典型场景:检查依赖条件、加载内核模块、创建必要文件。
-
示例 :
bashauto eth0 iface eth0 inet dhcp pre-up [ -f /etc/network/check_eth0 ] # 检查文件是否存在 pre-up modprobe custom_driver # 加载驱动
up
-
作用:在接口完成基本配置(如分配IP)后执行命令。
-
典型场景:添加路由规则、设置防火墙、启动服务。
-
示例 :
bashiface eth0 inet static address 192.168.1.10 netmask 255.255.255.0 up ip route add 10.0.0.0/8 via 192.168.1.1 # 添加静态路由
post-up
-
作用 :在接口完全激活后执行命令。
-
典型场景:延迟执行任务、发送通知、启动依赖服务。
-
示例 :
bashiface eth0 inet dhcp post-up systemctl restart nginx # 重启服务 post-up logger "Interface eth0 is up" # 记录日志
pre-down
-
作用 :在接口物理关闭前执行命令。
-
典型场景:清理临时文件、检查服务状态。
-
示例 :
bashiface eth0 inet dhcp pre-down systemctl stop nfs-server # 停止服务 pre-down rm /tmp/eth0.lock # 删除临时文件
down
-
作用:在接口开始关闭时执行命令。
-
典型场景:删除路由规则、解除防火墙绑定。
-
示例 :
bashiface eth0 inet static down ip route del 10.0.0.0/8 # 删除路由
post-down
-
作用 :在接口完全关闭后执行命令。
-
典型场景:释放资源、发送通知。
-
示例 :
bashiface eth0 inet dhcp post-down logger "Interface eth0 is down" # 记录日志
3. 语法规则
-
每条指令必须缩进(通常为1个Tab或4个空格)。
-
使用
exec
执行外部脚本或复杂命令:bashpost-up exec /usr/local/bin/notify_admin.sh
-
命令返回值:若返回非零值,可能导致接口配置/关闭中止(取决于配置)。
4. 注意事项
- 权限 :命令默认以
root
权限执行。 - 兼容性 :Ubuntu 18.04+ 默认使用 Netplan,但
ifupdown
仍可通过安装保留。 - 调试 :通过
systemctl status networking.service
或journalctl
查看执行日志。
5. 典型配置示例
bash
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
pre-up /sbin/modprobe -q ixgbe # 加载驱动
up ip link set eth0 mtu 9000 # 设置MTU
post-up systemctl start my-custom-service # 启动服务
pre-down iptables -F # 清理防火墙
down ip route flush dev eth0 # 清除路由
post-down echo "eth0 down" > /var/status
如果需要更复杂的逻辑,建议编写独立脚本并通过钩子调用。
在 Debian/Ubuntu 系统中,/etc/network/interfaces
配置文件通过 钩子指令 (如 up
、post-up
等)实现接口生命周期中的自定义操作。以下是各指令的功能、执行顺序及实际应用场景的详细说明:
一、钩子指令的定义与执行顺序
1. 基础分类
指令名称 | 触发时机 | 典型用途 | 引用来源 |
---|---|---|---|
pre-up |
接口物理启动前 | 加载驱动、检查硬件状态 | |
up |
接口逻辑启动(IP 分配完成)后 | 配置路由、启动服务 | |
post-up |
接口完全激活后 | 日志记录、通知脚本、复杂路由配置 | |
pre-down |
接口物理关闭前 | 保存状态、清理临时文件 | |
down |
接口逻辑关闭(IP 释放前) | 删除路由、停止服务 | |
post-down |
接口完全关闭后 | 恢复默认配置、释放资源 |
二、实际应用场景与示例
1. 路由管理
• 添加静态路由(接口启动后生效):
bash
iface eth0 inet static
post-up ip route add 10.0.0.0/8 via 192.168.1.1
pre-down ip route del 10.0.0.0/8 via 192.168.1.1
此配置在接口激活后添加路由,关闭前删除路由,避免残留无效规则。
2. 服务依赖
• 启动/停止服务(如 NFS 或 Docker):
bash
iface eth0 inet static
post-up systemctl restart docker
pre-down systemctl stop docker
确保网络就绪后再启动依赖服务,提升服务稳定性。
3. 无线网络配置
• 预加载无线参数(接口激活前执行):
bash
iface wlan0 inet dhcp
pre-up iwconfig wlan0 essid "MyWiFi"
pre-up wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
在物理接口启动前配置 SSID 和认证信息。
4. 容错与日志
• 错误处理与日志记录:
bash
iface eth0 inet static
post-up logger "接口 eth0 已启动,IP: $(hostname -I)" || true
pre-down ip route flush table main >/dev/null 2>&1
使用 || true
忽略命令失败,避免因单条命令错误中断整个流程。
三、注意事项
-
语法规范
• 缩进必须使用 空格 (Tab 会导致解析失败)。 • 命令需写完整路径(如
/sbin/ip
而非ip
),避免环境变量问题。 -
执行权限
• 钩子指令默认以
root
权限执行,但涉及用户态服务时需注意权限隔离。 -
服务冲突
• 若同时使用
NetworkManager
,需在/etc/NetworkManager/NetworkManager.conf
中设置managed=false
,避免配置覆盖。 -
调试技巧
• 通过
journalctl -u networking.service
查看服务日志,定位钩子执行问题。
四、完整配置示例
bash
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
# 钩子指令
pre-up [ -f /etc/network/.lock ] || touch /etc/network/.lock
post-up ip route add default via 192.168.1.1 metric 100
post-up systemctl restart nginx
pre-down ip route del default via 192.168.1.1
post-down rm -f /etc/network/.lock
通过合理使用这些钩子指令,可以实现网络接口的精细化控制,适用于服务器、嵌入式设备等复杂场景。建议结合 man interfaces
查阅官方文档以获取更多高级用法。