网络
这一章讲主机的网络:主机自己的管理地址怎么设和改、网络页上的网络和物理端口、给虚拟机接网络、SR-IOV 和整口直通、要开的端口,以及虚拟机上不了网时先查什么。第一次拿到地址见安装,建虚拟机时选网络见虚拟机管理。
1. 几个概念
- 物理端口:主机上的网口(
igb0、ixl1……)。网络页的 物理端口 里列出它们。 - 管理口:承载主机自己地址(也就是你打开网页用的那个地址)的网口。装机时在第一个拿到 DHCP 的口上,之后可以改。
- 网络:keel 里的一个二层网段,有名字,对应"哪个物理端口、带不带 VLAN 标签"。虚拟机的网卡接到一个网络上,不用关心下面是哪个口、哪个网桥。同一个网络可以放在几个端口上。
- keel 在背后为每个网络建网桥(
if_bridge)和虚拟网卡(tap)并接好,网页上不用碰它们。 - 虚拟机的网卡有四种接法:自动、虚拟网卡、SR-IOV VF、整口直通,见 §5、§6。
注意:1.0 的网页上没有 VALE(netmap 做的软件交换机)的开关,网络都是网桥加 tap。
2. 主机的管理地址
打开 配置 → 网络 → 管理网络。
当前状态 列出主机每个接口(接口、类型、地址):类型是 端口、VLAN、网桥 或 其他,有 guest 在用的口还写着"N 个 guest 网卡"。没有网线的写 没有链路。keelOS 没有驱动的网卡单独列出,可以直通给虚拟机,见设备直通。
改管理地址:
- 在 接口 里选承载地址的接口。要走 VLAN 的话勾 端口上的 VLAN,选端口并填 VLAN 号(1–4094),keel 建出
端口.VLAN。 - 选 DHCP 或 静态。静态要填 IPv4 地址(CIDR)(例如
192.168.1.10/24)、网关、DNS 服务器、搜索域;DHCP 时网关和 DNS 由 DHCP 提供。IPv6 可以选 关、SLAAC(路由器通告)或静态(IPv6 地址(CIDR)、IPv6 网关)。 - 点 测试并应用。改动立即生效,旧地址先留着;页面提示你在限定的秒数内从新地址确认: - 新地址能打开:浏览器会提示证书不受信任(新地址还没接受过),点"高级"→"继续前往"。打开新地址就是确认,改动这时才写进启动分区,并自动登录。 - 新地址打不开:时间一到,keel 自动恢复原来的设置,页面回到旧地址。需要马上撤销点 立即撤销。
- 改了地址之后,keel 的证书从 keel serve 下次启动起包含新地址。
注意:已经有 guest 在用的口是网桥的成员,地址放在网桥上,网桥不动;页面会告诉你("……是网桥 … 的成员")。
注意:搞错了、页面也上不去时,在主机的屏幕(控制台)上用
keel host net看和改;第一次启动没有 DHCP 时屏幕上的问答同样用keel host net setup重来。
主机在其它网络上的地址
页面下方 主机在其它网络上的地址:除了管理地址,主机还可以在某个网络上再有一个静态 IPv4 地址,比如在万兆交换机上放一个地址,给虚拟机迁移用。添加地址 里选 交换机或网络 和 地址(CIDR),保存后列表显示 接口、链路(速率)和 状态(在用 或 没生效)。地址放在那个网络的网桥上,虚拟机照常使用这个网络。
有管理端(keelMGR)时,迁入时用哪个地址 默认 自动:管理端选两台主机都有地址的网络(链路快的优先),没有就用管理地址。
HTTPS 证书
配置 → 网络 → 证书 可以导入自己的证书,浏览器就不再提示不受信任。没有导入时用 keel 自己的自签证书。远程桌面(keel-rdp)始终用 keel 自己的证书,导入或删除证书不会断开 RDP。
3. 网络页
配置 → 网络 有五个子页:网络、物理端口、端口上发现的、拓扑,加上面的 管理网络 和 证书。
3.1 物理端口与探测
物理端口 一行一个口:链路、模式(access 或 trunk)、原生 VLAN、VLAN、SR-IOV、交换机(对端的交换机和端口)、用途(谁在用)。
点 探测,keel 在这个口上听若干秒:从交换机的 LLDP/CDP 读出对端交换机和原生 VLAN,从各 VLAN 上的流量看出子网、路由器和 DHCP 服务器。勾上"发 DHCP DISCOVER(不会占用地址)"可以更准。探测只听、不改任何配置。
- 交换机不发 LLDP/CDP 时会提示 交换机不发 LLDP/CDP:交换机和原生 VLAN 请手动填;点 编辑,填 模式、带标签的 VLAN(
10,20;空 = 按探测;none= 没有)、原生 VLAN 编号、交换机和端口。手动填的带 ✎,探测到的带 ◉。 - 清除 忘掉探测到的结果(口和 guest 不变,重新探测即可);也可以连手动填的一起清掉。
3.2 端口上发现的
端口上发现的 把探测结果归并成候选网络:同一个 DHCP 服务器、路由器、子网或同一批主机算同一个网络。每条有 依据,点 建立 就建出这个网络;已有的显示"已有:名字"。没探测过时提示"先探测物理端口"。
3.3 建网络
- 点 网络 子页的 新建网络(要主机写权限)。
- 名字:小写字母、数字和
_,以字母开头,最多 12 个字符(例如lan、office_2)。建好不能改名。 - 所在端口:选端口,填 VLAN 号(
0= 不带标签)。+ 端口 可以再加一个。 - 可选填 子网、备注,点 保存。
网络卡片上列出所在端口,以及每块接在上面的虚拟机网卡:哪台虚拟机、哪个网卡、接法,运行中的还显示实际接到哪个端口(虚拟网卡 · igb0:100)和原因;没在运行的写 没在运行。有虚拟机在用的网络不能 删除。
注意:把一个网络第一次放到某个端口上、不带标签时,keel 要关掉这个端口的 offload(TSO、校验和),端口会重置几秒钟;主机的管理地址在这个口上的话,页面可能短暂断开。对话框里会先提醒。
拓扑 子页画一张图:左边物理端口,中间网络,右边虚拟机的网卡。
4. 例子:办公网加一个隔离的 VLAN
交换机上 igb0 是 trunk 口,原生 VLAN 是办公网,VLAN 20 是访客:
- 物理端口 里点
igb0的 探测,确认看到了办公网(不带标签)和 VLAN 20。 - 端口上发现的 里对办公网点 建立,名字叫
lan;再建一个名字guest、端口igb0、VLAN20的网络。 - 建虚拟机时网卡选
lan或guest。
5. 给虚拟机接网络
新建向导的 网络 一步,或详情页 编辑 → 网络 里,每块网卡有三个下拉框:
- 网络:接哪个网络。列表里可能还有 交换机 名字、网桥 名字,那是以前用命令行或 API 建的;网页的 网络 页建的是网络。主机上没有任何网络时这一步会提示去 网络 页建一个,已填的内容保留。
- 接法:自动(虚拟网卡;这台虚拟机在主机 reload 时是关机的、且网络上有空闲 VF 时用 VF)、虚拟网卡、SR-IOV VF、整口直通。
- 型号:
virtio-net(快;Linux 自带驱动,Windows 要装 virtio-win 驱动)、e1000、pcnet。接 VF 或直通时型号不用选。
+ 网卡 加一块,✕ 去掉。MAC 由 keel 生成,克隆时重新生成;详情页展开能看到每块网卡的 MAC 和主机看到的 IP。
改网络是马上生效的,guest 的链路不断(换了网段要在 guest 里续租 DHCP);改型号、接法、增删网卡要等下次重启。网卡接的网络、交换机或网桥已经不存在时,虚拟机起不来,详情页会标出来,换成现有的即可(配置 → 问题 里也有)。
路由器、防火墙类虚拟机
OpenWrt、OPNsense、RouterOS 这类虚拟机:
- 最多一个口接到办公网(一个网络,或一个 VF,不能两个都有),其余口接只在本机的隔离网络。路由器镜像默认常把除 WAN 以外的口全桥在一起,同时接两个通到办公网的口会形成环,整个办公网瘫痪。向导对路由器模板不允许把多个网口接到同一个网络。
- 每块虚拟网卡默认只能用自己的 MAC 发包(防环)。虚拟机里自己再跑桥接、VRRP、容器的 macvlan 时会被它丢包;网页上还没有关掉这个过滤的开关,需要时在虚拟机配置里设
allow_mac_spoofing(见命令行 keel)。
6. SR-IOV 和整口直通
- SR-IOV VF:支持的网卡(Intel X710、X550、I350 等)可以把一个物理口分成多个虚拟口(VF),每个 VF 直通给一台虚拟机,guest 里是真实网卡的驱动,性能最好。配置 → SR-IOV 里每个口显示"VF:已建 N 个 / 最多 M 个",用 VF 个数 设置;每个 VF 有固定的 MAC、VLAN 和使用它的 guest。
- 把 VF 用在某个网络上:网卡的接法选 SR-IOV VF。VF 所在口要在这个网络里。
- 整口直通:整块网卡给一台虚拟机,在 配置 → PCI 直通 里先 保留给直通。
注意:带 VF 的虚拟机在主机 reload 时是关机再重启,不是挂起;只有整块设备直通的会被暂停。改 VF 个数通常会让该口的链路重新协商,交换机 STP 约 30 秒不通;主机正在用这个口时会提示断网约 30 秒。
细节见设备直通。
7. 端口和防火墙
keelOS 主机自己不放行"任意端口",下面是你的防火墙或路由器上需要放行的:
| 用途 | 端口 | 说明 |
|---|---|---|
| keel 网页和 API | HTTPS 443 | 虚拟机的 VNC 控制台也在网页里,走这个端口。 |
| 远程桌面(RDP) | 每台虚拟机一个端口 | 端口写在虚拟机详情页的 RDP 一行。 |
| keelRM | 它自己的地址上的 HTTPS 443 | 见下。 |
keelRM 是独立管理口,像服务器的 BMC:用主机另一个插了线的网口,有自己的地址,页面是 https://<它的地址>/,访问 80 会转过去。地址在 keelRM 的设置里选 DHCP 或固定地址(地址/前缀、网关)并显示在页面上,主机的网口和地址不动。详见 keelRM 管理口。
8. 万兆网络
- 万兆口和千兆口用法相同;主机的管理地址、网络都不用特别设置。
- 给迁移用的万兆交换机,在 §2 的 主机在其它网络上的地址 里放一个地址。
- X550 等
ix口的 VF 个数默认有上限;SR-IOV 页的"改设置(重启后生效)"可以把上限调高,要重启主机。 - 页面上没有万兆专用的调优项。
9. 虚拟机没有网络
按顺序查:
- 网卡接的网络还在吗:虚拟机详情页网卡一行是否标红"不存在"。配置 → 问题 里能修。
- 网络放对端口了吗:网络 页看这个网络的 所在端口 和 VLAN。VLAN 号要和交换机上一致;不确定就在 物理端口 里 探测。
- 交换机口:交换机端口是 trunk 还是 access?trunk 要允许这个 VLAN。口 链路 是否有。
- guest 里:Windows 的
virtio-net要装 virtio-win 驱动,否则没有网卡。DHCP 没拿到地址时看 网络 页卡片里这块网卡"实际接到哪个端口",再在 物理端口 的 探测到的 里看这个 VLAN 有没有 DHCP。 - 接 VF 的虚拟机:VF 所在口的 VLAN 要和网络的 VLAN 一致;guest 里要有 VF 的驱动(OpenWrt 默认镜像没有 iavf,要装
kmod-iavf)。 - 办公网整个变慢或瘫痪:想想有没有路由器类虚拟机同时有两个口接到办公网,见 §5。
- 主机自己上不了网页:看 §2 的恢复办法;等不及就用主机屏幕上的
keel host net。
更多排错见故障排查与日志。
10. 1.0 不做的事
- 网页上不建 VALE 交换机,也不改
if_bridge之外的后端。 - 防火墙、NAT、DHCP 服务不在主机上:要的话跑一台路由器虚拟机,见 §5。
- 网页上没有网口绑定(LAG/LACP);STP 不开,防环靠虚拟网卡的源 MAC 过滤。