我正在设置一个具有 2 个网络接口的服务器,我希望主网络接口成为默认使用的网络接口,而另一个网络接口仅用于 3 个非常特定的子网。
但是,当我配置 netplan 时,如果不在两个接口上设置 to: 默认路由,就无法从这 3 个子网 ping 服务器,这显然没有意义。
我想要的配置
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 172.16.8.13/24
nameservers:
addresses: [172.16.6.244, 172.16.6.245]
routes:
- to: default
via: 172.16.8.254
enp11s0:
addresses:
- 10.129.81.215/24
nameservers:
addresses: [10.22.73.161, 10.22.73.33]
routes:
- to: 10.146.0.0/16
via: 10.129.81.10
- to: 10.230.0.0/16
via: 10.129.81.10
- to: 10.138.0.0/16
via: 10.129.81.10
这使我能够从 10.146.xx 设备 ping 服务器
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 172.16.8.13/24
nameservers:
addresses: [172.16.6.244, 172.16.6.245]
routes:
- to: default
via: 172.16.8.254
enp11s0:
addresses:
- 10.129.81.215/24
nameservers:
addresses: [10.22.73.161, 10.22.73.33]
routes:
- to: default
via: 10.129.81.10
- to: 10.146.0.0/16
via: 10.129.81.10
- to: 10.230.0.0/16
via: 10.129.81.10
- to: 10.138.0.0/16
via: 10.129.81.10
但是此配置会发出警告,因为有 2 个默认路由,这当然是有道理的。使用此配置会导致服务器仅在 172.16.8.0 子网上回复,而不会在 172.16.2.0 上回复。如何在 Ubuntu 中正确设置这样的路由表?我习惯使用 CentOS,但网络接口文件似乎在 Ubuntu 中不存在。
我试图在 Ubuntu 中找到与 Windows 中的以下命令等效的命令来添加永久路由:
route -p ADD 10.146.0.0 MASK 255.255.0.0 10.129.81.10 metric 30
route -p ADD 10.230.0.0 MASK 255.255.0.0 10.129.81.10 metric 30
route -p ADD 10.138.0.0 MASK 255.255.0.0 10.129.81.10 metric 30
ip ro 输出
default via 172.16.8.254 dev ens160 proto static
10.129.81.0/24 dev ens192 proto kernel scope link src 10.129.81.215
10.138.0.0/16 via 10.129.81.10 dev ens192 proto static
10.146.0.0/16 via 10.129.81.10 dev ens192 proto static
10.230.0.0/16 via 10.129.81.10 dev ens192 proto static
172.16.8.0/24 dev ens160 proto kernel scope link src 172.16.8.13
最初的问题使用了不正确的子网规范,即 10.138.0.0/12 实际上是 10.128.0.0/12,但
netplan
似乎默默地routes:
忽略了节中不正确的路由前缀;netplan try
和命令不会生成有关此事的警告netplan apply
。与往常一样,用来
ip route show
验证所讨论的前缀的路由是否安装为上述内容提供了提示。