总结

总结

我正在尝试在我的家庭网络上设置一个透明代理,这样我就可以缓存我的互联网流量并监控我的连接,而无需配置浏览器通过代理 - 例如它应该是透明的。据我所知,根据其文档,Squid 可以做到这一点,但我不清楚的是,我需要将机器放在我的物理网络拓扑中的什么位置才能使其工作。

我的家庭网络通过电缆调制解调器连接到互联网,该调制解调器通过以太网连接到运行 OpenWRT 的路由器。该路由器形成交换机,连接我的所有无线和有线客户端以及家庭服务器。

我想要设置的透明代理网关是否只是作为另一个客户端连接到路由器的交换机,还是我以某种方式将其设置在路由器和调制解调器之间的路径上? 如果是这样,我是否需要将其放在某种 DMZ 中,或者它也应该充当路由器,而我现在的路由器只需从 squid 网关获取 DHCP 信息并充当我的 LAN 其余部分的交换机?

如果有多个选项,哪一个最适合实现最佳性能?

如果这很重要,以下是我的 Squid Gateway 装备的相关规格:Celeron J1800 4gb RAM 64gb SSD 3x 千兆以太网(2x 在 Broadcom 独立 PCI-E 卡上)1x 无线 a/b/g mpcie 卡 Lubuntu 16.04

答案1

托管代理的机器可以与本地网络中的常规客户端并排设置。路由器会将所有 HTTP 流量(来自代理机器的流量除外)路由到您的代理机器。这是通过结合 IPTables(选择要转移的流量)和策略路由(进行转移)来实现的。

我在 VMware 中的 OpenWrt Chaos Calmer (15.05.1, r48532) 上测试了以下步骤。它们基于本指南

首先,要设置策略路由,您需要 iproute2。安装它:

opkg update # If you haven't done it since rebooting
opkg install ip

然后,/etc/firewall.user用您最喜欢的编辑器打开并插入以下命令:

PROXYIP4=192.168.1.10
PROXYIP6=fe80:dead:beef::10

CLIENTIFACE=br-lan

FWMARK=2

# Permit Squid box out to the Internet
iptables -t mangle -A PREROUTING -p tcp --dport 80 -s $PROXYIP4 -j ACCEPT
ip6tables -t mangle -A PREROUTING -p tcp --dport 80 -s $PROXYIP6 -j ACCEPT

# Mark everything else on port 80 to be routed to the Squid box
iptables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -j MARK --set-mark $FWMARK
iptables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT
ip6tables -t mangle -A PREROUTING -i $CLIENTIFACE -p tcp --dport 80 -j MARK --set-mark $FWMARK
ip6tables -t mangle -A PREROUTING -m mark --mark $FWMARK -j ACCEPT

# NP: Ensure that traffic from inside the network is allowed to loop back inside again.
iptables -t filter -A FORWARD -i $CLIENTIFACE -o $CLIENTIFACE -p tcp --dport 80 -j ACCEPT
ip6tables -t filter -A FORWARD -i $CLIENTIFACE -o $CLIENTIFACE -p tcp --dport 80 -j ACCEPT

# Fill 'proxy' routing table
ip route flush table proxy
ip route add default via $PROXYIP4 table proxy dev $CLIENTIFACE
ip -6 route add default via $PROXYIP6 table proxy dev $CLIENTIFACE

确保根据需要调整变量!

然后,编辑,使用任意自由 ID/etc/iproute2/rt_tables为表添加一行:proxy

...
201     proxy

最后一部分是针对标有 的流量的策略$FWMARK。打开/etc/config/network并创建规则条目:

config rule
    option mark 0x2
    option in lan
    option lookup proxy

确保in网络名称正确等等。

OpenWrt 部分的设置到此结束。代理计算机现在(实际上)已成为 HTTP 流量的默认网关。如果此计算机运行 Linux,您可以继续TPROXY 上的本指南

路由开销应该很小。其余的取决于代理主机。

如果你中断了互联网访问,你可以通过删除路由规则轻松恢复:

ip rule del fwmark 2

还可以轻松地再次添加该规则:

ip rule add fwmark 2 table proxy

总结

代理主机确实必须位于客户端和互联网之间。但是,通过巧妙的路由,任何可直接访问的机器都可以成为“中间人”。

就像这样:

交通拦截

相关内容