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

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

有谁对 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 配合使用,并让我设置两个子网,每个子网都有自己的网关信息。有什么想法吗?

答案1

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

源路由

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

在下面的示例中,ens3192.168.2.0/24网络上,并且ens5192.168.22.0/24网络上。这使任一网络上的客户端都可以连接到另一个网络,并允许响应来自正确的接口。

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

答案2

您似乎以错误的方式进行路由,您不能有两个默认网关,好吧,从技术上讲,您可以使用不同的指标,但那是用于故障转移 nit 接口路由。您有一个 ens3 和 ens5 192.168.2.22 或 192.168.22.22 。将其视为默认路由,即声明 0.0.0.0/0 通过 192.168.2.1 作为网关(路由),您需要更具体,例如通过 ens5 路由添加 8.8.8.8/32,这样 google dns 请求就会通过该 nic 。如果您从防火墙收到欺骗警告,则可能有几个原因,1)您的交换机已打开端口安全并且看到一个路由器(同一个 mac 地址上有许多 vlan 接口)2)它可能将非对称路由检测为欺骗,因为只有一半的流量到达。如果您的主机有两个网卡,例如 192.168.2.50 通过 192.168.2.1 路由,另一个网卡 192.168.22.50 通过 192.168.22.1 路由,那么任何想要连接到您主机的设备都必须有反向路由才能回到路由器,(有时会有多个防火墙)另一个原因可能是您连接的交换机是虚拟交换机,默认情况下这是 vmware 配置交换机的方式,您需要对交换机和所连接的网卡使用混杂模式。

答案3

dhcp4: yes您还可以通过 DHPC 客户端动态配置接口:

# networks
network_1 ens3: 10.0.10.0/24
network_2 ens8: 10.0.20.0/24
 
# /etc/netplan/50-cloud-init.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: yes
    ens8:
      dhcp4: yes
      dhcp4-overrides:
        use-routes: false
      routes:
        - to: default
          via: 10.0.20.1
          table: 200
        - to: 10.0.20.0/24
          via: 10.0.20.1
          table: 200
      routing-policy:
        - from: 10.0.20.0/24
          table: 200

答案4

是的,每个 NIC 都可以有一个默认网关并独立工作,但为此您必须需要一个高级路由策略,如下所示:

https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html

相关内容