Pet*_*tar 8 server dhcp netplan 18.04
我有两个网卡,都是通过 DHCP 控制的。一个有公共IP,第二个私有。
两个接口都在 DHCP 中保留了静态 IP,并且两个接口都获得了正确的 IP,但是有时在重新启动服务器时我无法从公共访问,因为默认路由来自私有 NIC。
如何使用 netplan 永久设置?
公共网卡ens18(IP:213.133.xxx.xxx) 私有网卡ens19(IP:10.10.10.xxx)
我的网络计划配置是:
network:
version: 2
renderer: networkd
ethernets:
ens18:
dhcp4: yes
dhcp6: no
nameservers:
addresses: [8.8.8.8,8.8.4.4]
ethernets:
ens19:
dhcp4: yes
dhcp6: no
Run Code Online (Sandbox Code Playgroud)
问题是 networkd 将启动两个网络,并且都设置了默认网关,并且两者的度量标准相同。
Netplan 目前不允许您跳过在一个接口上设置路由,但是您可以通过基于 netplan 已生成的配置来单独配置 networkd 以告诉它执行此操作。
我已经复制了下面的命令。在这里,我假设 ens19 是您不希望为其设置默认网关的“辅助”接口——请注意,要成功执行此操作,还需要在使用新接口重新启动之前发生(或者您可以复制部分config,省略 MACAddress= 行等,以便它足够通用以匹配新接口)。
sudo cp /run/systemd/network/10-netplan-ens19.network /etc/systemd/network
sudo vi /etc/systemd/network/10-netplan-ens19.network
Run Code Online (Sandbox Code Playgroud)
然后在[DHCP]下添加:
UseRoutes=false # if you don't want to apply any routes from DHCP
RouteMetric=200 # any number above 100 if you want the routes applied, but that they are less preferred.
Run Code Online (Sandbox Code Playgroud)
如果您还没有该文件(即您还没有附加接口),那么您可以复制另一个为 DHCP 设置的接口的内容,并删除 MACAddress=。
通常,该文件应如下所示:
[Match]
Name=interfacename
[Network]
DHCP=ipv4
[DHCP]
UseMTU=true
RouteMetric=200 # or UseRoutes=false, as you prefer.
Run Code Online (Sandbox Code Playgroud)
小智 7
对于静态接口,只是跳过gateway4(或gateway6)配置选项会导致 netplan 不为该接口创建默认路由。然后,如果您需要使用routes元素(字典数组)的额外路由
对于 DHCP 接口,您可以执行以下操作:
dhcp4-overrides:
route-metric: 100
Run Code Online (Sandbox Code Playgroud)
只需增加后续接口的指标,您应该会很好。
(参见:https : //netplan.io/examples)
要停止DHCP接口netplan从设置缺省路由,刚刚成立use-routes的dhcp4-overrides以false。
eth2:
dhcp4: true
dhcp4-overrides:
use-routes: false
Run Code Online (Sandbox Code Playgroud)
此外,最好不要/etc/netplan/50-cloud-init.yaml直接编辑,而是:
/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg.cloud-init clean -r以重新启动。(这会将云配置中的更改传播到netplan配置)小智 5
使用两个网卡是有技巧的。我更喜欢静态配置并定义路由表,这里有一些提示:
在下面的示例中,请注意每个 NIC 都有自己的网关,并且 eno2 具有系统的默认网关,如果您想要故障安全行为,请查看接口绑定或通过 iproute2 手动查看(阅读更多)
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses: [ 88.88.24.26/29, "8888.ffff:1:20::c02/64" ]
routes:
- to: 0.0.0.0/0
via: 88.88.24.25
metric: 40
table: 400
routing-policy:
- from: 88.88.24.26/29
table: 400
match:
macaddress: 0c:c4:7b:0b:7b:eb
set-name: mainInf
gateway6: "8888.ffff:1:20:0:0:0:1"
nameservers:
search: [ mydomain.com ]
addresses:
- 8.8.8.8
- 1.1.1.1
- "2606:4700:4700::1111"
eno2:
addresses: [ 88.88.51.44/29, "8888.ffff:1:20::fa02/64" ]
gateway4: 88.88.51.41
routes:
- to: 0.0.0.0/0
via: 88.88.51.41
metric: 40
table: 200
routing-policy:
- from: 88.88.51.41/29
table: 200
match:
macaddress: 0c:c4:7b:0b:7b:bb
set-name: support
gateway6: "8888.ffff:1:20:0:0:0:1"
nameservers:
search: [ mydomain.com ]
addresses:
- 8.8.8.8
- 1.1.1.1
- "2606:4700:4700::1111"
Run Code Online (Sandbox Code Playgroud)