跳转到内容

VLAN ​

做完这一篇,NAS 的一块网卡上多出一个 VLAN 子接口,例如 enp3s0.30。NAS 可以同时在主网和另一个 VLAN(IoT、摄像头、存储专网、访客网)里有地址,而不用多插一根线。

VLAN 要三方配合:交换机、路由器(或三层交换机)和 NAS。OMV 这一端只做一件事:在父接口上加一个带 VLAN 标签(802.1Q)的子接口。

配错 VLAN 会让 NAS 失联

  • 影响范围:新建 VLAN 接口只是多一个接口,一般不影响原有连接;但如果你把当前用来管理 NAS 的接口挪进 VLAN,或者删除、修改了它的父接口,Web、SSH、SMB 都会在应用后断开。
  • 前置条件:交换机上连接 NAS 的端口已经放行了这个 VLAN 的打标签流量(trunk 或混合口);这个 VLAN 里有可用的网关和 DHCP(或你已规划好静态地址);有本机控制台。
  • 回退:点 应用 之前,用黄色提示条上的 撤销;已应用并失联,用控制台的 omv-firstaid 重置网卡,见改坏网络后怎么救。注意它会删除所有接口配置,包括 VLAN。

两种常见用法 ​

用法父接口VLAN 接口注意
NAS 同时在主网和另一个 VLAN保留原来的地址和网关填这个 VLAN 里的地址和掩码,网关留空交换机端口要同时承载原来的不打标签流量和该 VLAN 的打标签流量
NAS 整个搬进某个 VLANIPv4 和 IPv6 的方式都选 禁用,不配地址配地址、网关、DNS交换机端口必须是 trunk 并放行该 VLAN;改错就失联,务必在控制台旁操作

如果交换机端口本来就是该 VLAN 的 access 口(不打标签),NAS 不需要建 VLAN 接口,直接给网卡配这个网段的地址即可。

第二种用法是按配置逻辑写出的,没有在 OMV 8 上实测。拿不准时用第一种。

创建 VLAN 接口 ​

网络 → 接口 → 创建 → VLAN(Network → Interfaces → Create → VLAN):

字段默认值说明
设备自动编辑时显示,名字是 <父设备>.<VLAN id>,例如 enp3s0.30
父设备(Parent device)空候选是所有已配置的非 VLAN 接口:以太网口、Bond、桥接、Wi-Fi。创建后不能改
VLAN id1界面接受 1 到 4095,创建后不能改。填你在交换机和路由器上规划好的编号;4095 在 802.1Q 里是保留值,别用
IPv4、IPv6、高级设置同以太网口见网络接口。没有 WOL 字段
  1. 先在交换机上放行 VLAN,路由器上准备好该网段的网关。
  2. 打开 网络 → 接口,点 创建 → VLAN。
  3. 父设备选网卡(它必须已经出现在接口列表里,也就是在 OMV 里配置过);VLAN id 填编号。
  4. IPv4 方式选 静态,填地址和子网掩码。只想让 NAS 在这个 VLAN 里被访问时,网关留空;这个 VLAN 里没有 DHCP 就不要选 DHCP,否则会一直拿不到地址。
  5. 点 保存,再点黄色提示条上的 应用。

改 VLAN id 或父设备要删除后重建。

示例:给摄像头 VLAN 一个地址 ​

主网是 192.168.1.0/24(不打标签),NAS 的网卡 enp3s0 地址是 192.168.1.20,网关 192.168.1.1。摄像头在 VLAN 30,网段 192.168.30.0/24,路由器上该网段的网关是 192.168.30.1。要让摄像头直接把录像存到 NAS:

字段填什么
父设备enp3s0
VLAN id30
IPv4 方式静态
地址192.168.30.20
子网掩码255.255.255.0
网关留空(默认出口仍然是主网的 192.168.1.1)

应用后,摄像头往 192.168.30.20 存数据,NAS 回应摄像头的流量会直接从 enp3s0.30 出去。主网的地址和网关都没有变。

只有一条默认路由

一台机器通常只应有一条默认路由。两个接口都填了网关时,都会写进路由表;这时给不想当默认出口的接口把指标(Metric)调大(例如 100),数字小的优先。新手更简单的做法是:只在一个接口上填网关。

和 Bond 组合 ​

NAS 用了 Bond 时,父设备选 bond0 即可,VLAN 接口会叫 bond0.30。要保证交换机上承载 Bond 的那组端口放行了该 VLAN。

服务会在新 VLAN 里同样可见 ​

OMV 的服务默认不限制监听的接口。Web 界面的 nginx 站点默认监听所有 IPv4 地址(模板里的 OMV_NGINX_SITE_WEBGUI_LISTEN_IPV4_ADDRESS 默认值是 *),SMB 配置里也没有限定接口。所以加了 VLAN 接口之后,该 VLAN 里的设备同样能访问 Web 界面、SSH、SMB 等。要隔离,先在路由器或三层交换机上做 VLAN 间的访问控制;单个 SMB 共享可以在 允许主机(Hosts allow)里限制来源;限制 Web 界面入口见Web 界面安全。OMV 自带的防火墙也可以按来源地址限制。

检查结果 ​

  1. 网络 → 接口 里出现 <父设备>.<VLAN id> 这一行,方式和地址正确;选中它点 显示详情,状态正常。

  2. 在 OMV 的 shell(root)里确认:

    sh
    # 在 OMV 的 shell 里执行,只读
    ip -br addr                       # VLAN 接口有地址
    ip -d link show enp3s0.30         # 把 enp3s0.30 换成你的接口名,应看到 vlan protocol 802.1Q id 30
    ping -c 3 <该 VLAN 的网关>
  3. 从这个 VLAN 里的另一台设备 ping <NAS 在该 VLAN 的地址>。

  4. 原来的主网地址仍然可以访问 NAS(用第一种用法时)。

常见问题 ​

创建后没有地址或 ping 不通。 先怀疑交换机:端口是否放行了这个 VLAN 的打标签流量,两端的 VLAN id 是否一致。再看 ip -d link show <接口名> 里的 id 是否是你要的。

父设备下拉框是空的。 候选只列出已在 OMV 里配置过的接口。先给网卡创建一条以太网配置(即使地址方式暂时都选「禁用」也算配置过)。

修改父接口之后 VLAN 也不通了。 VLAN 依赖父接口。父接口的配置被删除、网卡被并入 Bond 或桥接,VLAN 都会受影响。要把 VLAN 放在 Bond 上,就以 Bond 作为父设备创建。

想让容器直接拿到这个 VLAN 的地址。 可以用 Docker 的 macvlan 网络,父接口写 VLAN 子接口名(Docker 官方文档的 802.1Q 示例就是这样写的)。宿主机默认访问不到自己的 macvlan 容器,是内核的限制,详见 Docker 文档。容器的整体用法见为什么在 NAS 上用容器。

MTU 要不要改。 一般不用。要改时,VLAN 接口的 MTU 不能超过父接口,整条链路上的设备也要支持。

参考资料 ​

OpenMediaVault 非官方中文使用指南,与 openmediavault 项目及其开发者无隶属关系。