一台 Linux 网关可以运行代理进程,同时也能让流量绕过它转发。这两者并不是同一条数据包路径。

连接相关的本机角色
客户端访问网关上的代理发往本机的流量
客户端经网关访问另一台主机转发流量
代理打开一个网站连接本地进程产生的流量

Netfilter 区分输入、转发和输出路径。管辖网关自身代理监听端口访问的规则,并不会自动约束经过这台机器转发的每一条连接。

先界定要强制执行什么

如果客户端必须使用已批准的代理,策略除了放行预期的监听端口,还必须处理它们其他的出站路径。仅仅因为某个远端服务使用了熟悉的代理端口就放行连接,并不等于只放行你自己的代理端点。

把代理自身的对外访问单独保留。对 Squid 而言,在套用出站许可之前,先区分本地套接字归属与局域网用户身份。若一概拒绝代理的所有有效出站连接,所需路径就会不通。管理流量、名称解析以及受支持的非 Web 操作,也需要在部署策略中专门处理。

协议范围很重要。一条 TCP 规则本身并不描述 UDP 流量,包括 QUIC。拦截流量是另一种设计;显式 HTTPS 代理可以在不解密网站会话的情况下提供 CONNECT。

在修改规则集之前,先画出预期的连接。浏览器偏好只为参与的客户端选择路径。网络层的强制执行决定其他路径能否成功。两者都不应仅凭一次成功的代理登录来推断。

相关文章