Ubuntu 22/Netplan 在更改接口时自动添加默认路由规则,阻止其他接口上的互联网访问

Ubuntu 22/Netplan 在更改接口时自动添加默认路由规则,阻止其他接口上的互联网访问

我正在尝试配置一台具有 2 个以太网端口的服务器,以便在不同的子网上工作。我有端口 1,连接到网络 0,目前这也是我的互联网接入源。然后我有端口 2,连接到网络 1 的路由器,该路由器没有互联网接入。

我遇到的问题是,如果我从端口 1 接上电缆,并将其移至路由器,以便为网络 1 的路由器提供互联网访问,则似乎会添加一条新的默认路由规则。(最终,我将同时连接两个端口,并且流量将同时流向/流出每个端口/网络)

alan@afs:~$ ip route show
default via 192.168.3.1 dev eno1 proto static metric 11 
default via 192.168.0.1 dev enp0s25 proto dhcp src 192.168.0.233 metric 100 

如果我删除顶部规则,则第一个 port/0 网络可以正常工作。但是,在更换电缆后,出于某种原因,该规则会重新应用。

如果我将路由器上的电缆移回端口 1,规则保持不变,我无法访问互联网,因为它仍尝试使用其他接口。但我仍然可以使用此端口通过 ssh 进入系统。

我假设我在 netplan 中存在某些问题或者我的路由策略配置不正确,但我不确定是什么,因为它可以正常工作,因为在接口之间交换电缆之前每个端口都可以正常工作。

任何帮助都将不胜感激,我仍在学习很多东西。

我的 netplan 配置:

network:
   version: 2
   renderer: networkd
   ethernets:
      enp0S25:
         dhcp4: false
         addresses: [192.168.0.233/24]
         routes:
            - to: 0.0.0.0/0
              via: 192.168.0.1
              metric: 1
            - to: 0.0.0.0/0
              via: 192.168.0.1
              table: 1
         nameservers:
           search: [WORKGROUP]
           addresses: [8.8.8.8,8.8.4.4]
         routing-policy:
            - from: 192.168.0.233/24
              table: 1

      eno1:
         dhcp4: false
         addresses:
         - 192.168.3.10/24
         nameservers:
            addresses: [8.8.8.8,1.1.1.1]
            search: [WORKGROUP]
         routes:
            - to: 0.0.0.0/0
              via: 192.168.3.1
              metric: 11
            - to: 0.0.0.0/0
              via: 192.168.3.1
              table: 11
         routing-policy:
            - from: 192.168.3.1/24
              table: 11

编辑:我的另一个问题是,这是最好的方法吗?我经常更换以太网端口进行测试,并且经常需要同时访问两个网络。但是,如果只有一个接口可以访问互联网,我该如何通过当时拥有该接口的正确接口将流量引导到外部?

答案1

尝试更换区块

         routes:
            - to: 0.0.0.0/0
              via: 192.168.0.1
              metric: 1
            - to: 0.0.0.0/0
              via: 192.168.0.1
              table: 1

         routes:
            - to: default
              via: 192.168.0.1

我也不明白这个块是干什么的

         nameservers:
            addresses: [8.8.8.8,1.1.1.1]
            search: [WORKGROUP]
         routes:
            - to: 0.0.0.0/0
              via: 192.168.3.1
              metric: 11
            - to: 0.0.0.0/0
              via: 192.168.3.1
              table: 11
         routing-policy:
            - from: 192.168.3.1/24
              table: 11

如果您只需要访问子网“192.168.3.0/24”并且永远不会使用它来访问互联网或其他网络,只需删除上面的阻止即可。

基本上将你的文件更改为如下所示

network:
   version: 2
   renderer: networkd
   ethernets:
      enp0S25:
         dhcp4: false
         addresses: [192.168.0.233/24]
         routes:
            - to: default
              via: 192.168.0.1
         nameservers:
           search: [WORKGROUP]
           addresses: [8.8.8.8,8.8.4.4]
      eno1:
         dhcp4: false
         addresses:
         - 192.168.3.10/24

编辑-当前配置:

network:
   version: 2
   renderer: networkd
   ethernets:
      enp0S25:
         dhcp4: true
         routes:
         - to: default
           via: 191.168.0.1
      eno1:
         dhcp4: false
         addresses:
         - 192.168.3.10/24
         routes:
         - to: 0.0.0.0/24
           via: 192.168.3.1

答案2

您已在每个接口上声明了两个默认路由。在 上eno1,您声明了一个路由策略,但两个路由中只有一个设置为使用该路由策略。您想要的是:

     routes:
        - to: 0.0.0.0/0
          via: 192.168.3.1
          table: 11
     routing-policy:
        - from: 192.168.3.1/24
          table: 11

没有必要设定度量。

相关内容