我有以下网络(所有机器都是 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
(请参阅这个帖子以获得更多信息)。