Squid 可以利用普通 IP 路由并不掌握的信息来为请求分类。在受支持的 Linux 构建中,tcp_outgoing_mark 依据快速 ACL 在服务端设置 Netfilter 标记:

acl selected_sites dstdomain -n .vendor.example
tcp_outgoing_mark 0x20 selected_sites
tcp_outgoing_mark 0x00 all

随后,匹配的 Linux 策略规则可以用 fwmark 0x20 选择一张已经配置好的路由表。这张表仍然需要正确的路由和可达的下一跳;Squid 指令不会替你创建它们。

这个标记属于本地路由元数据。它不同于 IP 包中携带的 DSCP 或 TOS 字段,也不同于用于选择源 IP 的 tcp_outgoing_address。

该指令有文档记载,需要 Linux 的包标记与 capability 支持,并且只接受快速 ACL。它存在于 Squid 7 及此前列出的版本中,Squid 8 中不再提供。

请围绕真实的出站连接来设计策略。被复用的 TCP 连接不会仅因为另一个 HTTP 请求使用它就变成新连接。设计时还要保留面向客户端的回程路径,以及未打标记流量的路由。

相关文章