VPN 网桥脚本仍在调用 brctl:这意味着什么
在 brctl 上失败的网桥辅助脚本属于本地依赖问题,而非隧道故障。请决定是维护该脚本,还是迁移它的网桥工作。
隧道客户端已安装,配置文件有效,但辅助脚本仍在一个名为 brctl 的命令上失败。重装 VPN 软件包并不能解决这个问题,因为缺失的程序并不属于隧道。它属于一个本地网桥脚本,而这个脚本所请求的工具,当前系统已不再默认提供。两个问题之所以看似相关,只是因为该脚本在连接时运行。
缺失的辅助程序并不是隧道故障
先从确切的调用及其环境入手。在交互式 shell 中存在的命令,可能不在服务的受限搜索路径里,因此「找不到」这一错误可能意味着两件不同的事。以服务用户身份运行 command -v brctl,并阅读启动该脚本的单元使用 systemctl cat openvpn-bridge-helper 或其等价命令。错误文本通常会给出缺失的二进制文件名,那个名字就是要解决的依赖。
重装隧道客户端提供的是隧道,而不是网桥工具。它们是两个各自有维护者的独立软件包。
brctl 曾经做什么,以及它为何已被废弃
该工具创建并管理 Linux 以太网网桥:addbr 创建网桥,addif 连接端口。Debian 手册将其标记为废弃,并指向覆盖范围更广的 iproute2 网桥工具。废弃并不意味着处处都已移除,而存在更新的工具,也不会让脚本中字面写下的 brctl 调用成功。
所以问题不在于 brctl 是否优秀,而在于该脚本是否仍在维护,以及你的发行版为此提供了哪个软件包(如果有的话)。
两个诚实的选择:维护,或迁移
维护是指从发行版受支持的软件包中安装有文档说明的依赖,并确认脚本的来源、预期版本和执行路径。这只满足了缺失的可执行文件,别的什么也满足不了:脚本的网桥名称、地址规划和清理行为仍然未经验证。迁移是指按受支持的网络配置重写原本想要执行的操作。创建网桥、连接端口、配置主机地址和启用链路是四项独立改动,而把 brctl 用 shell 别名映射到另一个工具,并不算翻译。
iproute2 的等价命令很短:ip link add name br-vpn type bridge 创建网桥,ip link set tap0 master br-vpn 连接端口。
写下你选择了哪个方案,以及谁拥有这个脚本。同时调用两种工具的、迁移到一半的辅助脚本,比任何一种都糟。
在两者之前,先看网桥的设计
以太网网桥适合需要以太网承载和 TAP 对端的设计。安装网桥工具并不会把一条已路由的 TUN 连接变成网桥,而受支持的路由型配置不应被拗弯去迁就一个无关的脚本。如果配置本来就是路由型的,先弄清为什么会有网桥辅助脚本在运行。
在接触真实网桥之前,请保留管理通道,并确定网络配置的唯一负责人。
修好依赖之后,再读下一个错误。本地网桥配置、远程认证,以及结果上被放行的流量,是三件彼此独立的事情,其中只有一件曾经与 brctl 有关。