我有以下网络(所有机器都是 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
它可以在重新启动时工作,但是如果我使用 then 来“上下”我的界面,ip link set enp0s9 down
则ip link set enp0s9 up
该路由不再可用。
所以我的问题:
- 是否可以
up
在方法中使用命令static
? - 为什么,用我的
manual
方法,路线不是用ip link set enp0s9 up
?
所以根据这张票:
这同样适用于 ipv4 接口。所以我继续前进,将中间的线一一删除
iface enp0s9 inet static
,up ip route add ...
直到它起作用;罪魁祸首是gateway 192.168.101.1
。以下按预期工作:我还删除了
netmask
选项(已弃用)和network
一个(手册页中甚至没有提到)。相反,我使用了address
带有dotted quad/netmask
语法的选项。我的猜测是
gateway
不能是相同的 IP 地址address
。至于为什么“路由不是用
ip link set enp0s9 up
”创建的,它是在使用时正确创建ifup enp0s9
的,这是一个更高级别的命令,它的作用远不止于此ip link set ... up
(有关更多信息,请参见这篇文章)。