我只是想让互联网匿名透明代理绕过流量,只想隐藏客户端 IP,但它对 https 不起作用。
我不想使用 sslbump 等,只是想绕过流量
我在 google、serverfault.com 和 stackoverflow.com 上进行了大量搜索,并测试了这些绕过 https 流量的解决方案:
我的鱿鱼配置是:
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow all
short_icon_urls on
http_port 0.0.0.0:13128 accel vhost
always_direct allow all
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
coredump_dir /var/spool/squid
forwarded_for off
我的 iptables 配置现在如下:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 13128
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 13128
我尝试使用这些命令但没有作用:
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT
iptables -t nat -A PREROUTING -d x.x.x.x -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp -s x.x.x.x -m tcp --dport 443 -j REDIRECT --to-ports 13128
xxxx 是我的有效互联网 IP
我的使用代理的客户端配置如下:
在 /etc/hosts 中添加了 somedomain.com xxxx somedomain.com
我想浏览https://somedomain.com在我的浏览器中
你可以找到很多像这样工作的 IP 端口代理,例如使用这个 IP173.161.0.227
如果我在我的客户端 /etc/hosts 中添加一行
173.161.0.227 www.iplocation.net
我可以浏览https://www.iplocation.net
我的服务器是 CentOS 7
答案1
“匿名透明”这几个字,本身就自相矛盾。
匿名代理是指隐藏客户端详细信息,服务器只能看到代理。透明代理是指隐藏代理详细信息,并将客户端详细信息发送到服务器。
因此,对你的问题的简短回答是,你所要求的是不可能的。你不能同时拥有两者。特别是当涉及 TLS(作为 HTTPS)时。
您提到的 /etc/hosts 示例不是透明代理。它们可能是匿名代理。它们绝对是“开放代理”。请查阅。
您的 squid.conf 是针对反向代理的,现已转变为开放代理(通过 always_direct 行)。对于此代理配置,NAT 规则毫无意义。
如果您想使用 /etc/hosts 方式,那么请删除您的 NAT 规则并让您的 Squid 使用 http_port 80 而不是 13128。
如果您想使用 NAT 拦截代理,请删除 always_direct 行并将“accel vhost”选项更改为“intercept”。
端口 80 和端口 443 的流量语法非常不同。您正在进行 NAT 的 http_port 仅接受端口 80 语法。这是 NAT 端口 443 无法正常工作的第一个原因。
要将 HTTPS 语法接收到 Squid 中,您需要一个 https_port 来接收它。但是,TLS 会阻止 /etc/hosts 方式工作。接收不属于您的域的 HTTPS 意味着 SSL-Bump。即使透明地中继 NAT 端口 443,也需要将 SSL-Bump 配置为“拼接”。
但是,当进行 NAT 时,您的代理首先接收端口 443 流量的唯一原因是因为您正在将端口 443 NAT 到它。要“绕过”,您只需删除包含端口 443 的 NAT 规则即可。