我有一个鱿鱼服务器(透明),我想播放 youtube 视频和 Windows 更新。我知道有人发布了一个类似的问题,我看过这篇文章,但我正在使用 webmin 配置它,并想知道如何设置它以便我可以在其他网站上添加其他动态内容。
让我们从一个图表开始:

我们可以看到一个“典型”的 IPv4 公司网络:
所有计算机都有一个 proxy.pac 文件,用于指示使用哪个代理或是否直接连接。计算机只能访问本地 DNS(例如,没有 google.com 的名称解析。)
顺便说一句......公司内部不尊重RFC1918,使用公共地址!(历史原因)。明确地使用互联网代理使得没有问题成为可能。
如果我们迁移到 IPv6 会怎样?
IPv6 中的 Internet 访问很容易。实际上,只需连接 Internet IPv4 和 IPv6 中的代理即可。内部网络无事可做:

为什么不直接使用完整的 IPv6 网络?因为总是有不兼容 IPv6 的旧服务器..
这可能是最简单的解决方案。但这是最好的吗?
我认为过渡到 IPv6 是一个不用理会这个代理协议的机会!
哦是的!
在这个新架构中,我们有:
Explicit Internet Proxy 变成了 Transparent Internet ProxyLocal DNS成为本地域的Normal Recursive DNS+authorativeExplicit Company Proxy …我在主机上运行了一对 docker 容器,这些容器一起使我的应用程序得以实现。因此,对于我的应用程序的每次迭代/实例,都需要运行一对 docker 容器。到目前为止,我在运行第二个容器时使用 --link 参数来链接第一个容器,并从主机文件中获取第一个容器的 IP 以便以编程方式使用它。
现在,我需要为第二个 docker 容器设置透明代理。这样,第二个容器的所有 http(端口 80)流量都应该通过第一个容器的端口 8080。
第一个容器 IP:172.17.0.4 (在端口8080上运行代理服务)。第二个容器IP:172.17.0.6(有浏览器等客户端工具)。我想将172.17.0.6的所有 http 流量(端口80)转发到172.17.0.4的端口8080。
即)流量到 172.17.0.4 的 80 <---> 172.17.0.6 的 8080
我尝试在第二个容器中添加 iptables 规则以进行上述配置。但它们都不起作用。
~# sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 172.17.0.4:8080
Run Code Online (Sandbox Code Playgroud)
不起作用。
~# sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 172.17.0.4:8080
Run Code Online (Sandbox Code Playgroud)
不起作用。
~# sudo …Run Code Online (Sandbox Code Playgroud) 我有一台运行多个 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,即使是传入和目的地为我的反向代理的流量。
当我尝试通过网络访问我的反向代理时,我从鱿鱼收到以下错误 …
我想将所有 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 流本身内的任何内容))
好的,所以我有一个安装了 HAProxy 的服务器盒,我需要它将流量转发到两个 MySQL 服务器。它们都位于完全不同的数据中心。当我从配置中删除它时它会起作用:
source 0.0.0.0 usesrc clientip
但是,启用后我无法从 MySQL 服务器获得响应。
我在 HAProxy 服务器上有这些 IPTables 规则:
iptables -t mangle -N DIVERT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 111
iptables -t mangle -A DIVERT -j ACCEPT
ip rule add dev eth0 fwmark 111 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
并且无法建立连接。但是,当我添加此内容时:
iptables -A POSTROUTING -t nat -j MASQUERADE
它可以工作,但没有发送客户端 IP,只是发送代理 IP。
MySQL 服务器配置为将 …
我现在有以下配置:
# 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) 我有一个不支持代理的应用程序,但我需要将其流量发送到本地代理。我想设置 IPTABLES 以透明地将流量重定向到给定的 IP 和 PORT (80) 以被拦截并重定向到本地代理。不幸的是,我发现的所有示例都假设透明代理设置在执行 NATTING 的 GW 中。是否可以将流量重定向到透明代理 (SQUID) 而无需 NAT?我很欣赏一个例子
希望实现一个拥有 40-50 人的峰值用户和客户端的办公网络,我认为 nginx 可以用作透明代理来缓存对网络边缘任何基于 HTTP 的站点的请求。这可能吗?如果是这样,如何?
我尝试过谷歌搜索和搜索,但似乎所有资源似乎都指向托管您自己的服务器并缓存对这些服务器的请求。但是,我们还将在此网络中托管服务器,因此 nginx 也将用于将请求路由到这些服务器。
那么:如何将 nginx 设置为对 Internet 服务器请求的透明代理,以一种还可以代理对我们的 Web 服务器的调用的方式?
我有一个托管 200 多个域的 Web 服务器,但需要将其移动到另一个数据中心并获取新的 IP 地址。但是由于所有 DNS 设置都必须手动更新,所以我考虑是否可以在旧 IP 地址上设置某种透明代理,将所有 http/https 流量转发到新 IP。因此访问者不会发现迁移到 DNS 正在被纠正。
我的第一个想法是为此使用 nginx,但认为它会导致域上的 SSL 证书出现问题。有没有解决问题的好方法?