我实际上面临着一些与网络协议相关的问题。
我有自己的域名、拥有的 DMZ 和外部用户。在我的 DMZ 中,我有一个反向代理,可以很好地处理 HTTP 连接。我的外部用户可以完美地访问我的内部 Web 服务器。
但是,我想知道我的 Squid 是否可以对 MSSQL/PGSQL 请求(或者任何类型的连接)执行相同操作。
就像我的外部客户端点击我的反向代理一样,它只会将 cache_peer 到我的真实服务器?
问候。
答案1
由于环境原因,我唯一的选择是使用 iptables 进行原始转发。
由于我们没有 DPI,所以一切都取决于 3 个过滤器:
- 来源
- 目的地
- 港口
此外,由于它必须是透明的,我们必须使用主机文件将目标域设置为我们的代理服务器。对于目标,无需进行任何更改。
# My SQL try to contact the dest. SQL (who is in fact, my proxy) so I changed the destination to the real one
iptables -t nat -A PREROUTING -i eth0 -s [YOUR_INTERNAL_SERVER] -p tcp --dport 15432 -j DNAT --to-destination [YOUR_DESTINATION_SERVER]
# Little restriction
iptables -t filter -A FORWARD -p tcp --dport 15432 -m state --state NEW -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 15432 -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 15432 -m state --state ESTABLISHED -j ACCEPT
# If they contact my SQL, I set the source as my relay so my server could reply back.
iptables -t nat -A POSTROUTING -o eth0 -d [YOUR_INTERNAL_SERVER] -p tcp --dport 15432 -j SNAT --to-source [YOUR_PROXY]