标签: squid

Squid 代理 - 隐藏代理

我在带有数据库身份验证的 ubuntu 服务器上设置了鱿鱼代理。但是,在连接到代理时,如果我访问http://www.whatismyip.com/,它仍会显示我的 ACTUAL ip 地址。如何配置 Squid 以隐藏我的 IP 并隐藏它使用 squid 的事实。

linux squid

6
推荐指数
1
解决办法
6546
查看次数

如何让鱿鱼根据 ACL 在回复中添加自己的 http 标头?

我有一个 Squid 服务器在做 Squid-ly 的事情。我需要根据匹配 ACL 的特定标头让 Squid 回复。

标题是一个自定义的,看起来像

X-External-IP: 123.45.67.8
Run Code Online (Sandbox Code Playgroud)

我已经知道 tcp_outbound_ip,我正在使用类似的方法来嗅探请求标头以正确路由给定的 IP 地址,但如果可能的话,我还需要添加此回复。通过谷歌搜索给了我如何阻止请求头通过的结果——这不是我想要做的。

squid

6
推荐指数
1
解决办法
2552
查看次数

鱿鱼指定传出网络接口

我有一台 Linux Debian 机器,有许多运行 Squid 的网络接口(venet0:1 到 venet0:5)。如果我连接到接口 venet0:2,squid 使用 venet0:0 进行传出流量,但我希望 Squid 使用相同的网络接口进行连接。因此,如果我连接到 venet0:1 的 IP 地址,代理也应该使用相同的接口进行传出流量。

目前我使用以下配置:

http_port 200
forwarded_for off
uri_whitespace encode
visible_hostname localhost
via off
collapsed_forwarding on
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/users
auth_param basic children 5
auth_param basic realm Proxy
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl ncsa_users proxy_auth REQUIRED
access_log none
cache_store_log none
cache_log /dev/null
acl all src all
http_access allow ncsa_users
header_access From deny all
header_access Referer deny all …
Run Code Online (Sandbox Code Playgroud)

networking debian proxy squid

6
推荐指数
2
解决办法
2万
查看次数

HTTPS / SSL 流量的 Squid 透明代理

我正在尝试将 Squid 配置为透明代理,我按照以下步骤进行配置

从网站下载了Squid 3.5,因为Squid 3.1不支持ssl凹凸

./configure --enable-linux-netfilter --enable-icap-client --enable-ssl --with-filedescriptors=65536 --with-large-files --prefix=/usr --localstatedir=/var --libexecdir=${prefix}/lib/squid --srcdir=. --datadir=${prefix}/share/squid --sysconfdir=/etc/squid
make
make install
Run Code Online (Sandbox Code Playgroud)

Squid 已启用 SSL,我可以使用进行检查

squid -v 
Squid Cache: Version 3.5.2
Service Name: squid
configure options:  '--enable-linux-netfilter' '--enable-icap-client' '--enable-ssl' '--with-filedescriptors=65536' '--with-large-files' '--prefix=/usr' '--localstatedir=/var' '--libexecdir=/lib/squid' '--srcdir=.' '--datadir=/share/squid' '--sysconfdir=/etc/squid' 'CPPFLAGS=-I../libltdl' --enable-ltdl-convenience
Run Code Online (Sandbox Code Playgroud)

到现在为止一切都很好

我已经在 中创建了一个证书/etc/squid/cert/squid.pem

当我编辑squid.conf

http_port 3128
https_port 3130 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/cert/squid.pem
Run Code Online (Sandbox Code Playgroud)

http_port正在3128运行

netstat -nap | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN …
Run Code Online (Sandbox Code Playgroud)

iptables squid

6
推荐指数
0
解决办法
1万
查看次数

允许使用 Squid 的特定 URL 路径

我在 Debian 上使用 Squid 3.4,我想知道如何在禁止其他子 URL 的同时允许某些子 URL。

特别是,我想禁止访问 reddit.com/* 但允许访问 reddit.com/r/foo/* 和 reddit.com/r/foo/

acl bad url_regex reddit\.com.*
acl good url_regex reddit\.com.*foo*

http_access deny bad
http_access allow good

...
http_access allow localnet
http_access allow localhost
http_access deny all
Run Code Online (Sandbox Code Playgroud)

这段代码似乎不起作用,reddit.com 上的所有内容最终都被屏蔽了。我怎样才能得到我想要的配置?

编辑:更新的配置仍然不起作用:

acl good url_regex http(s)?://(www\.)?reddit\.com/r/foo.*
acl bad url_regex http(s)?://(www\.)?reddit\.com.*

http_access allow good
http_access deny bad

...
http_access allow localnet
http_access allow localhost
http_access deny all
Run Code Online (Sandbox Code Playgroud)

这与前面的代码有相反的效果;它允许访问所有 reddit.com(我不想要)。

domain proxy web squid blocking

6
推荐指数
2
解决办法
3万
查看次数

如何使用ELB对Squid服务器进行健康检查?

我想要使​​用 Squid 拥有一个 HA 转发代理解决方案,并且我正在尝试在第 41 页的ELB 解决方案后面使用 Squid 服务器。

然而,我的转发代理服务是一种将流量转发到内部网络(返回到我的公司网络)的服务,即我的 Squid 服务器没有 Internet 连接。因此,对 google.com 等众所周知的 URL 进行健康检查不起作用。

根据上面第 41 页描述的解决方案,ELB 对 Squids 服务器进行健康检查的最佳方式是什么?在这种情况下我应该使用哪个ping 路径?

high-availability squid amazon-elb

6
推荐指数
1
解决办法
7206
查看次数

Squid SSL 透明代理 - SSL_connect:error in SSLv2/v3 read server hello A

我正在尝试为我的内部服务器之一设置 SSL 代理以https://www.googleapis.com使用 Squid进行访问,以使该服务器上的 Rails 应用程序能够googleapis.com通过代理访问。

我是新手,所以我的方法是使用 Squid 设置 SSL 透明代理。我Squid 3.3在 Ubuntu 12.04 上构建,生成一对 ssl 密钥和 crt,并像这样配置鱿鱼:

http_port 443 transparent cert=/home/larry/ssl/server.csr key=/home/larry/ssl/server.key
Run Code Online (Sandbox Code Playgroud)

并将几乎所有其他配置保留为默认值。持有key/crt的目录的授权是drwxrwxr-x 2 proxy proxy 4096 Oct 17 15:45 ssl

回到我的开发笔记本电脑上,我把<proxy-server-ip> www.googleapis.com/etc/hosts的电话放到我的代理服务器上。

但是当我在 Rails 应用程序中尝试它时,我得到了:

SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol
Run Code Online (Sandbox Code Playgroud)

而且我还尝试在 cli 中使用 openssl:

openssl s_client -state -nbio -connect www.googleapis.com:443 2>&1 | grep "^SSL"
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:error …
Run Code Online (Sandbox Code Playgroud)

ssl proxy squid transparent-proxy openssl

5
推荐指数
1
解决办法
2604
查看次数

在 CentOS 7 上 Squid 耗尽文件描述符

我在 CentOS 7 上运行 Squid 3.3 (EPEL),最近我在我的系统中收到以下错误消息 cache.log

WARNING! Your cache is running out of filedescriptors
Run Code Online (Sandbox Code Playgroud)

我对此有点困惑,因为我似乎有足够的描述符可用:

squidclient mgr:info | grep 'file descri'
Maximum number of file descriptors:   16384
Available number of file descriptors: 16326
Reserved number of file descriptors:   100
Run Code Online (Sandbox Code Playgroud)

Squid 也是用这个标志编译的:

--with-filedescriptors=16384
Run Code Online (Sandbox Code Playgroud)

Squid 确认这些实际上在启动时可用:

2015/08/18 21:11:45 kid1| With 16384 file descriptors available
Run Code Online (Sandbox Code Playgroud)

但是这个错误不断发生。记录此错误后不久,该squid进程似乎也达到了 100% CPU 或使用了几乎所有系统内存超过 90%,导致互联网速度下降到爬行或无限期挂起。杀死进程并重新启动可以解决它,但最终它会再次发生。

我总共有 8 GB 可用内存,这些是我的内存/缓存相关参数 squid.conf

cache_dir ufs /var/spool/squid 16000 16 256
cache_mem 1024 MB
Run Code Online (Sandbox Code Playgroud)

我还在使用ufdbguardKerberos 和 NTLM …

squid file-descriptors centos7

5
推荐指数
1
解决办法
3952
查看次数

将来自 docker 容器的传出流量列入白名单

我有一台运行多个 docker 容器的服务器,配置如下:

  • 其中一个容器是绑定到其他容器公开端口的反向代理。这是唯一一个在 http 端口 80 上接受来自外部世界的连接的容器
  • 所有其他容器都是运行 tty shell 的开发环境。这些在主机上暴露了端口,但由于主机上的 EC2 安全组配置,这些端口不会暴露给外界。所以与他们沟通的唯一方法是通过反向代理。反向代理通过它们暴露的端口与它们通信。
    nb 我不能在这里使用容器链接,因为我不想用每个新的开发容器重新启动反向代理容器。

                    |                                DEV Env Docker
                    |                              / 
OUTSIDE WORLD <-----|------> REVERSE PROXY DOCKER  - DEV Env Docker
                    |                              \ 
                    |                                DEV Env Docker
Run Code Online (Sandbox Code Playgroud)

这个想法是用户可以通过反向代理访问开发容器并在该容器内运行命令。

我想通过将他们可以连接的域列入白名单来防止用户运行连接到外部世界的命令。

我已经安装了 squid3 并通过在配置文件中添加以下几行来设置白名单:

acl whitelist dstdomain "/etc/squid3/whitelist.txt"
http_access allow whitelist
Run Code Online (Sandbox Code Playgroud)

我还设法使用以下 iptables 命令 iptables -t nat -A PREROUTING -i docker0 -p tcp -d 0/0 -j REDIRECT --to-port 3128 将流量从 docker 容器重定向到鱿鱼

我遇到的问题是,我只希望来自 Dev Env 容器的传出流量通过 squid,但由于“我相信”,我需要使用 PREROUTING 所有流量都通过 squid,即使是传入和目的地为我的反向代理的流量。

当我尝试通过网络访问我的反向代理时,我从鱿鱼收到以下错误 …

iptables squid transparent-proxy docker

5
推荐指数
1
解决办法
4003
查看次数

Squid 未正确阻止 SSL HTTPS

所以我的目标是只阻止某些 YouTube 频道。

如果我做:

acl block_youtube dstdomain .youtube.com
http_access deny block_youtube
Run Code Online (Sandbox Code Playgroud)

它会阻止对 youtube 的任何访问。

如果我做:

acl block_youtube url_regex -i ^https://www.youtube.com/watch\?v=v2AC41dglnM
http_access deny block_youtube
Run Code Online (Sandbox Code Playgroud)

它不会阻止该特定页面,即使我在 access_log 中看到这一点。

475862685.876      0 100.100.100.100 TAG_NONE/200 0 CONNECT www.youtube.com:443 - HIER_NONE/- -
1475862686.359    412 100.100.100.100 TCP_MISS/200 51182 GET https://www.youtube.com/watch\?v=v2AC41dglnM - HIER_DIRECT/216.58.192.238 application/json
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?

proxy squid blocking

5
推荐指数
1
解决办法
7382
查看次数