Ubuntu 18.04 netplan 静态路由

Ele*_*iar 14 server network-manager networking

在新的 netplan 配置中需要有关静态路由的帮助。拥有 ubuntu 服务器 18.04 和 2 个网络接口,ethernetwlan。在/etc/netplan/50-cloud-init.yaml 中成功进行基本配置后,我拥有两个网络。但是enp3s0是内网,wlp2s0是wifi路由器。而且我无法通过 wifi 上网。几天后配置/重新配置Yaml文件我无法让它工作。

只删除默认网关/sbin/route del default gw 1​​0.185.0.1有效,但没有路由到内网。路由 -n列表

如何添加这条路线我不知道......

network:
  version: 2
  renderer: networkd
  ethernets:
        enp3s0:
            addresses: []
            dhcp4: true
            gateway4: 10.185.0.1
            nameservers:
              addresses: [10.185.x.x, y.y.y.y]
            routes:
            - to: 10.185.0.0/0
              via: 10.185.0.1
              metric: 100
              table: 101
            routing-policy:
              - from: 10.185.0.0/24
                table: 101

  wifis:
        wlp2s0:
            addresses: []
            dhcp4: true
            optional: true
            gateway4: 192.168.8.1
            access-points:
                 "Wifi":
                    password: "password"
            nameservers:
              addresses: [8.8.8.8,8.8.4.4]
            routes:
            - to: 0.0.0.0/0
              via: 192.168.8.1
              metric: 90
              table: 91
            routing-policy:
              - from: 192.168.8.0/24
                table: 91
Run Code Online (Sandbox Code Playgroud)

UPD:覆盖 config /etc/systemd/network/UseRoutes=false在启动时使用无限网络搜索,设置RouteMetric=700效果更好,启动后通过 wifi 上网!但是添加新路由如:10.180.0.0/16via 10.185.0.1 不会造成影响,不会出现在路由内核路由表中。
我仍然误解了为什么 tracerout 172.16.185.194 会经过 192.168.8.1。我阅读了有关 ip4 表的信息,但- to: 172.16.0.0/12还是/16行不通。

fil*_*den 19

一般来说,你想要的是:

  • gateway4在连接 Internet 的接口上设置单个默认网关(带有)。如果您在两者上都设置了默认网关,那么一半的数据包将被路由到您的 Intranet 并且无法到达它们的目的地。

  • 如果您的 Intranet 有多个子网,那么您需要静态路由才能通过连接到您的 Intranet 的接口到达这些子网。(一个例子可能是将任何RFC1918网路由到该接口,这可能是一个好主意。)

现在,在您的具体示例中,您没有完整地描述您的 Intranet,但让我们假设您的 Intranet 由 10.185.xy 网络组成,换句话说, 10.185.0.0 /16

我们还假设您的 enp3s0 接口允许您访问 Intranet,它将接收 10.185.0.z 子网中的 IP,即 10.185.0.0 /24子网,并且该子网中的网关是 10.185.0.1。

所以你需要一个静态路由来到达10.185的其余部分。x .y 子网,其中 x 不为 0。

您可以使用如下配置进行设置:

network:
  version: 2
  renderer: networkd
  ethernets:
        enp3s0:
            addresses: []
            dhcp4: true
            nameservers:
              addresses: [10.185.x.x, y.y.y.y]
            routes:
            - to: 10.185.0.0/16
              via: 10.185.0.1
  wifis:
        wlp2s0:
            addresses: []
            dhcp4: true
            optional: true
            gateway4: 192.168.8.1
            access-points:
                 "Wifi":
                    password: "password"
            nameservers:
              addresses: [8.8.8.8,8.8.4.4]
Run Code Online (Sandbox Code Playgroud)

在这个编辑过的配置中,请注意:

  • gateway4enp3s0 配置中没有,因为默认情况下您不希望流量进入该接口,只有当流量目的地是通过静态路由设置的内网时。

  • 相反,wlp2s0 不需要任何静态路由,因为它附加了一个默认网关,这就足够了。

  • 不需要路由表和路由策略,你需要做的就是设置一条静态路由(或几条静态路由)来覆盖你的内网内部地址,并通过该网络中网关的IP路由它们可以将您路由到您未直接连接到的其他子网。

请注意,此设置实际上取决于内部网络中的 DHCP 服务器为您提供的某些内容,例如您的接口在 10.185 中。0 /24 网络,而 10.185.0.1 是您可以在该接口中使用的网关...因此,也许更好的设置是让 Intranet 中的 DHCP 服务器推送静态路由(而不是在 netplan 中配置它们) .) 这样,如果重新配置 Intranet,可能是为了更改网关的 IP,或者可能扩展为包括其他 RFC1819 专用范围,则只需要重新配置 DHCP 服务器,而无需重新配置其他所有内容...

但是,如果 DHCP 服务器不受您的控制,那么这种设置可能是可以接受的,假设内部网络不会经常重新配置,因此网关 IP 会发生变化。您可能需要考虑向所有 RFC1918 范围添加静态路由,因为这些在 Internet 中将无效,因此它们可能仅在 Intranet 中有效:

routes:
- to: 10.0.0.0/8
  via: 10.185.0.1
- to: 172.16.0.0/12
  via: 10.185.0.1
- to: 192.168.0.0/16
  via: 10.185.0.1
Run Code Online (Sandbox Code Playgroud)

我希望你觉得这有用!