标签: squid

Ubuntu 上的 Squid 耗尽文件描述符

我在 Ubuntu 10.04 64 位上运行 Squid 2.7。我遇到了 Squid 耗尽文件描述符的问题,/var/log/squid/cache.log 中显示以下错误:

警告!您的缓存已用完文件描述符

我检查过:

鱿鱼客户端经理:信息 | grep '文件描述'

它显示我只有 1024 个可用的文件描述符。

我更改了 /etc/security/limits.conf,在末尾添加了以下内容:

* soft nofile 32768
* hard nofile 32768
proxy           soft    nofile          32768
proxy           hard    nofile          32768
Run Code Online (Sandbox Code Playgroud)

将其添加到 /etc/squid/squid.conf 中:

max_filedescriptors 32768
Run Code Online (Sandbox Code Playgroud)

还更改了/etc/default/squid:

SQUID_MAXFD=32768
Run Code Online (Sandbox Code Playgroud)

什么都没有解决。最后我编辑/etc/init.d/squid添加“ulimit -n 32768”:

#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.

set -e
ulimit -n 32768
<... snipped  ...>
Run Code Online (Sandbox Code Playgroud)

成功了!:)

我必须在实时生产 Squid 服务器极其缓慢的压力下完成这一切,所以我确信这不是正确的方法。

但正确的做法是什么?

ubuntu squid ulimit max-file-descriptors ubuntu-10.04

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

将来自 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透明转发HTTPS流量?

我想将所有 HTTP 和 HTTPS 流量重定向为squid充当透明代理。然后,该流量将在特定时间内被阻止或授权(批量)。具体来说,我不想解密/重新加密 HTTPS 流量,而是按原样推送。

HTTP 部分起作用,REDIRECT规则将shorewall所有打算发送到目标端口的流量传输80到模式下的侦听3128鱿鱼端口transparent

同样的技巧对于端口443不起作用。

有关于如何为 HTTPS 流量设置透明代理的教程,但我发现的所有教程都描述了创建证书对来解密/重新加密流量 - 这是我不想做的事情。

鱿鱼维基提到 CONNECT 作为隧道 HTTPS 流量的一种方式,但添加http_access allow CONNECT all到配置(并禁用默认值deny)不会改变任何东西。

然后,之前的 一些答案表明,在不破坏 TLS 隧道的情况下,透明的 HTTPS 流量是不可能的。

因此:是否有一种方法可以配置,squid以便通过重新路由到它的 HTTPS 流量iptables然后透明地传输,而不需要任何修改?

(当满足某些时间规则时,我最终会阻止(这就是说,该阻止不会基于 HTTPS 流本身内的任何内容))

https squid transparent-proxy

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

无法通过squid代理连接到HTTPS网站

我刚刚尝试在 CentOS7 中的 OpenVZ VPS 上创建代理服务器。一切都很好,但我无法访问 https 网站,如 google、instagram、facebook 等。它说超时,响应时间太长。

我已经生成了 myCA.pem 证书,并使用 ssl_bump 链接了签名证书,没有错误(使用 检查systemctl status squid),现在当我尝试连接到上面列举的网站时,它不会给我任何互联网错误:

1

下面是我的squid.conf,这里是我的cache.log http://pastebin.com/MUkujTig

acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
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 1025-65535    # unregistered ports
acl Safe_ports port 280        # http-mgmt
acl Safe_ports port 488        # gss-http
acl Safe_ports port 591        # …
Run Code Online (Sandbox Code Playgroud)

squid centos7

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

Squid 记录 https 没有 SSL Bumping

我已经实现了一个透明的 squid3 代理用于日志记录。

我不会进行 SSL 碰撞/HTTPS 解密,因为这对于在每个客户端上安装证书来说太多了。

但是,我想记录CONNECT传递给鱿鱼的URL 数据。出于某种原因,它甚至不会在 HTTPS 请求中记录根域,而这些请求肯定会命中鱿鱼。

有没有办法做到这一点?


我的/squid.conf

http_port 192.168.15.225:3128
http_port 127.0.0.1:3128 intercept
icp_port 0
dns_v4_first off
pid_filename /var/run/squid/squid.pid
cache_effective_user squid
cache_effective_group proxy
error_default_language en
icon_directory /usr/local/etc/squid/icons
visible_hostname localhost
cache_mgr admin@localhost
logformat squid %ts.%03tu %tr %>a %>eui %>Hs %<st %rm %ru %un %<A %mt 
access_log /var/squid/logs/access.mac.log squid
cache_log /var/squid/logs/cache.log
cache_store_log none
netdb_filename /var/squid/logs/netdb.state
pinger_enable on
pinger_program /usr/local/libexec/squid/pinger

logfile_rotate 0
debug_options rotate=0
shutdown_lifetime 3 seconds
acl localnet src  10.10.10.0/24 192.168.15.0/24
forwarded_for on …
Run Code Online (Sandbox Code Playgroud)

squid

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

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
查看次数

配置squid 3.5为不同的监听端口使用不同的父代理

我现在有以下配置:

# Squid normally listens to port 3128
http_port 3128

cache_peer proxy1_address parent proxy1_port 0 proxy-only default login=name1:pass1
never_direct allow all
Run Code Online (Sandbox Code Playgroud)

现在,我需要以某种方式配置鱿鱼,将所有到 3128 的传入请求都重定向到 proxy1(就像现在一样),并且所有到 3127 的传入请求都将重定向到 proxy2。可以做吗?

我当前的配置不起作用:

http_port 3128
http_port 3127

acl port_3128 port 3128
acl port_3127 port 3127

# 3128
cache_peer proxy01 parent 3128 0 no-query originserver name=proxy3128
cache_peer_access proxy3128 allow port_3128
cache_peer_access proxy3128 deny port_3127

# 3127 
cache_peer proxy02 parent 3128 0 no-query originserver name=proxy3127
cache_peer_access proxy3127 allow port_3127
cache_peer_access proxy3127 deny port_3128
Run Code Online (Sandbox Code Playgroud)

proxy squid transparent-proxy

5
推荐指数
2
解决办法
9218
查看次数

本地透明代理

我有一个不支持代理的应用程序,但我需要将其流量发送到本地代理。我想设置 IPTABLES 以透明地将流量重定向到给定的 IP 和 PORT (80) 以被拦截并重定向到本地代理。不幸的是,我发现的所有示例都假设透明代理设置在执行 NATTING 的 GW 中。是否可以将流量重定向到透明代理 (SQUID) 而无需 NAT?我很欣赏一个例子

iptables squid transparent-proxy

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

python get-pip.py 不能在代理后面工作

我在尝试运行尝试使用以下命令获取的devstack时遇到问题,我添加了详细参数pip

sudo -H -E python /opt/stack/devstack/files/get-pip.py -c /opt/stack/devstack/tools/cap-pip.txt --verbose
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出,它永远挂在那里,然后再试四次就退出了。

Created temporary directory: /tmp/pip-ephem-wheel-cache-WNf2he
Created temporary directory: /tmp/pip-req-tracker-YNDzMb
Created requirements tracker '/tmp/pip-req-tracker-YNDzMb'
Created temporary directory: /tmp/pip-install-qbbm3e
Setting pip!=8,<10 (from -c /opt/stack/devstack/tools/cap-pip.txt (line 1)) extras to: ()
Collecting pip!=8,<10 (from -c /opt/stack/devstack/tools/cap-pip.txt (line 1))
  1 location(s) to search for versions of pip:
  * https://pypi.org/simple/pip/
  Getting page https://pypi.org/simple/pip/
  Looking up "https://pypi.org/simple/pip/" in the cache
  No cache entry available
  Starting new HTTPS connection (1): pypi.org:443
Run Code Online (Sandbox Code Playgroud)

我的机器坐在一个代理后面,它使用白名单来允许一些域名,这些域名是允许的。

# …
Run Code Online (Sandbox Code Playgroud)

ssl proxy squid whitelist

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

鱿鱼代理响应缓慢 - 优化

我们在 Centos5.3 上使用squid 3.0,目前有 20 个用户(Internet Explorer)使用这个代理。问题是通过代理访问速度较慢。即使是像 google.com(.au) 这样的简单网页,也比没有代理的直接连接要长 5 秒。看起来大约有 2-5 秒的延迟。禁用 google.com(.au) 的缓存没有帮助。明确定义 dns_nameservers 没有区别。

服务器参数 : Dual-Core AMD Opteron(tm) Processor 2220, 6GB memory, 60gb SCSI hdd

cache_mem 256 MB
cache_dir ufs /usr/local/squid/var/cache 30000 16 256
maximum_object_size_in_memory 256 KB
minimum_object_size 0 KB(0 - 200 KB - 不是真正的区别,延迟仍然存在)
maximum_object_size 32 MB

您将如何根据服务器规范更改 squid.conf 中的这些规范。什么会导致延迟?同样对于像 yahoo.com.au 这样的更大的网页,有没有办法从缓存中接收页面的一部分,然后是其余的(图像最后)。目前 15 秒内没有任何内容,然后会出现整个网页。

proxy centos squid

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