使用单个IP和pfSense发布不同的站点 – Squid

我对pfSense相当陌生,请耐心等待。

总结一下,我有:

  • 启用了拆分DNS的networking。
  • 一个单一的IISnetworking服务器与单一的IP,不同的网站运行使用不同的主机头绑定通过端口80,所有网站正常工作的内部用户。
  • pfSense 2.3.4-RELEASE-p1在networking边缘安装了Squid 0.4.40。
  • 我看起来像下面的图片:

在这里输入图像说明

我正在努力实现的是:

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

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

问题:

  • 当外部用户input站点URL并回车时,浏览器开始尝试连接,但是几秒钟后,如果没有加载页面,就会失败,更奇怪的是,他们键入的URL从HTTPredirect到HTTPS。

故障排除:

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

问题:

  • 这种情况下甚至有效的pfSense /鱿鱼?
  • 如果是的话,我错过了什么? 如果不是,还有什么select?
  • 我是否必须通过在IIS上使用不同的端口来发布站点,并在Pfsense上启用端口redirect? (这是我试图避免的事情)

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

解决了:

我不得不花一些亲密的时间与鱿鱼手册,强烈build议真正了解它是如何工作的: http : //www.visolve.com/squid/whitepapers/reverseproxy.php

在阅读手册后,我决定从头开始,完全重新安装pfSense,因为我开始相信squid服务有问题,但是没有在日志中显示任何内容。

适用于我的scheme的技巧和窍门:

  • 确保DNS分割正确完成。
  • 确保pfSense首先使用您的内部DNS。 或者您在本地站点的pfSense上拥有静态DNS条目。 (主机文件或DNS转发器静态条目)
  • 即使您不使用它,您也必须configuration和启用转发代理,不需要启用透明模式。
  • 必须首先启用转发代理,如果您启用反向代理而不configuration转发,事情会变得很糟糕。
  • 你不需要告诉pfSense有关在部署中使用的主机头,如果你使用分裂的大脑DNS,实际上添加主机头导致鱿鱼服务在我的情况下。

因为花了我一些时间才弄明白,我想我最好回答/存档我的发现,这样我可以帮助那些像我一样卡住的人,

一步一步的指导:

第1步:通过转到服务=> Squid代理服务器=>常规启用转发代理

  • Eanble Squid Proxy: 检查
  • 代理接口: 局域网
  • 代理端口: 3128
  • 允许接口上的用户: 选中
  • 传输HTTP代理: 不检查
  • SSL中间过滤的人: 不检查

步骤2:通过转到Services => Squid Reverse Proxy => General来启用反向代理服务器

  • 反向代理接口: 广域网
  • 外部FQDN:从我的例子来看 ,这应该是xyd.com ,只是顶级域名,input其他任何一个都会导致错误,人们说,虽然这个域允许你只input一个域名,但是不会阻止你从代理的不同域名,只要其中一个匹配,但我不能确认。
  • 在未经授权的请求上重置TCP连接: 选中
  • 启用HTTP反向代理: 选中
  • 反向HTTP端口: 80

完成以上所有操作并保存之后,通过浏览到: Status => Services => Squid服务状态为绿色 ,如果不是,则重新检查您的工作,直到它为止。

现在可以定义外部DNS和内部DNS之间的映射了

步骤3:通过转到Services => Squid Reverse Proxy => Web Servers来定义内部Web服务器

  • 通过单击添加添加每个内部Web服务器(不是网站或URL)
  • 启用此同行:已选中
  • 对等别名:内部Web服务器的名称,只是一个易于引用的名称。 从我的例子: Web / IIS
  • 对等IP:DNSparsing的实际内部IP,从我的例子: 10.0.0.2
  • 对端口:内部网站使用的端口,从我的例子: 80
  • 对等协议: HTTP

一旦你完成了这一点,pfSense现在知道有一个内部的Web服务器,你刚刚应用的设置,你现在需要通过定义映射告诉它这个Web服务器有什么。

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

  • 启用此URI: 选中
  • 群组名称:任何名称,让您快速确定在这个组中使用的URL或主机头,我使用了类似“ Web / IIS组redirect组编辑 :在这里写长名称导致鱿鱼服务失败,只写短名没有空格。
  • 同行:您必须从我的示例中select能够回答此组中标识的URL的服务器:上一步中标识的Web服务器: Web / IIS
  • URI设置:你必须写在主机头,域名或URL,你希望pfSense匹配在这个组,这里是一个大的说明: 只写这个,如果你有透明模式ENABLED ,对于我的例子,透明模式是closures和所以我不必写任何主机标题,域名或URL

在确认Squid服务仍在运行之后,我做了外部用户和ta-da的testing! 有效 :)