Linux架设代理服务器Word下载.docx
- 文档编号:8640058
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:10
- 大小:21.90KB
Linux架设代理服务器Word下载.docx
《Linux架设代理服务器Word下载.docx》由会员分享,可在线阅读,更多相关《Linux架设代理服务器Word下载.docx(10页珍藏版)》请在冰点文库上搜索。
3.提高网络的安全性
这一点是很明显的,如果内部用户访问Internet都是通过代理服务器,那么,代理服务器就成为进入Internet的唯一通道;
反过来说,代理服务器也是Internet访问内部网的唯一通道,如果你没有做反向代理,则对于Internet上的主机来说,你的整个内部网只有代理服务器是可见的,从而大大增强了网络的安全性。
1.3代理服务器的分类及特点
通常的代理服务器分类方法,是从实现的机理分为线路层代理、应用层代理、智能线路层代理等等。
在这里,我想从另外一个角度出发,把代理服务器分为传统代理服务器和透明代理服务器。
我认为有必要好好搞清楚两者的区别,只有真正明白了内在地机理,才能在遇到问题时,有章可循,才不会一头雾水,不知从何解决问题。
因此,下面我们就通过具体的实例来说明。
本章的写作思路来源于PaulRussell所写的IPCHAINS-HOWTO。
下面所举的例子也来源于该文章,我觉得我读该文的最大收获在于对内部网访问外部网以及外部网访问内部网的实现手段有了一个清晰的认识。
当然,这里所谓的内部网是指使用私有IP的内部网络。
我们的例子都基于以下假设:
你的域名为,你的内部网(192.168.1.*)用户通过(外部接口eth0:
1.2.3.4;
内部接口eth1:
192.168.1.1)的代理服务器访问Internet,换句话说,该代理服务器是唯一一台直接与Internet和内部网相连的机器。
并假该设代理服务器上运行着某种代理服务器软件(如squid)。
假设内部网中某一客户机为(192.168.1.100)。
+-------------------+
|内部网(192.168.1.*)|eth1+--------+eth0DDN
|+------------|proxy|<
===============>
Internet
|client198.168.1.100|+--------+
eth0:
1.2.3.4
eth1:
198.168.1.1
1.3.1传统代理
在以上基础上我们做以下工作:
1.代理服务软件被绑定到代理服务器的8080端口。
2.客户端浏览器被配置使用代理服务器的8080端口。
3.客户端不需要配置DNS。
4.代理服务器上需要配置代理服务器。
5.客户端不需要配置缺省路由。
当我们在客户端浏览器中打开一个web请求,比如“”,这时将陆续发生以下事件:
1.客户端使用某一端口(比如1025)连接代理服务器8080端口,请求web页面“”
2.代理服务器向DNS请求“”,得到相应的IP地址202.99.11.120。
然后,代理服务器使用某一端口(比如1037)向该IP地址的80端口发起web连接请求,请求web页面。
3.收到响应的web页面后,代理服务器把该数据传送给客户端。
4.客户端浏览器显示该页面。
从的角度看来,连接是在1.2.3.4地1037端口和202.99.11.120的80端口之间建立的。
从client的角度看来,连接是在192.168.1.100的1025端口和1.2.3.4的8080端口之间建立的。
1.3.2透明代理
透明代理的意思是客户端根本不需要知道有代理服务器的存在。
1.配置透明代理服务器软件运行在代理服务器的8080端口。
2.配置代理服务器将所有对80端口的连接重定向到8080端口。
3.配置客户端浏览器直接连解到Internet。
4.在客户端配置好DNS.
5.配置客户端的缺省网关为192.168.1.1.
1.客户端向DNS请求“”,得到相应的IP地址202.99.11.120。
然后,客户端使用某一端口(比如1066)向该IP地址的80端口发起web连接请求,请求web页面。
2.当该请求包通过透明代理服务器时,被重定向到代理服务器的绑定端口8080。
于是,透明代理服务器用某一端口(比如1088)向202.99.11.120的80端口发起web连接请求,请求web页面。
从的角度看来,连接是在1.2.3.4地1088端口和202.99.11.120的80端口之间建立的。
从client的角度看来,连接是在192.168.1.100的1066端口和202.99.11.120的80端口之间建立的。
以上就是传统代理服务器和透明代理服务器的区别所在。
二、各种代理服务器的比较
linux下的代理服务器软件很多,我从(一个著名的linux软件站点)查看了一下,足有六十多个。
但是被广泛应用的只有Apache、socks、squid等几个实践证明是高性能的代理软件。
下面我们分别来比较一下这几个软件:
2.1Apache
Apache是世界上用的最广泛的HTTP服务器,之所以用的最广泛,是因为它强大的功能、高效率、安全性和速度。
从1.1.x版本开始,Apache开始包含了一个代理模块。
用Apache作代理服务器的性能优势并不明显,不建议使用。
2.2Socks
Socks是一种网络代理协议,该协议可以让客户机通过Socks服务器获得对Internet的完全访问能力。
Scoks在服务器和客户端之间建立一个安全的代理数据通道,从客户的角度看来,Scoks是透明的;
从服务器的角度看来,Socks就是客户端。
客户端不需要具有对Internet的直接访问能力(也就是说,可以使用私有IP地址),因为Socks服务器能够把来自于客户端的连接请求重定向到Internet。
此外,Socks服务器可以对用户连接请求进行认证,允许合法用户建立代理连接。
同理,Socks也能防止非授权的Internet用户访问及的内部网络。
所以常常把Socks当作防火墙来使用。
常见的浏览器如netscape、IE等可以直接使用Socks,并且我们也可以使用socsk5的所带的client来使那些不直接支持socks的internet软件使用Socks。
更多的资料可以参考Socks官方站点。
2.3Squid
对于web用户来说,Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher和HTTP协议。
和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
Squid将数据元缓存在内存中,同时也缓存DNS查询的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。
Squid支持SSL,支持访问控制。
由于使用了ICP(轻量Internet缓存协议),Squid能够实现层叠的代理阵列,从而最大限度地节约带宽。
Squid由一个主要的服务程序squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。
当Squid启动以后,它可以派生出预先指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。
2.4选择
从上面的比较可以看出,Apache主要功能是web服务器,代理功能只不过是其一个模块而已,Socks虽然强大,但有欠灵活,因此我们着重推荐你使用Squid。
下面的章节我们就一起来学习Squid激动人心的特性及相关的安装与配置。
三、安装SquidProxyServer
3.1获取软件
你可以通过以下途径获取该软件:
1.从Squid的官方站点http:
//www.squid-cache.org下载该软件;
2.从你的linux发行版本中获取该软件;
通常,Squid软件包有两种
5.2用户认证设置
缺省的,squid本身不带任何认证程序,但是我们可以通过外部认证程序来实现用户认证。
一般说来有以下的认证程序:
1.LDAP认证:
你可以访问以下资源来获取更多的有用信息。
http:
//home.iae.nl/users/devet/squid/proxy_auth/contrib/ldap_auth.tar.gz
2.SMB认证:
可以实现基于NT和samba的用户认证。
更多的信息请访问以下资源。
//www.hacom.nl/~richard/software/smb_auth.html
3.基于mysql的用户认证。
//home.iae.nl/users/devet/squid/proxy_auth/contrib/mysql_auth.c
4.基于sock5密码用户认证。
5.基于Radius的用户认证。
//home.iae.nl/users/devet/squid/proxy_auth/contrib/auth.pl
但是我们一般常用的是用ncsa实现的认证和用smb_auth实现的基于NT和samba的用户认证。
下面我们就来讲这两种认证方法的具体实现。
5.2.1ncsa用户认证的实现
ncsa是squid源代码包自带的认证程序之一,下面我们以squid-2.3.STABLE2版本为例讲述ncsa的安装和配置。
1.从www.squid-cache.org下载squid源代码包squid-2.3.STABLE2-src.tar.gz并放到/tmp目录下。
2.用tar解开:
tarxvzfsquid-2.3.STABLE2-src.tar.gz
%make
%makeinstall
3.然后,进入/tmp/squid-2.3.STABLE2/auth_modules/NCSA目录。
%make
%makeinstall
编译成功后,会生成ncsa_auth的可执行文件。
4.拷贝生成的执行文件ncsa_auth到/usr/bin目录
cpncsa_auth/usr/bin/bin
5.修改squid.conf中的相关选项如下所示:
authenticate_program/usr/local/squid/bin/ncsa_auth/usr/bin/passwd
6.定义相关的用户类
aclauth_userproxy_authREQUIRED
注意,REQUIRED关键字指明了接收所有合法用户的访问。
7.设置http_access
http_accessallowauth_user
注意,如果你在改行中指定了多个允许访问的用户类的话,应该把要认证的用户类放在第一个。
如下所示:
错误的配置:
http_accessallowauth_userallmanager
正确的配置:
http_accessallowauth_usermanagerall
8.利用apache携带的工具软件htpasswd在/usr/local/squid/etc下生成密码文件并添加相应的用户信息。
一般说来,该密码文件每行包含一个用户的用户信息,即用户名和密码。
用htpasswd生成密码文件passwd并添加用户bye。
htpasswd-c/usr/local/squid/etc/passwdbye
然后重新启动squid,密码认证已经生效。
5.2.2smb用户认证的实现
国内介绍并使用ncsa实现用户认证的文章不多,而使用smb_auth和samba实现基于NT的用户认证我还没有看到过,下面我们就来看一看在squid中实现基于NT的用户认证。
当前smb_auth的最高版本是smb_auth-0.05,你可以在以下地址下载。
当然,squid的源代码包中也包含smb_auth,但是是0.02版的。
//www.hacom.nl/~richard/software/smb_auth-0.05.tar.gz
smb_auth的主页地址是http:
//www.hacom.nl/~richard/software/smb_auth.html。
1.系统需求:
squid2.0以上版本。
安装samba2.0.4以上版本。
你并不需要运行samba服务,因为smb_auth只用到了samba的客户端软件。
2.下载smb_auth-0.05.tar.gz并复制到/tmp.
3.tarxvzfsmb_auth-0.05.tar.gz
4.根据你的要求修改Makefile中的SAMBAPREFIX和INSTALLBIN参数。
SAMBAPREFIX指定了你的samba安装路径,INSTALLBIN指明了smb_auth的安装路径。
我们指定:
SAMBAPREFIX=/usr,INSTALLBIN=/usr/bin.
5.make
6.makeinstall,成功后会在INSTALLBIN指定路径中生成可执行文件smb_auth.
7.按下列步骤设置你要用于认证的主域控制器:
首先在NETLOG共享目录中建立一个“proxy”文件,该文件只包含一个“allow”的字符串,一般说来,该NETLOG目录位于winntsystem32Replimportscripts目录中;
然后,设置所有你想让其访问squid的用户和用户组拥有对该文件的读的权力。
8.修改squid.conf中的相关选项如下所示:
authenticate_program/usr/local/squid/bin/smb_authyour_domain_name
9.定义相关的用户类
aclauth_userproxy_authREQUIRED
10.设置http_access
如果一切正确的话,然后重新启动squid,密码认证已经生效。
说明:
smb_auth的调用方法:
1.smb_auth-Wyour_domain_name
用your_domain_name指定你的域名。
smb_auth将进行广播寻找该主域控制器。
2.smb_auth-Wyour_domain_name-B
如果你有多个网络接口,可以用-B指定用于广播的网络接口的ip地址。
3.smb_auth-Wyour_domain_name-U
也可以用-U直接指定该主域控制器的ip地址。
4.smb_auth-Wyour_domain_name-Sshare
可以用-S指定一个不同于NETLOG的共享目录。
5.2.3squid.conf中关于认证的其他设置
1.authenticate_children
设置认证子进程的数目。
缺省为5个。
如果你处于一个繁忙的网络环境中,你可以适当增大该值。
2.authenticate_ttl
设置一次认证的有效期,缺省是3600秒。
3.proxy_auth_realm
设置用户登录认证时向用户显示的域名。
5.3透明代理的设置
关于透明代理的概念我们已经在第一节将过了,下面我们看一下怎么样在squid中实现透明代理。
透明代理的实现需要在Linux2.0.29以上,但是Linux2.0.30并不支持该功能,好在我们现在使用的通常是2.2.X以上的版本,所以不必担心这个问题。
下面我们就用ipchains+squid来实现透明代理。
在开始之前需要说明的是,目前我们只能实现支持HTTP的透明代理,但是也不必太担心,因为我们之所以使用代理,目的是利用squid的缓存来提高Web的访问速度,至于提供内部非法ip地址的访问及提高网络安全性,我们可以用ipchains来解决。
实现环境:
RedHat6.x+squid2.2.x+ipchains
5.3.1linux的相关配置
确定你的内核已经配置了以下特性:
[*]Networkfirewalls
[]SocketFiltering
[*]Unixdomainsockets
[*]TCP/IPnetworking
[]IP:
multicasting
advancedrouter
kernellevelautoconfiguration
[*]IP:
firewalling
firewallpacketnetlinkdevice
alwaysdefragment(requiredformasquerading)
transparentproxysupport
如果没有,请你重新编译内核。
一般在RedHat6.x以上,系统已经缺省配置了这些特性。
5.3.2squid的相关配置选项
设置squid.conf中的相关选项,如下所示:
http_port3218
httpd_accel_hostvirtual
httpd_accel_port80
httpd_accel_with_proxyon
httpd_accel_uses_host_headeron
1.http_port3128
在本例中,我们假设squid的HTTP监听端口为3128,即squid缺省设置值。
然后,把所有来自于客户端web请求的包(即目标端口为80)重定向到3128端口。
2.httpd_accel_hostvirtual
这两个选项本来是用来定义squid加速模式的。
在这里我们用virtual来指定为虚拟主机模式。
80端口为要加速的请求端口。
采用这种模式时,squid就取消了缓存及ICP功能,假如你需要这些功能,这必须设置httpd_accel_with_proxy选项。
3.httpd_accel_with_proxyon
该选项在透明代理模式下是必须设置成on的。
在该模式下,s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 架设 代理服务器
![提示](https://static.bingdoc.com/images/bang_tan.gif)