把“支持 VPN”的标签看作设备的一项功能,而设备还必须承担路由、分段与故障切换,因为标签说不清设备能容纳多少个独立网络。先为确切型号与固件写一份能力记录,再把记录与现场所需的流量逐条对照。营销页面会列出端口数量,却很少列出 VLAN 归属、故障切换策略或隧道范围。这份记录大约花二十分钟,能在硬件到货前决断多数采购争论。

先钉死确切的设备型号

型号名称会跨越固件代际,同一外壳也可能因版本不同而配用不同的交换芯片驱动。板卡身份要从设备本身读取,而不是从包装箱上抄,这样后续每一条结论都绑定在可复现的对象上。在 OpenWrt 上一条命令就能覆盖型号、板卡名称与固件版本,多数商用固件也有对应界面。

ssh [email protected] 'ubus call system board'
cat /etc/openwrt_release

把这些字符串原样写入记录,绝不缩写。然后把普通路由任务与隧道任务分开。转发包很出色的设备,仍可能拒绝终结隧道;能终结隧道的设备,也未必有办法隔开两个本地网络。把两者当成一条需求,错配就会一直藏着,直到设备已经上架、配好、还被信任了一半。

记录 LAN 结构,而不是端口数量

四个网口通常意味着一个交换芯片,而未配置 VLAN 时,一个交换芯片就只有一个广播域。这对扁平的家庭网络没问题,对需要在同一台设备上划分访客段、管理段和独立摄像头段的站点则是错的。要记录哪些端口属于哪个 VLAN、哪些 VLAN 能到达 CPU、哪些接口承载地址。

固件支持 VLAN 时,接口清单决定你能写多少条彼此独立的策略。在交换芯片上定义却从未分配为接口的 VLAN 没有地址也没有防火墙区域,因此它自己什么也强制不了。

Field to recordExample entryReview stops if
Ports and VLAN membershipports 1-4 untagged on VLAN 10, port 5 trunk with VLAN 10 and 20the datasheet offers only a socket count
Routed interfacesbr-lan 192.168.88.1/24, vlan20 192.168.99.1/24two subnets cannot hold separate policies
WAN method and failoverDHCP on wan, PPPoE on wan2, policy route to wan2 on lossonly one uplink is configurable
Tunnel role and scopeWireGuard peer on the router, only 192.168.88.0/24 routed insidethe router can only pass another tunnel through

要读交换芯片的状态,而不是相信菜单。较老的 OpenWrt 目标上,交换工具会打印已配置的设备;DSA 目标上,网桥工具会按端口报告同样的事实,所以固件版本必须写进记录。

写下 WAN 与故障切换行为

接入方式、地址归属和故障切换顺序应当按每条上行链路写成一行,因为能在 WAN 变化后存活的隧道取决于这三者。PPPoE 会话会带着新地址重连,隧道也随之断开;而保留租约的 DHCP 上行链路则未必。

故障切换还需要一项策略决定。把所有流量都送到备用链路很容易;要在普通网页流量走备用链路时把隧道留在主链路上,就需要策略路由,而并非每个固件都提供。要记录隧道是否绑定单条上行链路,以及该链路消失时设备如何处理已建立的会话。留下路由表作为证据,而不是故障切换的勾选框。

测试一条允许的流量和一条被拒绝的流量

只有能据此验收设备,这份记录才值得保留。选一条必须通的流量、一条必须不通的流量,从相关网段的客户端各跑一次。当需求只是一个子网时,承载所有子网的隧道就算失败。

然后确认拒绝确实生效,因为宽松的默认设置才是常见的意外。访客段不应到达管理地址,检查结果应显示超时或拒绝,而不是登录页面。

curl -sS --max-time 8 https://api.ipify.org
ping -c 2 192.168.99.1
ip -4 route get 192.168.99.1

如果允许的流量通了,拒绝的流量也通了,那么即使菜单暗示相反,分段其实缺失。如果两者都失败,就是隧道范围或回程路径有问题,WAN 记录通常能说明是哪一种。把两次结果与能力记录放在一起,让下一位评审者看到当时验收了什么、在哪个固件上、哪一天。

相关文章