需要有关新 netplan 配置中的静态路由的帮助。有 2 个网络接口的 ubuntu server 18.04,以太网和无线网络. 基本成功后配置在/etc/netplan/50-cloud-init.yaml我有两个网络。但是enp3s0是内联网,wlp2s0是 wifi 路由器。我无法通过 wifi 上网。经过几天的配置/重新配置Yaml文件我无法让它工作。
仅删除默认网关/sbin/route del 默认网关 10.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
UPD:覆盖配置/etc/systemd/network/
。使用UseRoutes=false
会导致启动时无限网络搜索,设置RouteMetric=700
效果更好,启动后可以通过 wifi 上网!但添加新路由(例如:10.180.0.0/16
通过 10.185.0.1)不起作用,不会出现在路由内核路由表中。
我仍然不明白为什么 tracerout 172.16.185.194 会经过 192.168.8.1。我读过有关 ip4 表的内容,但- to: 172.16.0.0/12
还是/16
不起作用。
答案1
一般来说,这里你想要的是:
在连接互联网的接口上设置一个默认网关(使用
gateway4
)。如果您在两个接口上都设置了默认网关,那么一半的数据包将被路由到您的内部网,并且无法到达目的地。如果您的 Intranet 有多个子网,则需要静态路由才能通过连接到 Intranet 的接口到达这些子网。(一个例子可能是路由任何RFC1918子网到该接口,这可能是一个好主意。)
现在,在您的具体示例中,您没有完整描述您的 Intranet,但我们假设您的 Intranet 由 10.185.xy 网络组成,换句话说,10.185.0.0/16。
我们还假设您访问内联网的 enp3s0 接口将接收 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]
在此编辑的配置中,请注意:
enp3s0 配置中没有
gateway4
,因为您不希望流量默认转到该接口,只有当流量发往您的 Intranet 时才转到该接口,该接口是通过静态路由设置的。相反,wlp2s0 不需要任何静态路由,因为它已经连接了一个默认网关,这就足够了。
不需要路由表和路由策略,您需要做的就是设置一个静态路由(或几个静态路由)来覆盖您的 Intranet 中的内部地址,并通过该网络中网关的 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
我希望你觉得这有帮助!
答案2
解决方法,通过两个不同的接口获取互联网和内联网。
Intranet IP : 192.168.10.0/24 , interface enp0s8
Internet IP : 0.0.0.0/0 , interface enp0s3
Nat gateway : 10.0.2.2
rc.local
a)在目录中创建一个文件/etc
。
将静态路由放入其中,如下所示。
#!/bin/sh -e
ip route del 0.0.0.0/0 via 192.168.10.1 dev enp0s8
ip route add 0.0.0.0/0 via 10.0.2.2 dev enp0s3
ip route add 192.168.10.0/24 via 192.168.10.1 dev enp0s8
exit 0
b) 使其可执行并重新启动虚拟机。