我已经尝试让它正常工作两天了,我迫切需要帮助。我已将 Squid 3 配置为使用 tproxy 标志监听端口 3129 的代理,并遵循以下有关 shorewall 的说明:
http://www.shorewall.net/Shorewall_Squid_Usage.html#TPROXY
我正在使用 IPv6,因此我已相应地调整了这些设置,并且通过 NAT 重定向不是一种选项。
当我尝试连接到远程主机(例如端口 80 上的 ipv6.google.com)时,该连接会被 squid fine 拦截,然后连接到 ipv6.google.com,但最终连接超时并且我看到了 squid 错误页面。
如果我对连接执行 tcpdump,我会得到以下结果
19:09:11.958367 IP6 2001:388:e000:c100:213:e8ff:fe6b:41e5.56667 > 2404:6800:4006:802::1014.80: Flags [S], seq 4011445546, win 12200, options [mss 1220,sackOK,TS val 3255676 ecr 0,nop,wscale 5], length 0
19:09:12.019139 IP6 2404:6800:4006:802::1014.80 > 2001:388:e000:c100:213:e8ff:fe6b:41e5.56667: Flags [S.], seq 1191029984, ack 4011445547, win 5712, options [mss 1410,sackOK,TS val 967841584 ecr 3255676,nop,wscale 6], length 0
每次请求 TTL 超时时都会重复此操作。
如果我使用 squid 作为非透明代理服务器,它能够毫无问题地处理 IPv6 请求。因此,出于某种原因,数据包无法返回 squid。
我在跑步:
kernel - 2.6.39
iptables - 1.4.11
shorewall6 - 4.4.20
squid3 - 3.1.12
编辑-我在 IPv4 中也看到了同样的行为
ip6tables -nL 输出:
链输入(政策删除) 目标 保护 优化 源 目标 动态全部 ::/0 ::/0 ctstate INVALID,NEW net2fw 全部 ::/0 ::/0 loc2fw 全部 ::/0 ::/0 全部接受 ::/0 ::/0 全部删除 ::/0 ::/0 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:INPUT:DROP:” 删除全部 ::/0 ::/0 链转发(策略丢弃) 目标 保护 优化 源 目标 net2loc 全部 ::/0 ::/0 loc2net 全部 ::/0 ::/0 lo_fwd 全部 ::/0 ::/0 全部拒绝 ::/0 ::/0 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:FORWARD:REJECT:” 全部拒绝 ::/0 ::/0 [转到] 链输出(政策下降) 目标 保护 优化 源 目标 fw2net 全部 ::/0 ::/0 fw2loc 全部 ::/0 ::/0 全部接受 ::/0 ::/0 全部拒绝 ::/0 ::/0 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:OUTPUT:REJECT:” 全部拒绝 ::/0 ::/0 [转到] 连锁掉落 (3 处引用) 目标 保护 优化 源 目标 拒绝 tcp ::/0 ::/0 tcp dpt:113 /* 验证 */ dropBcast 全部 ::/0 ::/0 dropInvalid 全部 ::/0 ::/0 DROP udp ::/0 ::/0 多端口 dports 135,445 /* SMB */ DROP udp ::/0 ::/0 udp dpts:137:139 / * SMB * / DROP udp ::/0 ::/0 udp spt:137 dpts:1024:65535 /* SMB */ DROP tcp ::/0 ::/0 多端口 dports 135,139,445 /* SMB */ dropNotSyn tcp ::/0 ::/0 DROP udp ::/0 ::/0 udp spt:53 /* 延迟 DNS 回复 */ 链式拒绝 (2 个引用) 目标 保护 优化 源 目标 拒绝 tcp ::/0 ::/0 tcp dpt:113 /* 验证 */ dropBcast 全部 ::/0 ::/0 dropInvalid 全部 ::/0 ::/0 拒绝 udp ::/0 ::/0 多端口 dports 135,445 /* SMB */ 拒绝 udp ::/0 ::/0 udp dpts:137:139 /* SMB */ 拒绝 udp ::/0 ::/0 udp spt:137 dpts:1024:65535 /* SMB */ 拒绝 tcp ::/0 ::/0 多端口 dports 135,139,445 /* SMB */ dropNotSyn tcp ::/0 ::/0 DROP udp ::/0 ::/0 udp spt:53 /* 延迟 DNS 回复 */ Chain dropBcast (2 个引用) 目标 保护 优化 源 目标 删除所有 ::/0 2001:388:e000:c100::/128 删除所有 ::/0 2001:388:e000:c100:ffff:ffff:ffff:ff80/121 删除所有 ::/0 ff00::/8 Chain dropInvalid(2 个引用) 目标 保护 优化 源 目标 删除所有 ::/0 ::/0 ctstate 无效 Chain dropNotSyn(2 个引用) 目标 保护 优化 源 目标 删除 tcp ::/0 ::/0 tcpflags:!0x17/0x02 链动态 (7 个引用) 目标 保护 优化 源 目标 链 fw2loc (1 引用) 目标 保护 优化 源 目标 接受所有 ::/0 ::/0 ctstate 相关,已建立 全部接受 ::/0 ::/0 链 fw2net (1 个引用) 目标 保护 优化 源 目标 接受所有 ::/0 ::/0 ctstate 相关,已建立 接受 41 ::/0 ::/0 全部接受 ::/0 ::/0 Chain lo_fwd (1 引用) 目标 保护 优化 源 目标 sfilter 全部 ::/0 ::/0 [转到] 动态全部 ::/0 ::/0 ctstate INVALID,NEW Chain lo_in (0 引用) 目标 保护 优化 源 目标 动态全部 ::/0 ::/0 ctstate INVALID,NEW Chain loc2fw (1 引用) 目标 保护 优化 源 目标 动态全部 ::/0 ::/0 ctstate INVALID,NEW 接受所有 ::/0 ::/0 ctstate 相关,已建立 全部接受 ::/0 ::/0 Chain loc2net (1 引用) 目标 保护 优化 源 目标 sfilter 全部 ::/0 ::/0 [转到] 动态全部 ::/0 ::/0 ctstate INVALID,NEW 接受所有 ::/0 ::/0 ctstate 相关,已建立 全部接受 ::/0 ::/0 Chain logdrop (0 引用) 目标 保护 优化 源 目标 删除全部 ::/0 ::/0 链式日志标志 (5 个引用) 目标 保护 优化 源 目标 LOG 全部 ::/0 ::/0 LOG 标志 4 级别 6 前缀“Shorewall:logflags:DROP:” 删除全部 ::/0 ::/0 Chain logreject (0 引用) 目标 保护 优化 源 目标 全部拒绝 ::/0 ::/0 Chain net2fw (1 个引用) 目标 保护 优化 源 目标 动态全部 ::/0 ::/0 ctstate INVALID,NEW smurfs 全部 ::/0 ::/0 ctstate INVALID,NEW tcp标志 tcp ::/0 ::/0 接受所有 ::/0 ::/0 ctstate 相关,已建立 接受 41 ::/0 ::/0 接受 tcp ::/0 ::/0 tcp dpt:2093 全部删除 ::/0 ::/0 删除全部 ::/0 ::/0 Chain net2loc (1 引用) 目标 保护 优化 源 目标 sfilter 全部 ::/0 ::/0 [转到] 动态全部 ::/0 ::/0 ctstate INVALID,NEW smurfs 全部 ::/0 ::/0 ctstate INVALID,NEW tcp标志 tcp ::/0 ::/0 接受所有 ::/0 ::/0 ctstate 相关,已建立 接受 tcp ::/0 2001:388:e000:c100:216:3eff:fe24:dce6/128 多端口 dports 25,993 全部删除 ::/0 ::/0 删除全部 ::/0 ::/0 链式拒绝 (9 引用) 目标 保护 优化 源 目标 删除所有 ::/0 2001:388:e000:c100::/128 删除所有 ::/0 2001:388:e000:c100:ffff:ffff:ffff:ff80/121 删除所有 ff00::/8 ::/0 下降 2 ::/0 ::/0 拒绝 tcp ::/0 ::/0 拒绝并重置 tcp 拒绝 udp ::/0 ::/0 拒绝-icmp6 端口不可达 拒绝 icmpv6 ::/0 ::/0 拒绝-icmp6-addr-不可达 拒绝所有 ::/0 ::/0 拒绝 - 使用 icmp6-adm-禁止 链式过滤器 (3 个参考) 目标 保护 优化 源 目标 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:sfilter:DROP:” 删除全部 ::/0 ::/0 链式岸墙 (0 引用) 目标 保护 优化 源 目标 Chain smurflog(3 个引用) 目标 保护 优化 源 目标 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:smurfs:DROP:” 删除全部 ::/0 ::/0 连锁小精灵 (2 个引用) 目标 保护 优化 源 目标 smurflog 全部 2001:388:e000:c100::/128 ::/0 [转到] smurflog 全部 2001:388:e000:c100:ffff:ffff:ffff:ff80/121 ::/0 [转到] smurflog 全部 ff00::/8 ::/0 [转到] 链式 tcpflags(2 个引用) 目标 保护 优化 源 目标 logflags tcp ::/0 ::/0 [转到] tcpflags:0x3F/0x29 logflags tcp ::/0 ::/0 [转到] tcpflags:0x3F/0x00 logflags tcp ::/0 ::/0 [转到] tcpflags:0x06/0x06 logflags tcp ::/0 ::/0 [转到] tcpflags:0x03/0x03 logflags tcp ::/0 ::/0 [转到] tcp spt:0flags: 0x17/0x02
ip6tables -t mangle -nL 输出:
链输入(政策删除) 目标 保护 优化 源 目标 动态全部 ::/0 ::/0 ctstate INVALID,NEW net2fw 全部 ::/0 ::/0 loc2fw 全部 ::/0 ::/0 全部接受 ::/0 ::/0 全部删除 ::/0 ::/0 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:INPUT:DROP:” 删除全部 ::/0 ::/0 链转发(策略丢弃) 目标 保护 优化 源 目标 net2loc 全部 ::/0 ::/0 loc2net 全部 ::/0 ::/0 lo_fwd 全部 ::/0 ::/0 全部拒绝 ::/0 ::/0 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:FORWARD:REJECT:” 全部拒绝 ::/0 ::/0 [转到] 链输出(政策下降) 目标 保护 优化 源 目标 fw2net 全部 ::/0 ::/0 fw2loc 全部 ::/0 ::/0 全部接受 ::/0 ::/0 全部拒绝 ::/0 ::/0 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:OUTPUT:REJECT:” 全部拒绝 ::/0 ::/0 [转到] 连锁掉落 (3 处引用) 目标 保护 优化 源 目标 拒绝 tcp ::/0 ::/0 tcp dpt:113 /* 验证 */ dropBcast 全部 ::/0 ::/0 dropInvalid 全部 ::/0 ::/0 DROP udp ::/0 ::/0 多端口 dports 135,445 /* SMB */ DROP udp ::/0 ::/0 udp dpts:137:139 / * SMB * / DROP udp ::/0 ::/0 udp spt:137 dpts:1024:65535 /* SMB */ DROP tcp ::/0 ::/0 多端口 dports 135,139,445 /* SMB */ dropNotSyn tcp ::/0 ::/0 DROP udp ::/0 ::/0 udp spt:53 /* 延迟 DNS 回复 */ 链式拒绝 (2 个引用) 目标 保护 优化 源 目标 拒绝 tcp ::/0 ::/0 tcp dpt:113 /* 验证 */ dropBcast 全部 ::/0 ::/0 dropInvalid 全部 ::/0 ::/0 拒绝 udp ::/0 ::/0 多端口 dports 135,445 /* SMB */ 拒绝 udp ::/0 ::/0 udp dpts:137:139 /* SMB */ 拒绝 udp ::/0 ::/0 udp spt:137 dpts:1024:65535 /* SMB */ 拒绝 tcp ::/0 ::/0 多端口 dports 135,139,445 /* SMB */ dropNotSyn tcp ::/0 ::/0 DROP udp ::/0 ::/0 udp spt:53 /* 延迟 DNS 回复 */ Chain dropBcast (2 个引用) 目标 保护 优化 源 目标 删除所有 ::/0 2001:388:e000:c100::/128 删除所有 ::/0 2001:388:e000:c100:ffff:ffff:ffff:ff80/121 删除所有 ::/0 ff00::/8 Chain dropInvalid(2 个引用) 目标 保护 优化 源 目标 删除所有 ::/0 ::/0 ctstate 无效 Chain dropNotSyn(2 个引用) 目标 保护 优化 源 目标 删除 tcp ::/0 ::/0 tcpflags:!0x17/0x02 链动态 (7 个引用) 目标 保护 优化 源 目标 链 fw2loc (1 引用) 目标 保护 优化 源 目标 接受所有 ::/0 ::/0 ctstate 相关,已建立 全部接受 ::/0 ::/0 链 fw2net (1 个引用) 目标 保护 优化 源 目标 接受所有 ::/0 ::/0 ctstate 相关,已建立 接受 41 ::/0 ::/0 全部接受 ::/0 ::/0 Chain lo_fwd (1 引用) 目标 保护 优化 源 目标 sfilter 全部 ::/0 ::/0 [转到] 动态全部 ::/0 ::/0 ctstate INVALID,NEW Chain lo_in (0 引用) 目标 保护 优化 源 目标 动态全部 ::/0 ::/0 ctstate INVALID,NEW Chain loc2fw (1 引用) 目标 保护 优化 源 目标 动态全部 ::/0 ::/0 ctstate INVALID,NEW 接受所有 ::/0 ::/0 ctstate 相关,已建立 全部接受 ::/0 ::/0 Chain loc2net (1 引用) 目标 保护 优化 源 目标 sfilter 全部 ::/0 ::/0 [转到] 动态全部 ::/0 ::/0 ctstate INVALID,NEW 接受所有 ::/0 ::/0 ctstate 相关,已建立 全部接受 ::/0 ::/0 Chain logdrop (0 引用) 目标 保护 优化 源 目标 删除全部 ::/0 ::/0 链式日志标志 (5 个引用) 目标 保护 优化 源 目标 LOG 全部 ::/0 ::/0 LOG 标志 4 级别 6 前缀“Shorewall:logflags:DROP:” 删除全部 ::/0 ::/0 Chain logreject (0 引用) 目标 保护 优化 源 目标 全部拒绝 ::/0 ::/0 Chain net2fw (1 个引用) 目标 保护 优化 源 目标 动态全部 ::/0 ::/0 ctstate INVALID,NEW smurfs 全部 ::/0 ::/0 ctstate INVALID,NEW tcp标志 tcp ::/0 ::/0 接受所有 ::/0 ::/0 ctstate 相关,已建立 接受 41 ::/0 ::/0 接受 tcp ::/0 ::/0 tcp dpt:2093 全部删除 ::/0 ::/0 删除全部 ::/0 ::/0 Chain net2loc (1 引用) 目标 保护 优化 源 目标 sfilter 全部 ::/0 ::/0 [转到] 动态全部 ::/0 ::/0 ctstate INVALID,NEW smurfs 全部 ::/0 ::/0 ctstate INVALID,NEW tcp标志 tcp ::/0 ::/0 接受所有 ::/0 ::/0 ctstate 相关,已建立 接受 tcp ::/0 2001:388:e000:c100:216:3eff:fe24:dce6/128 多端口 dports 25,993 全部删除 ::/0 ::/0 删除全部 ::/0 ::/0 链式拒绝 (9 引用) 目标 保护 优化 源 目标 删除所有 ::/0 2001:388:e000:c100::/128 删除所有 ::/0 2001:388:e000:c100:ffff:ffff:ffff:ff80/121 删除所有 ff00::/8 ::/0 下降 2 ::/0 ::/0 拒绝 tcp ::/0 ::/0 拒绝并重置 tcp 拒绝 udp ::/0 ::/0 拒绝-icmp6 端口不可达 拒绝 icmpv6 ::/0 ::/0 拒绝-icmp6-addr-不可达 拒绝所有 ::/0 ::/0 拒绝 - 使用 icmp6-adm-禁止 链式过滤器 (3 个参考) 目标 保护 优化 源 目标 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:sfilter:DROP:” 删除全部 ::/0 ::/0 链式岸墙 (0 引用) 目标 保护 优化 源 目标 Chain smurflog(3 个引用) 目标 保护 优化 源 目标 LOG 全部 ::/0 ::/0 LOG 标志 0 级别 6 前缀“Shorewall:smurfs:DROP:” 删除全部 ::/0 ::/0 连锁小精灵 (2 个引用) 目标 保护 优化 源 目标 smurflog 全部 2001:388:e000:c100::/128 ::/0 [转到] smurflog 全部 2001:388:e000:c100:ffff:ffff:ffff:ff80/121 ::/0 [转到] smurflog 全部 ff00::/8 ::/0 [转到] 链式 tcpflags(2 个引用) 目标 保护 优化 源 目标 logflags tcp ::/0 ::/0 [转到] tcpflags:0x3F/0x29 logflags tcp ::/0 ::/0 [转到] tcpflags:0x3F/0x00 logflags tcp ::/0 ::/0 [转到] tcpflags:0x06/0x06 logflags tcp ::/0 ::/0 [转到] tcpflags:0x03/0x03 logflags tcp ::/0 ::/0 [转到] tcp spt:0flags: 0x17/0x02
答案1
我发现了问题,缺少两条我认为 shorewall 应该插入的规则,运行以下命令解决了该问题。
ip6tables -t mangle -N DIVERT
ip6tables -t mangle -A DIVERT -j MARK --set-mark 1
ip6tables -t mangle -A DIVERT -j ACCEPT
ip6tables -t mangle -I tcpre 1 -p tcp -m socket -j DIVERT