/etc/network/interfaces.d/ 中的 up 或 down 选项不适用于静态方法

/etc/network/interfaces.d/ 中的 up 或 down 选项不适用于静态方法

我有以下网络(所有机器都是 Debian GNU/Linux 10 Buster):

+----+             +--------+                    +--------+             +----+
|.1.x| <-->   .1.1 |ROUTER-A| .101.1 <--> .101.2 |ROUTER-B|   .2.1 <--> |.2.x|
+----+      enp0s8 +--------+ enp0s9      enp0s9 +--------+ enp0s8      +----+

我正在尝试使.1.x网络中的机器能够与网络中的机器进行通信.2.x

根据这个链接或者这个,我们可以up在界面文件中添加命令。所以我尝试了一下。

/etc/network/
             interfaces
             interfaces.d/
                          enp0s3-nat
                          enp0s8-intnet-1
                          enp0s9-intnet-101
                          loopback

里面enp0s9-intnet-101

allow-hotplug enp0s9
iface enp0s9 inet static
  address 192.168.101.1
  netmask 255.255.255.0
  gateway 192.168.101.1
  network 192.168.101.0

  up ip route add 192.168.2.0/24 via 192.168.101.2

但这不起作用。出于好奇,我尝试了一下up echo "hello world" > /tmp/hello-test,也行不通。

如果我static用以下方法替换我的方法manual

allow-hotplug enp0s9
iface enp0s9 inet manual
  up ip address add 192.168.101.1/24 dev enp0s9
  up ip route   add 192.168.2.0/24   via 192.168.101.2

ip link set enp0s9 down它可以在重新启动时工作,但如果我使用then “上下”我的界面ip link set enp0s9 up,则该路由不再可用。

所以我的问题是:

  • 是否可以up在方法中使用命令static
  • 为什么用我的manual方法创建的路线不是用ip link set enp0s9 up

答案1

所以根据这张票

post-up 行针对静态 ipv6 接口执行,但如果在配置接口时出现问题则不会执行。

这同样适用于 ipv4 接口。于是我继续把iface enp0s9 inet static和之间的线一根一根地去掉,up ip route add ...直到它起作用为止;罪魁祸首是gateway 192.168.101.1。以下内容按预期工作:

allow-hotplug enp0s9
iface enp0s9 inet static
  address 192.168.101.1/24
  up ip route add 192.168.2.0/24 via 192.168.101.2

我还删除了该netmask选项(已弃用)和该network选项(甚至在联机帮助页中都没有提及)。相反,我使用了address带有dotted quad/netmask语法的选项。

我的猜测是gateway不能与 相同的 IP 地址address

至于为什么“路由不是用ip link set enp0s9 up”创建的,而是在使用时正确创建的ifup enp0s9,这是一个更高级别的命令,其作用远远超过ip link set ... up(请参阅这个帖子以获得更多信息)。

相关内容