我在一台 Ubuntu 22.04.5 LTS 服务器上。我正尝试使用 netplan 设置一个虚拟网桥,并将绑定作为从属。我习惯使用 nmcli,并且知道如何使用 nmcli 来执行此操作,但 netplan 胜过 nmcli。我的绑定已经设置好了。现在我需要将网桥添加到我的 netplan yaml 文件中。我该怎么做?
我想在networkd 中使用Netplan 中不可用的选项。在适当的时候,这可能是可以实现的。在那之前,有没有办法实现自定义网络代码,使我渲染的网络配置具有以下行?
[Network]
KeepConfiguration=dhcp-on-stop
我希望 Netplan YAML 文件中有一些隐藏的配置可用于实现此目的。
非常欢迎其他解决方案。
我无法获得关于如何为我们所看到的常见网络设置配置网络规划的良好思维导图。
- 两个网络接口
- 网络接口 A,连接到互联网 10.0.1.40/24,通过 DHCP 分配
- 网络接口 B,通过分配静态 IP (192.168.50.20/24) 的 192.168.50.1/24 连接到 192.168.50.1/24 上的网络
就像是:
network:
version: 2
ethernets:
eno1:
dhcp4: yes
enp6s0f1:
dhcp4: no
addresses:
- 192.168.50.20/24
gateway4: 192.168.50.1
看起来应该可行,但应用此后,似乎要么
- 服务器失去互联网访问权限,并且静态 IP 地址的优先级低于 dhcp 接口?那可能吗?
- 服务器可以访问网络,但无法与网络上的任何设备通信
192.168.50.1/24
(可能使用了错误的以太网卡)。
FWIW,从 netplan 中删除非 dhcp 接口并仅使用sudo ip addr add 192.168.50.20/24 dev eno2
“正常工作”,但是在重新启动后不会持续存在。
最终的路由表如下所示:
$ ip route
default via 192.168.50.1 dev enp6s0f1 proto dhcp src 192.168.50.11 metric 100
default via 10.1.10.1 dev eno1 proto dhcp src 10.1.10.178 metric 100
10.1.10.0/24 dev eno1 proto kernel scope link src 10.1.10.178
10.1.10.1 dev eno1 proto dhcp scope link src 10.1.10.178 metric 100
192.168.50.0/24 dev enp6s0f1 proto kernel scope link src 192.168.50.11
192.168.50.1 dev enp6s0f1 proto dhcp scope link src 192.168.50.11 metric 100
在本例中,是192.168.50.1
没有公共 Internet 访问权限的静态网络,但10.1.10.1
不使用路由。
我在 Raspberry Pi 4 上安装了官方 Ubuntu Server 22.04 映像。我还在network-config
SD 卡上的文件中配置了无线网络。
该文件由 cloud-init 转换为插入/etc/netplan/50-cloud-init.yaml
以下序言的文件:
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
我对这种说法持怀疑态度——如果我修改原始/boot/firmware/network-config
文件,它不会导致50-cloud-init.yaml
重新生成。
另一方面,cloud-init.service
和cloud-config.service
都仍然启用并且似乎在启动时运行。
正如标题所示,我在设置网络时遇到问题,以便服务器可以访问互联网。在我布置基础设施时请耐心等待。
所有 3 台服务器均由Hetzner托管。网关和服务器 1 是云服务器,而服务器 2 是通过 vSwitch 连接的专用服务器。以下是有关此设置的一些文档:Connect Dedicated Servers (vSwitch)
服务器 1 和服务器 2 不应有公共 IP 地址,所有流量都经过网关。
所有端口 53 (DNS) 请求都路由到网关。
我有一个从我的电脑到专用网络的有效 VPN 连接。
Network 10.1.0.0/16
Static Route 0.0.0.0/0 -> 10.1.0.2
Subnet 10.1.0.0/24
Gateway 10.1.0.2 (pfSense - OpenVpn, DnsResolver)
Server1 (Cloud) 10.1.0.3
Subnet 10.1.1.0/24
Server2 (Dedicated) 10.1.1.3
服务器 1
Ubuntu 22.04
- 通过 vpn 访问
- 能ping/访问10.1.0.1、10.1.0.2、10.1.1.3
- 可以ping/访问互联网
- 可以解析任何域(外部和网络内部通过 pfSense DNS 解析器)
ip route
default via 10.1.0.1 dev enp7s0 proto static onlink
10.1.0.0/16 via 10.1.0.1 dev enp7s0 proto dhcp src 10.1.0.3 metric 100
10.1.0.1 dev enp7s0 proto dhcp scope link src 10.1.0.3 metric 100
169.254.169.254 via 10.1.0.1 dev enp7s0 proto dhcp src 10.1.0.3 metric 100
网络计划
network:
version: 2
renderer: networkd
ethernets:
enp7s0:
dhcp4: true
routes:
- to: default
via: 10.1.0.1
nameservers:
addresses:
- 10.1.0.2
- 8.8.4.4
- 8.8.8.8
tracepath -n 10.1.1.3
1?: [LOCALHOST] pmtu 1450
1: 10.1.0.1 2.623ms
1: 10.1.0.1 1.490ms
2: 169.254.255.255 1.934ms asymm 1
3: 10.1.1.3 25.501ms reached
Resume: pmtu 1450 hops 3 back 2
tracepath -n google.com
1?: [LOCALHOST] pmtu 1450
1: 10.1.0.1
1: 10.1.0.1
2: 10.1.0.2
3: 172.31.1.1
服务器 2
Ubuntu 22.04
- 通过 vpn 访问
- 能ping/访问10.1.0.2、10.1.0.3
- 无法 ping 通 10.1.1.1
- 无法 ping/访问互联网
- 可以解析任何域(外部和网络内部通过 pfSense DNS 解析器)
ip route
default via 10.1.1.1 dev enp2s0.4000 proto static
10.1.1.0/24 dev enp2s0.4000 proto kernel scope link src 10.1.1.3
网络规划
network:
version: 2
renderer: networkd
ethernets:
enp2s0: {}
vlans:
enp2s0.4000:
id: 4000
link: enp2s0
mtu: 1400
addresses:
- 10.1.1.3/24
routes:
- to: default
via: "10.1.1.1"
nameservers:
addresses:
- 10.1.0.2
- 8.8.4.4
- 8.8.8.8
tracepath -n 10.1.0.3
1?: [LOCALHOST] pmtu 1400
1: 10.1.1.1 0.393ms
1: 10.1.1.1 0.364ms
2: 10.1.0.3 25.265ms reached
Resume: pmtu 1400 hops 2 back 3
tracepath -n google.com
1?: [LOCALHOST] pmtu 1400
1: no reply
正如您希望看到的那样,我遇到的问题是专用服务器(服务器 2)似乎无法连接到它的子网网关(10.1.1.1)及以后,但它可以连接到私有中的其他服务器网络就好了。
也许我看错了东西?
我已经设置了一个 ovs 网桥,以便利用 libvirt 的支持 vlan 的虚拟网络。按照建议,主机网络接口配置在 ovs 端口上,而不是直接配置在网桥上。主机 nic 接收标记和未标记的流量。后者为主机自己的接口。我还希望该接口具有特定的 MAC。
如何在 netplan 中做相当于ovs-vsctl set interface vlan0 mac=\"00:11:22:33:44:55\"
?
我不确定如何在 vlan0openvswitch:
部分中定位 ovs 接口配置。
mac:
并且other-config:hwaddr
是 ovs 端口的无效/无效选项。
迄今为止:
network:
version: 2
ethernets:
enp0s31f6: {}
bridges:
ovsbr0:
interfaces: [enp0s31f6]
openvswitch: {}
vlans:
vlan0:
id: 0
link: ovsbr0
openvswitch: {}
addresses: [192.168.0.11/24]
gateway4: 192.168.0.1
nameservers:
search: [home.lan]
addresses: [192.168.0.10]
或者这在 netplan yaml 中是不可能的,我应该求助于 networkd-dispatcher 挂钩脚本?
编辑:使用 networkd-dispatcher 并删除不推荐使用的选项,我现在有了这个适合我的配置。最好知道 netplan yaml 配置中是否支持额外的 openvswitch 命令,以将其全部保存在一个地方。
- Ubuntu 20.04.5
- openvswitch-开关 2.13.8-0ubuntu1.1
- netplan.io 0.104-0ubuntu2~20.04.2
#/etc/netplan/01-ovsbr0.yaml
network:
version: 2
renderer: networkd
ethernets:
enp0s31f6: {}
bridges:
ovsbr0:
interfaces: [enp0s31f6]
link-local: []
openvswitch: {}
vlans:
vlan0:
id: 0
link: ovsbr0
openvswitch: {}
addresses: [192.168.0.11/24]
routes:
- to: default
via: 192.168.0.1
nameservers:
search: [home.lan]
addresses: [192.168.0.10]
#!/bin/sh
#/etc/networkd-dispatcher/configuring.d/99-vlan0-mac.sh
IFACE_MATCH='vlan0'
MAC='00:11:22:33:44:55'
[ "$IFACE" = "$IFACE_MATCH" ] && /usr/bin/ovs-vsctl set interface $IFACE mac=\"$MAC\"
我的服务器安装 Ubuntu 20.04.3 LTS 运行时出现以下错误sudo netplan try
:
An error occurred: 'NetplanApply' object has no attribute 'state'
Reverting.
Job for systemd-networkd.service failed because the control process exited with error code.
See "systemctl status systemd-networkd.service" and "journalctl -xe" for details.
Traceback (most recent call last):
File "/usr/share/netplan/netplan/cli/commands/try_command.py", line 87, in command_try
NetplanApply().command_apply(run_generate=True, sync=True, exit_on_error=False, state_dir=self.state)
File "/usr/share/netplan/netplan/cli/commands/apply.py", line 199, in command_apply
if self.state:
AttributeError: 'NetplanApply' object has no attribute 'state'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/sbin/netplan", line 23, in <module>
netplan.main()
File "/usr/share/netplan/netplan/cli/core.py", line 50, in main
self.run_command()
File "/usr/share/netplan/netplan/cli/utils.py", line 310, in run_command
self.func()
File "/usr/share/netplan/netplan/cli/commands/try_command.py", line 69, in run
self.run_command()
File "/usr/share/netplan/netplan/cli/utils.py", line 310, in run_command
self.func()
File "/usr/share/netplan/netplan/cli/commands/try_command.py", line 98, in command_try
self.revert()
File "/usr/share/netplan/netplan/cli/commands/try_command.py", line 127, in revert
NetplanApply().command_apply(run_generate=False, sync=True, exit_on_error=False, state_dir=tempdir)
File "/usr/share/netplan/netplan/cli/commands/apply.py", line 249, in command_apply
utils.systemctl_networkd('start', sync=True, extra_services=netplan_wpa + netplan_ovs)
File "/usr/share/netplan/netplan/cli/utils.py", line 177, in systemctl_networkd
subprocess.check_call(command)
File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['systemctl', 'start', 'systemd-networkd.service', 'netplan-ovs-cleanup.service']' returned non-zero exit status 1.
我最初以为我做了一个小改动/etc/netplan/01-netcfg.yaml
但又恢复到原来的错误仍然存在时我犯了一个错误。
我该如何解决这个问题?
我使用的是 Ubuntu 20.04.3 LTS,无法使用 WPA3 连接 wifi;我在/etc/netplan/01-network.yaml中试过这个:
network:
version: 2
renderer: networkd
wifis:
wlan0:
dhcp4: true
access-points:
"MYSID":
password: "mypassword123"
如果我将路由器设置为使用 WPA2 身份验证,它可以正常工作,但如果我将其设置为 WPA3,它会失败。为了使这项工作与 WPA3 一起工作,我应该怎么做?
请注意,我的问题是专门关于将WPA3与netplan一起使用networkd作为渲染器(使用 NetworkManager 的解决方案不是我想要的)
当我在 Ubuntu Server 20.04 中使用 Netplan 设置静态 IP 时,我遇到了互联网速度问题。
我使用的是戴尔 PowerEdge R710,没有 wifi 卡,所以我在论坛中找到的所有涉及 wifi 的解决方案都不起作用。我还尝试了 Netplan 中的一些其他配置以及我在论坛中找到的其他建议,但它确实没有用。
如果我禁用静态 IP 并让它动态,互联网速度就可以了。有谁知道如何解决这个问题?
这是我的50-cloud-init.yaml
aiec@camera02:/etc/netplan$ sudo nano 50-cloud-init.yaml
network:
renderer: networkd
ethernets:
eno1:
dhcp4: no
addresses: [192.168.253.188/24]
gateway4: 192.168.253.1
optional: true
nameservers:
addresses: [8.8.8.8,8.8.4.4]
version: 2
速度测试结果(如果我使用动态 IP,速度会达到 40~45 Mbits/s)
aiec@camera02:/etc/netplan$ speedtest
Retrieving speedtest.net configuration...
Testing from Live Telecom (177.66.74.126)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by StarFibra Telecomunicações (Foz do Iguaçu) [4.05 km]: 58.244 ms
Testing download speed................................................................................
Download: 2.12 Mbit/s
Testing upload speed......................................................................................................
Upload: 1.37 Mbit/s
和ifconfig -a
aiec@camera02:/etc/netplan$ ifconfig -a
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.253.188 netmask 255.255.255.0 broadcast 192.168.253.255
inet6 fe80::be30:5bff:fefe:671 prefixlen 64 scopeid 0x20<link>
ether bc:30:5b:fe:06:71 txqueuelen 1000 (Ethernet)
RX packets 162999 bytes 174965858 (174.9 MB)
RX errors 0 dropped 6421 overruns 0 frame 0
TX packets 78785 bytes 42246324 (42.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether bc:30:5b:fe:06:73 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno3: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether bc:30:5b:fe:06:75 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno4: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether bc:30:5b:fe:06:77 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 1084 bytes 96330 (96.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1084 bytes 96330 (96.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0