当前位置: 首页 > 编程日记 > 正文

Linux下DNS轮询与Squid反向代理结合

一、安装反向代理服务器 1.下载反向代理服务器软件采用squid,下载地址: http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5-src.tar.gz 下载后存放在/usr/local/squid/src目录里,文件名是 squid-2.2.STABLE5 ...

一、安装反向代理服务器

1.下载反向代理服务器软件采用squid,下载地址:

http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5-src.tar.gz

下载后存放在/usr/local/squid/src目录里,文件名是

squid-2.2.STABLE5-src.tar.gz ;

2.解压代理服务器软件包:

进入/usr/local/squid/src目录,键入如下命令:

gzip -dc squid-2.2.STABLE5-src.tar.gz | tar -xvf -

这个命令将代理服务器软件包解开,建立一个目录叫作squid-2.2.STABLE5,并且把所有的文件放在这个目录里面。

3. 编译源程序

首先运行配置脚本,以便生成适合您的机器的编译脚本。命令格式是:

./configure

这种方式产生的编译脚本编译后默认安装路径是/usr/local/squid。

如果想改变安装路径,需要用以下格式:

./configure -prefix=/some/other/directory

这种方法编译后安装到/some/other/directory里面。

生成编译脚本后,可以正式开始编译了。命令为:

make

4、 安装Squid代理服务器

编译通过后,用以下命令安装:

make install

安装完成后,会在您指定的安装路径里产生一个squid目录,squid目录下有三个目录:etc、bin、logs。其中etc里面是配置文件,bin里面是执行文件,logs里面是日志文件。

二、调试反向代理服务器

安装结束后就是调试服务器,使其按照您的要求工作。Squid的配置文件只有一个,在etc目录里,名字是squid.conf,所有的配置选项都在这个文件里面。而且每个配置项目都有注释说明。我们只介绍与反向代理有关的几个项目。

首先,在squid文件里面找到下列配置项:

cache_mem

这里可以添上您准备给squid作为高速缓存使用的内存大小。注意,如果您的机器有N兆内存,那么,推荐您在这里添的数字是N/3。

cache_dir /usr/local/squid/cache 100 16 256

这里的第一个数字100是您准备给squid作为cache使用的硬盘空间大小,单位是兆。如果您想划100M空间当作cache,那么这里就写100。

acl, http_access, icp_access

填写"allowedip"和"allowedip1"ACL访问控制列表。这里应该填写你对外公开的服务器的IP,比如此例的两个WEB服务器对应的外部地址为202.99.157.10 和 202.99.157.18,

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl all src 0.0.0.0/0.0.0.0

acl allowedip src 202.99.157.10/255.255.255.255

acl allowedip1 src 202.99.157.18/255.255.255.255

http_access deny manager all

http_access allow allowedip

http_access allow allowedip1

http_access deny all

icp_access allow allowedip

icp_access allow allowedip1

icp_access deny all

cache_mgr webmaster@test.com.cn

这里填写cache管理员的Email地址,系统出错会自动提醒cache管理员。

******以上部分均为squid的通用设置以下为关于反向代理部分的设置******

httpd_accel_host test.com.cn

httpd_accel_host test1.com.cn

此处设置反向代理的主机名

httpd_accel_port 80

此处设置反向代理的WEB服务端口号

#httpd_accel_with_proxy off

此处设置开反向代理的同时,是否开普通代理服务

修改完配置文件,在正式运行squid代理服务器之前,先进行初始化。命令如下:

% /usr/local/squid/bin/squid -z

% /usr/local/squid/bin/squid

检查cache.log文件确保所有部分运行正常。如果有出错信息或系统不能正常启动,一般情况是由于目录和文件的存取权限导致的,请仔细检查各目录和文件的权限设置。其中特别需要注意的是初始化之前应该将squid目录设置成可写,然后将创建的cache目录和logs目录设置成可写。如果一切正常,那么就可以投入使用了。系统默认的服务端口是3128。

反向代理服务器软件安装完毕后,将该服务器在80端口的http服务设置成不启用。

三、调整DNS服务器设置

假设DNS服务器(以下称标准DNS服务器)将test.com.cn解析为202.99.157.10,将test1.com.cn解析为 202.99.157.18,那么我们在配置反向代理服务器这台机器的DNS服务时(我们以下称为内部DNS服务器),可以针对内部地址的WEB做如下变换:

主机名 标准DNS解析为 内部

DNS解析为

http://www.test.com.cn/ 202.99.157.10 192.168.1.10

http://www.test1.com.cn/ 202.99.157.18 192.168.1.18

然后把202.99.157.10和202.99.157.18这两个IP绑定到反向代理服务器上,这样,外界对 http://www.test.com.cn/http://www.test1.com.cn/ 的访问就会由标准DNS解析到反向代理服务器上,默认WEB服务器的服务端口是80,但是由于反向代理服务器的80端口的http服务已经终止,此时的访问会没有结果。为了能使该访问请求能够成功完成,需要在反向代理服务器和真实的http://www.test.com.cn/http://www.test1.com.cn/ 的WEB服务器之间建立联系。要和有内部地址的真实WEB服务器建立联系,首先反向代理服务器上需要再绑定一个内部IP,比如192.168.1.2,其余部分由transproxy这个透明代理软件来完成。Transproxy服务软件通过设置,启用端口81和squid建立联系,把内部DNS对 http://www.test.com.cn/http://www.test1.com.cn/的解析地址传给squid服务器,然后通过 squid.conf里面关于服务器端口的设置,将服务端口设置为80,这样,squid就访问内部真实WEB服务器192.168.1.10和 192.168.1.18的80端口,把需要访问的WEB内容取回来,放在squid的cache里供外界访问。透明代理软件transproxy设置完成后,需要通过设置ipchains规则,将外界发往反向代理服务器的80端口的http请求转发到transproxy 的81端口,这样就建立了外界通过反向代理间接和真实WEB服务器之间的联系。

四、安装透明代理软件

http://transproxy.sourceforge.net/ 透明代理软件 帮助文档

透明代理服务器安装分如下几步:下载、解压、编译、安装、配置几步。首先需要到http://www.transproxy.nlc.net.au /transproxy-1.3.tgz 或者http://sourceforge.net/project/showfiles.php?group_id=18383下载 transproxy软件包,也放在/usr/local/src目录里,然后用gzip解压该软件包。具体命令是:

gzip -dc transproxy-1.3.tgz |tar -xvf -

解压后在/usr/local/src目录下面生成tproxy目录,里面是transproxy的源程序。(可能解压后没有configure,直接 make编译即可)进入该目录,用make命令编译该软件,用make install命令安装transproxy。Transproxy的编译和安装都很简单,下面就需要配置transproxy。根据系统负荷的轻重不同,transproxy可以配置为两种运行方式:负荷轻时,用inetd方式,负荷重时,用standalone server方式。具体配置方法如下:

1. inetd方式:

在/etc/services文件中添加下面一行:

tproxy 81/tcp #transproxy

在/etc/inetd.conf文件中添加下面一行:

tproxy stream tcp nowait nobody /usr/sbin/tcpd tproxy 202.99.157.10 3128

tproxy stream tcp nowait nobody /usr/sbin/tcpd tproxy 202.99.157.18 3128

2. standalone server方式:

在/etc/rc.d/rc.local文件中加入下面一行:

/usr/local/sbin/tproxy -s 81 -r nobody 202.99.157.10 3128

/usr/local/sbin/tproxy -s 81 -r nobody 202.99.157.18 3128

设置完毕后重新启动反向代理服务器,所有新设置的功能即可实现。

五、设置转发规则

ipchains -A input -p tcp -d 202.99.157.10/255.255.255.255 80 -j REDIRECT 81

ipchains -A input -p tcp -d 202.99.157.18/255.255.255.255 80 -j REDIRECT 81

这里将送往202.99.157.10和202.99.157.18的80端口的所有http请求转发给由transproxy管理的端口81。

到此为止,透明反向代理配置完成了。

让我们模拟一下一位因特网用户访问http://www.test.com.cn/这台拥有内部IP(192.168.1.10)的WEB服务器的过程。首先,该用户的请求由标准DNS服务器解析为202.99.157.10,则用户的机器向202.99.157.10的80端口发出请求,要求浏览 http://www.test.com.cn/这台WEB服务器的页面,而202.99.157.10这台机器正是我们的反向代理服务器,按照反向代理服务器的ipchains规则发往该服务器80端口的请求被转发到81端口,而81端口由transproxy 控制,transproxy把请求发给squid,让squid去取http://www.test.com.cn/这个页面。而反向代理服务器上的内部 DNS服务器把http://www.test.com.cn/解析为192.168.1.10,默认的反向代理端口是80,这样,squid就到 192.168.1.10的端口80上请求WEB服务。而192.168.1.10正是我们的http://www.test.com.cn/的真实 WEB服务器,它的80端口开放着http服务。这样,squid从192.168.1.10服务器上取回页面传回给202.99.157.10 然后再传回给因特网上的对http://www.test.com.cn/有访问请求的用户,并把该页面放在squid的cache中。这样就完成了一次因特网用户到拥有内部IP的WEB服务器的访问过程。以后再有因特网用户再访问http://www.test.com.cn/这个页面时,squid就直接从cache里提取缓存的页面,这样可以提高WEB服务器的访问效率。

因特网用户对http://www.test1.com.cn/的访问也和对http://www.test.com.cn/的访问一样,原理是相同的,只不过访问的真实服务器不同而已。

从上面的访问例子我们可以看出,因特网上的用户在访问http://www.test.com.cn/这个WEB 服务器时,根本不和真正提供http://www.test.com.cn/页面的服务器打交道,只和反向代理服务器打交道,这样,在破坏互联网主机的黑客行为日益猖獗的情况下,只要正确设置反向代理服务器,确保反向代理服务器不被攻破,就会很大程度上杜绝因特网上的黑客对内部服务器的攻击。万一代理服务器被攻破,也不会对您的WEB服务器造成什么损害,您只要恢复反向代理服务器就行了。因此,本方法对您的WEB服务器起到一定程度的保护作用。而且在 WEB浏览量较多的情况下,由于squid的反向代理有加速功能,可以加快页面的浏览速度。

六、其他

反向代理应用过程中,要注意访问控制功能,应该只允许访问你开放的内部服务器,而不允许访问其他服务器,否则,你的反向代理服务器就会成为互联网上一台公开的不用验证的代理服务器,那就危险啦。另外,如果您有多台WEB服务器,可以选一台性能较好的作为反向代理服务器,内部的若干WEB服务器可以用PC或低档服务器代替,因为外部的访问压力主要集中在反向代理服务器上。

另外此方案如果和linux下面的防火墙方案结合使用会更加完美。

相关文章:

从iOS证书申请到签名文件生成

2019独角兽企业重金招聘Python工程师标准>>> 苹果的应用在发布时(无论是Adhoc发布还是AppStore正式发布)都需要一个签名文件。这个签名文件是由苹果后台生成的,它把用户生成的证书,注册设备,AppID等统统连在…

GitHub 热榜:来膜拜这个流弊的 AI 框架!

近年来,人工智能正在进入一个蓬勃发展的新时期,这主要得益于深度学习和CV领域近年来的发展和成就。在这其中,卷积神经网络的成功也带动了更多学术和商业应用的发展和进步。为了避免“内卷”,更多人选择学习进阶,但是仍…

ASP.net:添加.net(2.0C#)FCKeditor在线编辑器步骤

1.下载本版本的编辑器压缩包。源码下载地址 2.解压缩打开文件夹拥有如下文件&#xff1a;3.在VS中添加“选择项”加载在此文件夹的Bin下FredCK.FCKeditorV2.dll。4.在你的网站的web.config的 <appSettings>枝节中加入&#xff1a;<appSettings><add key"FC…

安装varish作为缓存和代理

1&#xff0c;Varish的使用有两种模式&#xff1a;第1种 Nginx(负载)varish(缓存)WEB第2种 Varish&#xff08;缓存和负载&#xff09;web2&#xff0c;varish是以内存作为共享容器的&#xff1a;内存的大小决定了它的缓存容量。相对于主要以硬盘为存储的squid来说要高效的多…

英伟达 400 亿美元收购 ARM 受阻,不妨考虑 VMware?

作者 | 马超 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;目前半导体行业的发展可以用冰火两重天来形容&#xff0c;传统的桌面及移动SOC&#xff08;System on a Chip&#xff0c;系统级芯片&#xff09;市场已经基本停止增长&#xff0c;而云计算成了各…

单目和双目模式识别---游戏控制

http://v.youku.com/v_show/id_XMzQwMjUwNTY.html http://blog.csdn.net/anthonywanted/article/details/3024535转载于:https://www.cnblogs.com/pengkunfan/p/4220144.html

vsftpd企业应用快速部署文档

系统环境&#xff1a;centos 5.6 vsftpd&#xff1a;2.3.5 vsftpd是UNIX/Linux中非常安全且快速的FTP服务器&#xff0c;目前已经被许多大型站点所采用。vsftpd支持将用户名和口令保存在数据库文件或数据库服务器中。登录FTP有三种方式&#xff0c;匿名登录、本地用户登录和虚拟…

华为持续引领,开辟5G Massive MIMO绿色新赛道

今日&#xff0c;在华为举办的无线首届媒体沙龙暨MBBF2021预沟通会上&#xff0c;华为无线产品线首席营销官甘斌发表了“华为持续引领&#xff0c;开辟5G Massive MIMO绿色新赛道”的主题发言&#xff0c;分享了Massive MIMO的下一个突破性创新方向&#xff0c;引领绿色5G网络建…

MRTG—网络监控工具

最近一段时间在研究后台服务器测试技术&#xff0c;需要对后台服务器的各项性能指标进行实时监控和统计&#xff0c;也由此让我回想起之前公司曾经接触过的一个服务SNMP&#xff0c;SNMP是一种称之为简单网络管理协议的服务&#xff0c;主要是用于获取系统的流量、I/O、CPU、Me…

IBM会话设置和覆盖规则

为什么80%的码农都做不了架构师&#xff1f;>>> 中文版地址&#xff1a;http://www-01.ibm.com/support/docview.wss?uidswg21659740 Technote (troubleshooting) Problem(Abstract) It is possible to set the HTTP Session time-out in various places on th…

FOSCommentBundle功能包:设置Doctrine ODM映射

Step 2b: Setup MongoDB mapping The MongoDB implementation does not provide a concrete Comment class for your use,you must create one: MongoDB实现并不提供为您所用的具体评论类&#xff0c;您必须要创建一个。 1234567891011121314151617181920212223<?php// src…

lighttpd 负载均衡-反向代理+cache浅谈

Lighttpd有硬盘级别的cache-(mod_cache)和内存级别的cache(mod_mem_cache&#xff09;&#xff0c;内存级别的cache是国人的产品&#xff0c;我喜欢用lighttpd就是因为它具有2种选择的cache&#xff0c;像我的实际需求&#xff0c;由于系统存在很多图片&#xff0c;但是容量不大…

设置网页标题图标

网页图标如图上位置 设置语句如下&#xff1a; link rel:"SHORTCUT ICON", href:"/images/logo.ico"

DeepMind 的新强化学习系统,是迈向通用人工智能的一步吗?

作者&#xff1a;Ben Dickson来源&#xff1a;数据实战派前言尽管已经掌握围棋、星际争霸 2 和其他游戏&#xff0c;深度强化学习模型的主要挑战之一是&#xff0c;它们无法将其能力泛化到训练领域之外。这种限制使得将这些系统在现实世界中的应用变得非常困难&#xff0c;因为…

无法访问D盘,执行页内操作时的错误

打开D盘后出现“无法访问D:/,执行页内操作时的错误”怎么办&#xff1f;既便D盘有病毒也不会出现这种状况&#xff0c;初步判断是D: 分区表错误&#xff0c;用系统安装光盘开机进入纯DOS下的修复模式中用 CHKDSK /R 或 /F来修复一下试试看。在cmd下输入chkdsk空格d:空格/f本文转…

怎样修改Ubuntu的root帐户密码并使用root登录

Ubuntu版本11.04 Ubuntu是一套基于Debian的Linux系统&#xff0c;它追求的是“Just Work”&#xff0c;最新的7.10版本发布于2007年10月&#xff0c;不同于其他Linux发行版本&#xff0c;Ubuntu的所有版本都是免费的&#xff0c;包括企业版。第一次安装Ubuntu&#xff0c;发现比…

CSDN 开学见面礼!限时免费申请,手慢无!

暑假即将结束&#xff0c;金秋开学季来袭。别让年轻的自己虚度光阴&#xff0c;现在扫码申请学习资格&#xff0c;10&#xff0b;场考前辅导&#xff0c;600&#xff0b;分钟大咖讲解与答疑直播免费看&#xff01;大厂CTO级别导师陪你加buff&#xff01;3周带你掌握大厂工程师基…

【No.1_sizeof与strlen】

【注意】 程序语言只是我们与计算机交流并让计算机实现我们创造性思想的工具&#xff0c;可以并鼓励深入掌握一门语言&#xff0c;但千万别沉迷于钻某种语言的牛角尖&#xff0c;一定要把握好二者间的度 本帖属不定时连载贴&#xff0c;以试卷的形式提出一个比较基础的问题供大…

Linux: CentOS 7下搭建高可用集群

转载&#xff1a; http://linux.cn/article-3963-1.html本文以两台机器实现双集热备高可用集群&#xff0c;主机名node1的IP为192.168.122.168 &#xff0c;主机名node2的IP为192.168.122.169 。一、安装集群软件必须软件pcs&#xff0c;pacemaker&#xff0c;corosync&#xf…

史上最大规模 DDoS 攻击,每秒 1720 万次 HTTP 请求

整理 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 互联网基础设施公司 Cloudflare 表示&#xff0c;已化解了迄今为止所记录的最大规模的容量耗尽分布式拒绝服务&#xff08;DDoS&#xff09;攻击。 近日&#xff0c;互联网基础设施服务提供商 Cloudfl…

如何查看当前Linux的版本

查看linux的版本主要有三种方法&#xff1a;1) 登录到服务器执行 lsb_release -a &#xff0c;即可列出所有版本信息&#xff0c;例如&#xff1a;[root3.5.5Biz-46 ~]# lsb_release -a LSB Version: 1.3Distributor ID: RedHatEnterpriseASDescription: Red Hat Enterprise Li…

AIX5.3安装bash shell

一、下载bash shell&#xff0c;地址是&#xff1a;ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/bash/ 二、安装bash shell,rpm -ivh bash-3.2-1.aix5.2.ppc.rpm三、你现在就可以用了&#xff0c;赶紧bash试试&#xff01;----你可能会有疑问我的系统的是…

经典算法题每日演练——第六题 协同推荐SlopeOne 算法

原文:经典算法题每日演练——第六题 协同推荐SlopeOne 算法相信大家对如下的Category都很熟悉&#xff0c;很多网站都有类似如下的功能&#xff0c;“商品推荐”,"猜你喜欢“&#xff0c;在实体店中我们有导购来为我们服务&#xff0c;在网络上 我们需要同样的一种替代物&…

基于 Python 环境搭建 - YOLO 实现吸烟行为监测

作者|李秋键 出品|AI科技大本营(ID:rgznai100) 引言 目标检测是一种与计算机视觉和图像处理有关的计算机技术, 用于检测数字图像和视频中特定类别的语义对象 (例如人、建筑物或汽车等), 其在视频安防,自动驾驶, 交通监控, 无人机场景分析和机器人视觉等领域有广阔的应用前景。近…

Ubuntu 下安装thttpd Web服务器

不知道大家是不是真的需要用appache这么复杂的功能这么强大的web server&#xff0c;其实有很多时候使用webserver也只是一种远程共享访问的方式。这里&#xff0c;Ubuntu repository的提供了一个简单的web server&#xff0c;名为thttpd&#xff0c;即 tiny http daemon. th…

mysql 新增 删除用户和权限分配

1. 新增用户 mysql>insert into mysql.user(Host,User,Password) values("localhost","lionbule",password("hello1234")); mysql>flush privileges; 2. 修改用户密码 mysql>update mysql.user set passwordpassword(new password)…

简历空空,如何编写一个面试时能拿的出手的真实项目?

最近&#xff0c;新一波的秋招全面开启&#xff0c;各大互联网行业像腾讯、百度、美团、哔哩哔哩&#xff0c;都加入到招聘队伍&#xff0c;秋招面试也进入白热化。作为一名求职者&#xff0c;要想在招聘浪潮中抢先一步&#xff0c;锁定大厂Offer&#xff0c;现在就要着手准备起…

mysql通过查看跟踪日志跟踪执行的sql语句

在SQL SERVER下跟踪sql采用事件探查器&#xff0c;而在mysql下如何跟踪sql呢&#xff1f; 其实方法很简单&#xff0c;开启mysql的日志log功能&#xff0c;通过查看跟踪日志即可。 开启mysql的日志log方法&#xff1a; windows环境下的配置方法&#xff1a; 我使用的版本&#…

用thttpd做Web Server

httpd是busybox中自带的web server&#xff0c;功能弱&#xff0c;不支持认证和CGI。thttpd和boa都支持认证CGI&#xff0c;功能比较全&#xff0c;Boa是一个单任务的小型http服务器&#xff0c;设计的小型系统不要数据库操作,所以可以使用thttpd作为server.1. 编译thttpdccarm…

ii第六单元 文本处理工具

linux中常用的基础命令 diff 命令 patch 命令 grep 命令 Cut 命令 sort 命令 uniq 命令 tr 命令 sed 命1.diff 命令 比较两个文件的不同 用于创建补丁文件 diff -u file file.new >file.path ##生成补丁文件 yum install patch -y ##安装打补丁工具 &#xff08;1&…