我在 Docker 容器上安装了 Alpine Linux 映像。我正在探索它,并ls -lR /etc/network
得到了这样的结果:
/etc/network/:
total 24
drwxr-xr-x 2 root root 4096 Jan 16 2020 if-down.d
drwxr-xr-x 2 root root 4096 Jan 16 2020 if-post-down.d
drwxr-xr-x 2 root root 4096 Jan 16 2020 if-post-up.d
drwxr-xr-x 2 root root 4096 Jan 16 2020 if-pre-down.d
drwxr-xr-x 2 root root 4096 Jan 16 2020 if-pre-up.d
drwxr-xr-x 2 root root 4096 Jan 16 2020 if-up.d
/etc/network/if-down.d:
total 0
/etc/network/if-post-down.d:
total 0
/etc/network/if-post-up.d:
total 0
/etc/network/if-pre-down.d:
total 0
/etc/network/if-pre-up.d:
total 0
/etc/network/if-up.d:
total 4
-rwxrwxr-x 1 root root 218 Jan 15 2020 dad
在里面/etc/network/if-up.d/dad
我发现:
#!/bin/sh
# Block ifup until DAD completion
# Copyright (c) 2016-2018 Kaarle Ritvanen
has_flag() {
ip address show dev $IFACE | grep -q \" $1 \"
}
while has_flag tentative && ! has_flag dadfailed; do
sleep 0.2
done
我试图理解为什么这些文件夹存在以及dad
.我在互联网上搜索,但没有找到任何有用的东西。我期望找到类似 /etc/network/interfaces 的内容,但我无法理解这一切的目的是什么。有人可以解释一下吗?
答案1
这些文件夹是ifupdown的钩子,ifupdown的实现有很多,但是alpine默认的是busybox的,你可以在这里查看源码网络/ifupdown.c。
busybox仅处理auto
接口,支持这些内置类型。
- 内网
- 手动 wvdial ppp 静态 bootp dhcp 环回
- 内网6
- 静态手动环回 v4tunnel
ifupdown 有两个 $MODE (up
和down
),对于每个模式,有两个钩子:pre-
和post-
。
文件夹包含将由 调用的钩子脚本run-parts
,检查代码流程。
您可以使用钩子来实现额外的类型,以使配置更容易,就像bonding
提供的那样粘合包裹。所有现有脚本都是这里。
爸爸由 busybox 提供用于 IPv6 增强型重复地址检测。