Netplan 中的路由...使用路由:示例中表示未知密钥

Net*_*key 2 routing netplan

我有两个 NIC 都连接到专用网络,一个连接到死胡同,另一个可以通过 NAT 连接到 Internet。

当我打开这两个默认路由时,它会切换到无处可去的网络,并且所有网络都不再起作用。

我试过了

routes:
 - to: 0.0.0.0/0
 via: <gateway address>
 metric: 1
Run Code Online (Sandbox Code Playgroud)

从该死的手册页和 netplan 生成返回未知的关键路由

当文档明显错误时,我会喜欢它。

任何人都知道我如何告诉 netplan 将哪个网卡用于互联网?设置默认路由?

非常令人沮丧。

谢谢。

编辑:好的...看来我已经想通了。路由与接口相关联,而不是全局的。就像在...

ethernets:
  enp0:
    name: enp0s3
    addresses: [192.168.0.128/24]
    gateway4: 192.168.0.1
    nameservers:
      addresses: [8.8.8.8,8.8.4.4]
    routes:
     - to: <network>
     via: <gateway address>
     metric: 1
  enp1:
   <etc...>
    routes:
     - to: <network>
     via: <gateway address>
     metric: 5
Run Code Online (Sandbox Code Playgroud)

至少 generate 不会抛出错误并且路由可以改变。

小智 6

正如您在问题中所述,netplan 手册页是错误的。在手册页routes中的示例中,错误地放置在与以下相同的级别ethernets

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    id0:
      match:
        macaddress: 00:11:22:33:44:55
      wakeonlan: true
      dhcp4: true
      addresses:
      - 192.168.14.2/24
      ...
  routes:
  - to: 0.0.0.0/0
    via: 11.0.0.1
    metric: 3
Run Code Online (Sandbox Code Playgroud)

正确的做法是将路由放在路由经过的接口下,例如:

network:
  ...
  ethernets:
    id0:
      addresses:
      - 10.0.0.2/24
      ...
      routes:
      - to: 192.168.0.0/16
        via: 10.0.0.1
Run Code Online (Sandbox Code Playgroud)