如何将路由命令转化为netplan规则?

如何将路由命令转化为netplan规则?

我的 Linux PC 上有两个网络接口。一个是 eth0,另一个是 eth1。这是 netplan yaml 文件:

network:
version: 2
renderer: NetworkManager
ethernets:
  eth0:
    addresses: [192.168.20.3/24]
    gateway4: 192.168.20.1
    nameservers:
      addresses: [192.168.10.1]
    routes:
    - to: 224.100.100.0/24
      via: 192.168.20.1

  eth1:
    addresses: [192.168.20.3/24,192.168.10.8/24]
    nameservers:
      addresses: [192.168.10.1]

eth1 和 eth0 具有相同的网络段 192.168.20.x

有一个传感器,其 IP 为 192.168.20.13,但我无法 ping 通它,我可以执行路由命令:

route add -host 192.168.20.13 dev eth1

可以ping通。

我的问题是如何在 netplan yaml 文件中设置规则?

答案1

这是一个应该可以工作的配置。(请注意缩进,这在您的问题中是不正确的,但在您的系统磁盘上可能是正确的。)

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth0:
      addresses: [192.168.20.3/24]
      nameservers:
        addresses: [192.168.10.1]
      routes:
      - to: 0.0.0.0/0
        via: 192.168.20.1
    eth1:
      addresses: [192.168.20.3/24,192.168.10.8/24]
      nameservers:
        addresses: [192.168.10.1]
      routes:
      - to: 192.168.20.13/32
        via: 192.168.20.3

与您原始配置的区别:

  • 删除到 224.100.100.0 的静态路由,该路由与您的默认路由重复。
  • 用更清晰的条目gateway4替换使用routes
  • 在 eth1 上为传感器添加主机路由。

建议您不要在网络的不同段上使用相同的网络地址。这违反了路由网络的基本原则。

相关内容