使用单个 IP 和 pfSense 发布不同的网站 - Squid

使用单个 IP 和 pfSense 发布不同的网站 - Squid

我对 pfSense 还很陌生,所以请耐心等待。

总结一下,我有:

  • 启用了拆分 DNS 的网络。
  • 单个 IIS Web 服务器具有单个 IP,不同的站点使用通过端口 80 绑定的不同主机头运行,所有站点均可供内部用户正常使用。
  • pfSense 2.3.4-RELEASE-p1 与 Squid 0.4.40 安装在网络边缘。
  • 我所看到的如下图所示:

在此处输入图片描述

我想要实现的目标:

  • 使用相同的内部 URL 向外部用户发布内部网站。
  • 不需要透明代理(用于内部缓存和 CalmAV)和 HTTPS。

我读到 pfSense 可以使用反向代理来实现这个技巧,我按照这里提到的步骤来启用它(除了对内部站点使用相同的 80 端口):https://www.reddit.com/r/homelab/comments/2vyiiy/til_reverse_proxy_via_squid_in_pfsense/

问题:

  • 当外部用户输入网站URL并按回车键时,浏览器开始尝试连接,但几秒钟后就失败了,没有加载页面,更奇怪的是他们输入的URL从HTTP重定向到HTTPS。

故障排除:

  • 禁用内部通信的透明 HTTP 代理。
  • Squid 日志未显示与 URL 重定向相关的任何内容。
  • pfSense 防火墙日志显示,外部用户能够使用 HTTP 连接一次,然后所有流量都使用 HTTPS 进行传输

问题:

  • 这种情况对于 pfSense/Squid 是否有效?
  • 如果是,我遗漏了什么?如果不是,有什么替代方案?
  • 我是否必须使用 IIS 上的不同端口发布网站并在 Pfsense 上启用端口重定向?(这正是我想要避免的事情)

非常感谢任何额外的步骤或故障排除建议。

答案1

解决了:

我不得不花一些时间仔细阅读 squid 手册,强烈建议真正理解它的工作原理:http://www.visolve.com/squid/whitepapers/reverseproxy.php

阅读手册后,我决定从头开始并重新安装 pfSense,因为我开始相信 Squid 服务出了问题,它没有在日志中显示任何内容。

适用于我的场景的提示和技巧:

  • 确保 DNS 拆分正确完成。
  • 首先确保 pfSense 使用您的内部 DNS。或者您在 pfSense 上为本地站点提供了静态 DNS 条目。(主机文件或 DNS 转发器静态条目)
  • 即使您可能不使用它,您也必须配置并启用正向代理,但无需启用透明模式。
  • 必须首先启用正向代理,如果在没有配置正向的情况下启用反向代理,情况就会变得很糟糕。
  • 如果您使用裂脑 DNS,则无需告诉 pfSense 部署中使用的主机头,实际上,在我的场景中添加主机头会导致 squid 服务中断。

因为我花了一些时间才弄清楚,所以我认为我最好回答/存档我的发现,这样我就可以帮助其他像我一样陷入困境的人,

一步一步的指南:

步骤 1:通过转到“服务”=>“Squid 代理服务器”=>“常规”启用正向代理

  • Eanble Squid 代理:查看
  • 代理接口:局域网
  • 代理端口:3128
  • 允许用户访问界面:已检查
  • 传输 HTTP 代理:未选中
  • SSL 中间人过滤:未选中

步骤 2:通过转到“服务”=>“Squid 反向代理”=>“常规”启用反向代理

  • 反向代理接口:广域网
  • 外部 FQDN:从我的示例来看,这应该是西域网,仅顶级域名,输入其他任何内容都会导致错误,人们说虽然此字段只允许您输入一个域名,但它不会阻止您代理不同的域名,只要其中一个匹配,但我无法确认。
  • 未经授权的请求时重置 TCP 连接:已检查
  • 启用 HTTP 反向代理:已检查
  • 反向 HTTP 端口:80

完成上述所有操作并保存,在继续之前,请通过浏览以确保 squid 服务已启动并正在运行:状态 => 服务 => Squid 服务状态绿色,如果不是,则重新检查你的工作,直到符合为止。

现在是时候定义外部 DNS 和内部 DNS 之间的映射了

步骤 3:通过转到“服务”=>“Squid 反向代理”=>“Web 服务器”来定义内部 Web 服务器

  • 通过单击添加您拥有的每个内部 Web 服务器(不是网站或 URL)添加
  • 启用此对等点:已检查
  • 对等别名:内部 Web 服务器的名称,仅用于方便引用的名称。从我的示例来看:Web/IIS
  • 对等 IP:DNS 解析的实际内部 IP,从我的示例来看:10.0.0.2
  • 对等端口:内部站点正在使用的端口,从我的示例来看:80
  • 对等协议:HTTP

完成此操作后,pfSense 现在知道有一个具有您刚刚应用的设置的内部 Web 服务器,您现在需要通过定义映射来告诉它这个 Web 服务器有什么。

步骤 4:通过转到服务 => Squid 反向代理 => 映射来定义内部 URL

  • 启用此 URI:已检查
  • 组名:任何可以让你快速识别此组中使用的 URL 或主机标头的名称,我使用了类似“Web/IIS 组重定向组编辑:在此处写入过长名称会导致 squid 服务失败,只能写入不带空格的短名称。
  • 对等点:您必须从我的示例中选择能够应答此组中标识的 URL 的服务器:上一步中标识的 Web 服务器:Web/IIS
  • URI 设置:您必须在此组中写入您希望 pfSense 匹配的主机头、域名或 URL,这里有一个重要注意事项:仅当您启用了透明模式时才写入此项在我的例子中,透明模式是关闭的,所以我不需要写任何主机头、域名或 URL

确保 Squid 服务仍在运行后,我以外部用户身份进行了测试,结果成功了 :)

相关内容