在 pfSense/FreeBSD 上安装 Squid

今年我们扯了一根自己的 4096 kbps ADSL 线路以便我们小组内部使用,不屏蔽端口,想访问什么就访问什么。为了同时访问工作网络和小组的网络,我们需要在不改变自己工作网络的网线和 IP 地址的情况下就能访问这根新的 ADSL 网络,所以需要在现有的工作网络上加一个 firwall/gateway 把 ADSL 和工作网络连接起来。简单的说我们现在有两套完全独立上网的网络,这样用户拿着笔记本进来插入工作网络网线就可以用工作网络上网,也可以改变代理服务器设置后用刚建的 ADSL 网络上网,或者不用网线,打开 WiFi 后直接进入 ADSL 所在的无线网络上网。下图中,如果 172.16.20.12 这台机器想上网,它可以使用 172.16.20.1 代理服务器通过工作网络上网,也可以通过使用代理服务器 172.16.20.10 通过 小组网络和 ADSL 上网。

小组:电话线 -- ADSL 路由器(10.0.0.1/8)
                 |
                 |
                 --------------  Firewall(10.0.0.2/172.16.20.10)
                                     |
                                     |
工作:Internet -- 路由器 -- 交换机 -- 工作网络(172.16.20.0/23)

为什么两个的网络要连起来呢?因为大家都不喜欢在网络之间切换,改 IP、网络设置、代理服务器等,很多时候大家需要同时在两个网络上,用工作网络(上网速度慢,很多端口被屏蔽,严格限制)访问内部所有的服务器,用新建的 ADSL 上网(网络速度快,没有屏蔽端口)。

要建这个 firewall/proxy/gateway 不需要很强大的硬件防火墙和服务器,所以 VPSee 决定把防火墙和 squid 服务安装在同一台机器上,节省资源。上个月对配置 Squid 服务器的硬件要求做了一些调查,接下来就是要在服务器上安装 Squid 服务。

pfSense 是一个基于 FreeBSD 的防火墙版本,从另一个 FreeBSD 防火墙 M0n0wall 发展而来,具有类似功能的 Linux 防火墙发行版本有 SmoothWall, Endian, IPCop, ClearOS, Untangle 等,试用了 一下 SmoothWall 发现非常简单易用,但是缺少一些我们需要的功能,SmoothWall 为了方便家庭用户使用把一些配置术语刻意简化了,比如配置网络的时候用到 Red/Green/Orange 让我摸不着头,我宁愿看到 nge0, bge0, eth0, 00:02:B3:CA:7B:92 等这些熟悉的术语,至少我能马上明白是什么意思。在测试 SmoothWall 的时候还遇到一些奇怪问题,比如启动了 DHCP 服务以后,客户端却不能及时得到 IP,要过几十秒钟,有时候甚至得不到 IP. pfSense 比 SmoothWall 强大很多,可自定义的模块很多,安装和配置第三方软件也很方便,使用起来特别顺手。

在 pfSense 上安装 Squid

安装 pfSense 过程很简单,这里省略,配置完 pfSense 网络接口后就开始安装 Squid,打开 pfSense 管理界面,在 System->packages 下面找到 squid 和 lightsquid(查看 squid 流量的工具)安装,成功后会在 Services 下看到 Proxy server 菜单,进去后可以配置 Squid 服务;在 Status->Proxy report 配置 Lighttpd 和查看 Squid 流量信息。
pfsense-squid

安装完 squid 后根据需要做一下配置,值得注意的是,默认安装后只有和这台 firewall/squid 服务器在同一个网段的机器才能通过这个 squid 访问 Internet,如果其他网段的电脑也想使用这个代理服务器的话除了在 Firewall: Rules 增加规则外,还需要在 Services->Proxy server: Access control 中增加网段到 Allowed subnets.

安装完 lightsquid 后要做如下配置:
1、配置 squid(Proxy server),enable /var/squid/log 路径;
2、配置 lightsquid(Proxy report)时需要点击 Refresh 按钮去创建 lightsquid reports,否则会得到一个出错页面。

在 FreeBSD 上安装 Squid

如果不用 pfSense,想在 FreeBSD 完整操作系统上安装 Squid:

# cd /usr/ports/www/squid
# make install

根据自己需要修改 squid.conf 配置文件:

# cp /usr/local/etc/squid/squid.conf.default /etc/squid/squid.conf
# vi /etc/squid/squid.conf

初始化 cache:

# /usr/local/sbin/squid -z

测试 squid 是否能正常运行:

# /usr/local/sbin/squid -NCd1

评论 (4 Comments)

  1. 看你的文字还真有难度啊,大部分技术文字看不懂,目前还处于在自己的电脑上用Sun VirtualBox学习命令行的CentOS阶段。

  2. 问一个小白问题:
    在Linux的命令行下,比如某一命令之后,显示的内容有100行,而我的虚拟机只能显示最后30行,前面的70行都被“顶替”了,请问怎么才能看到上面的内容?
    谢谢。

  3. 比如:# ls -l /usr/bin | more

    如果你用的是 windows 的话可以在外面装一个 putty,然后 ssh 到你的 centos 里(virtualbox)操作,这样你可以看到更多行,或者全屏你的 virtualbox 后改 terminal 的字体也会看到更多行。

  4. FreeBSD# cp /usr/local/etc/squid/squid.conf.default /etc/squid/squid.conf
    cp: /etc/squid/squid.conf: No such file or directory

发表评论