我在带有数据库身份验证的 ubuntu 服务器上设置了鱿鱼代理。但是,在连接到代理时,如果我访问http://www.whatismyip.com/,它仍会显示我的 ACTUAL ip 地址。如何配置 Squid 以隐藏我的 IP 并隐藏它使用 squid 的事实。
我有一个 Squid 服务器在做 Squid-ly 的事情。我需要根据匹配 ACL 的特定标头让 Squid 回复。
标题是一个自定义的,看起来像
X-External-IP: 123.45.67.8
Run Code Online (Sandbox Code Playgroud)
我已经知道 tcp_outbound_ip,我正在使用类似的方法来嗅探请求标头以正确路由给定的 IP 地址,但如果可能的话,我还需要添加此回复。通过谷歌搜索给了我如何阻止请求头通过的结果——这不是我想要做的。
我有一台 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) 我正在尝试将 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) 我在 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(我不想要)。
我想要使用 Squid 拥有一个 HA 转发代理解决方案,并且我正在尝试在第 41 页的ELB 解决方案后面使用 Squid 服务器。
然而,我的转发代理服务是一种将流量转发到内部网络(返回到我的公司网络)的服务,即我的 Squid 服务器没有 Internet 连接。因此,对 google.com 等众所周知的 URL 进行健康检查不起作用。
根据上面第 41 页描述的解决方案,ELB 对 Squids 服务器进行健康检查的最佳方式是什么?在这种情况下我应该使用哪个ping 路径?
我正在尝试为我的内部服务器之一设置 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) 我在 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)
我还在使用ufdbguard
Kerberos 和 NTLM …
我有一台运行多个 docker 容器的服务器,配置如下:
| 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,即使是传入和目的地为我的反向代理的流量。
当我尝试通过网络访问我的反向代理时,我从鱿鱼收到以下错误 …
所以我的目标是只阻止某些 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)
有人知道如何解决这个问题吗?