Netplan 具有 2 个 NIC,每个 NIC 连接到不同的网关

Big*_*gen 5 ubuntu linux-networking

有人熟悉 Netplan 吗?

我对如何使用 Netplan 配置具有两个 NICS 的 Ubuntu 18 服务器有点困惑。每个 NIC 都位于单独的子网上。它们直接连接到路由器上的单独路由器接口(这是 SMB 路由器,因此每个接口都配置为不同的子网)。

例如,在服务器上,我有两个如下所示的 NIC 以及它们所需的适当信息:

eth0 - 192.168.2.2/24 网关 - 192.168.2.1 dns - 192.168.2.1

eth1 - 192.168.22.2/24 网关 - 192.168.22.1 dns - 192.168.22.1

我正在尝试 netplan.io 上的源路由示例,但这并不完全是我想要的。我不想仅通过一个接口路由所有传出流量。我需要能够通过 eth0 的网关将流量从 eth0 路由出去,并且我需要能够通过 eth1 的网关将流量从 eth1 路由出去。

我将让路由器通过防火墙规则处理两个子网之间的路由。我只需要 Neplan 与我的两个 NIC 配合良好,并让我设置两个子网,每个子网都有自己的网关信息。有任何想法吗?

小智 3

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      addresses:
       - 192.168.2.2/24
      dhcp4: no
      routes:
       - to: 192.168.2.0/24
         via: 192.168.2.1
         table: 101
      routing-policy:
       - from: 192.168.2.0/24
         table: 101
    ens5:
      addresses:
       - 192.168.22.2/24
      dhcp4: no
      gateway4: 192.168.22.1
      routes:
       - to: 192.168.22.0/24
         via: 192.168.22.1
         table: 102
      routing-policy:
        - from: 192.168.22.0/24
          table: 102
Run Code Online (Sandbox Code Playgroud)

源路由

可以将路由表添加到特定接口以允许在两个网络之间进行路由:

在下面的例子中,ens3是在192.168.2.0/24网络上,ens5是在网络上192.168.22.0/24。这使得任一网络上的客户端都可以连接到另一个网络,并允许来自正确接口的响应。

此外,默认路由仍被分配为ens5允许任何其他流量通过它。
不幸的是,这是使用两个独立网关的最接近的方法,我发现我尝试添加gateway43个网关ens,并且防火墙检测欺骗,因为由于某种原因,netplan 将以错误的方式返回流量。明天我将把 netplan 回滚到 ifupdown 以便使用路由表等更加灵活。
参考这里