您现在的位置: 华东论文网 >> 免费论文 >> 计算机类 >> 局域网技术 >> 正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
没有相关论文
基于Linux平台的企业级高性能组网方案的设计与实现           
基于Linux平台的企业级高性能组网方案的设计与实现
作者:佚名 文章来源:本站原创 点击数: 更新时间:2006-4-25
目录:
一:引言
二:需求分析
三:解决方案
四:代理服务器的实现
五:通过等值路由实现负载均衡
六:代理重定向程序的开发
七:客户端的配置
八:总结
摘要:以南阳理工学院校园网的建设为例,提出了一个利用Linux的代理上网技术组建网络的方案,该方案利用等值路由来实现负载均衡,利用透明代理和代理重定向提高网络使用和管理的效率,同时降低了连入Internet的费用,并且有效地减少IP地址资源的开销,实践证明,该方案可以提供安全,高效的服务.
关键字: Linux;等值路由;透明代理;代理重定向
引言
随着因特网技术的迅速发展,越来越多的计算机连入了因特网.而IP地址是一台计算机在互联网中的标识,当试图接入互联网的计算机超过允许的IP地址数时,就会产生IP地址耗尽问题,即若干计算机因无法获得有效的IP地址而不能接入互联网.
作为一种免费的网络操作系统,Linux越来越受到广大网络爱好者的欢迎,Linux操作系统在目前的因特网上已被广泛应用,Linux操作系统已被我国作为政府上网年的指定网络操作系统.由于Linux操作系统独特的自由奔放精神以及传奇的开发过程,一直为广大网络开发与管理人员所热衷.作为全国普通高校之一,南阳理工学院在计算机及相关领域的教学和科研工作中服务器全部采用Linux操作系统.
需求分析
IP通信技术是目前通信界的三大热门话题之一,IP技术将会改变人们的生活,学习,工作乃至改变未来世界.随着Internet 的飞速发展已对我们生活产生了深入的影响,网络节点的数目迅速增加.专家预测所有IPv4地址将在2010年左右分配完毕,所以目前世界上各大标准化组织,研究机构都在进行战略调整,将IP技术列为各自的研究和发展重点.在这种情况下,对组建高性能,高伸缩性的计算机网络提出了更高的要求.
解决方案
鉴于以上的需求,实现方法有两种,其一可以通过OSI参考模型网络层的网络地址转换(NAT),其二通过代理软件来实现;本文提出在三层路由交换机上启用等值路由来实现负载均衡,在Linux操作系统平台下启用透明代理与重定等多项关键技术相结合的综合解决方案 (网络结构如图所示),这样使系统的运行效率大大提高,使用本方案的具体优越性如下:
1,加快网络的浏览速度
代理服务器接收远程服务器提供的数据先保存在自己的硬盘上,如果有许多用户同时使用这一个代理服务器,他们对Internet站点所有的要求都会经由这台代理服务器,当有人访问过某一站点后,所访问站点上的内容便会被保存在代理服务器的内存中或者硬盘上,如果下一次再有人访问这个站点,这些内容便会直接从代理服务中获取,而不必再连接到远程服务器.因此,它可以节约带宽,提高访问速度.
节省IP地址开销
使用代理服务器时,在同一个代理服务器下的所有用户对外只占用一个公网IP,降低IP地址的开销.在这种前提下我们提出利用代理服务器中的关键技术和交换机中的等值路由等功能,是目前缓解网络地址资源缺乏的解决方案.
可以作为防火墙
代理服务器可以保护局域网的安全,起到防火墙的作用,对于使用代理服务器的局域网来说,在外部看来只有代理服务器是可见的,其他局域网的用户对外是不可见的,代理服务器为局域网的安全起到了屏障的作用.另外,通过代理服务器中访问控制列表,用户可以设置IP地址,域名,关键字等过滤规则,限制内部网对外部的访问权限.
四,代理服务器的实现
在TCP/IP网络中,传统的通信过程是客户端向服务器请求数据,服务器响应该请求,将数据传送给客户端.在引入了代理服务器以后,这一过程将变为客户端向服务器发起请求,该请求先被送到代理服务器;代理服务器分析该请求,查看自己缓存中是否有所请求的数据,如果有就直接传送给客户端,如果没有就代替客户端向该服务器发出请求.服务器响应以后,代理服务器将响应的数据传送给客户端,同时在自己的缓存中保留一份该数据的拷贝.这里把代理服务器分为传统代理服务器和透明代理服务器.
我们推荐一种能在Linux下使用的优秀的代理服务器软件Squid.它可以实现传统的代理服务器和透明代理服务器.Squid不仅仅支持HTTP协议,而且支持FTP,GOPHER,SSL,和WAIS等协议.下面首先介绍用squid实现传统代理服务器,然后介绍透明代理服务器的实现.
使用Squid实现传统代理服务器
1,安装软件
从squid官方网站(http://www.squid-cache.org)下载最新的稳定版,将其拷贝到/usr/local目录下解开该文件 tar xvzf squid-2.3.XXX.tar.gz (XXX代表版本号)进入squid所在目录并执行./configure --prefix=/directory/ 指定安装目录.系统缺省为/usr/local/squid/执行make;make install
2,配置squid
Squid 的定制是通过编辑它的配置文件 squid.conf 来实现的,squid.conf 文件通常在 /directory/etc 目录下.首先要修改的是 http_port,这个选项指定了 Squid 监听客户请求的端口,默认值是 3128.要使用代理功能,这个端口值要和运行 Squid 的机器的 IP 地址一起使用,可以修改成下面这样:http_port 172.16.250.250:3128上述声明表示 Squid 绑定在 IP 地址 172.16.250.250上,端口为3128.端口可以设置为任意值,但要确认没有其它程序使用同样的端口.cache_dir Directory-name Mbytes Level-1 Level2:指定squid用来存储对象的交换空间的大小及其目录结构.
acl访问控制列表:多个访问控制及其规则为客户端访问控制提供了一种灵活的机制.下面给出通常所用到的例子:
1)允许内部一个网段的私有IP地址使用代理服务器.
acl me src 172.16.0.0/255.255.0.0
http_access allow me
这个规则允许172.16.0.0的这个网段的IP都被转发,但要注意在最后要在配置文件中加上"http_access deny all",表示以上各规则都不匹配时,拒绝所有的数据包.
2)允许列表中的机器访问Internet.
acl allowed_clients src 172.16.10.10 172.16.10.20 172.16.10.30
http_access allow allowed_clients
http_access deny !allowed_clients
这个规则只允许 IP 地址为 172.16.10.10,172.16.10.20 及 172.16.10.30 的机器访问 Internet,其他 IP 地址的机器则都被拒绝访问.
3)限制访问时段.
acl allowed_clients src 172.16.0.1/255.255.0.0
acl regular_days time MTWHF 10:00-16:00
http_access allow allowed_clients regular_days
http_access deny !allowed_clients
这个规则允许子网172.16.0.1中的所有客户机在周一到周五的上午10:00到下午4:00访问 Internet.
4)站点屏蔽
Squid 可以屏蔽某些特定站点或含有某些特定字词的站点.可以用下面的规则实现:
acl allowed_clients src 172.16.0.1/255.255.0.0
acl banned_sites url_regex sex SEX Sex xxx XXX pussy fuck erot porn
http_access deny banned_sites
http_access allow allowed_clients
在实际应用中,不需要把需屏蔽的所有站点或字词都列在上面,可以先保存在一个文件中,ACL 将从这个文件中读出所需信息用以屏蔽被禁止的站点.
acl allowed_clients src 172.16.0.1/255.255.0.0
acl banned_sites url_regex "/etc/banned.list"
http_access deny banned_sites
http_access allow allowed_clients
5)优化:Squid 可以通过使用 maxconn 元素来限制客户端连接的数目. 要使用这个选项,必须先允许 client_db.
acl mynetwork 172.16.0.1/255.255.0.0
acl numconn maxconn 50
http_access deny mynetwork numconn
注:maxconn ACL 使用小于(less-than)对比.此 ACL 规则将在连接数大于设定值时被匹配.这是 ACL 不与 http_access 允许规则连用的主要原因.
6)缓存数据:对于静态页面,缓存的数据能够立刻回送到发出请求的客户端.没有必要去缓存 cgi-bin或 Servlet,这些可以用 ACL 元素 no_cache 来禁止.
acl cache_prevent1 url_regex cgi-bin /
acl cache_prevent2 url_regex Servlet
no_cache deny cache_prevent1
no_cache deny cache_prevent2
7)客户端的配置
由于代理服务器在某个特定的端口监听服务,所以客户端要做相应配置.在继续下一步之前,请确认要访问代理服务器的客户端已经连接在局域网中并已分配了有效的 IP 地址,并确认它们都能 ping 通运行Squid的Linux 服务器.根据我们在以上配置过程中选定的私有IP地址类型及相应的子网掩码对网络中的TCP/IP协议进行设置;如在Internet Explorer浏览器中我们选用"工具—>Internet选项—>连接—>局域网设置—>使用代理服务器",分别加上代理服务器的IP地址及端口号;如在Netscape Navigator浏览器中我们选用"编辑—>首选项—>高级—>代理服务器",分别输入代理服务器的IP地址及端口号.如我院在TCP/IP协议中,将IP地址一项选择"指定IP地址"并加上172.16.X.X,子网掩码为255.255.0.0,DNS为172.16.250.250;浏览器中设置代理服务器地址为:172.16.250.250,端口:3128,即可完成整个网络的代理设置.
使用传统的代理服务器时,每个用户需要在客户端程序中指明要使用代理,自行设置Proxy参数.而透明代理服务,首要的特点就是对用户是透明的(Transparent),即用户意识不到代理的存在,当内部用户需要使用透明代理访问外部资源时,连接过程便自动创建,代理服务器会建立透明的通道,用户不需要进行代理服务器的设置,便可直接与外界通信,甚至用户根本不知道代理服务器的存在,简化了网络的设置过程,极大地方便了用户的使用.所以我们经过试验和测试推荐使用透明代理服务器.
透明代理的工作原理是在传统代理服务器的配置基础上,透明代理软件运行在代理服务器的指定端口(如3128)上,将所有对80端口的连接重定向到3128端口.当我们在客户端浏览器中打开一个web请求,客户端向DNS服务器请求,得到相应的IP地址,然后,客户端使用某一端口向该IP地址的80端口发起web连接请求,请求web页面.该请求数据包通过透明代理服务器时,被重定向到代理服务器的绑定的端口(如3128).于是,透明代理服务器用某一端口向目标地址的80端口发起web连接请求,收到响应的web页面后,代理服务器把该数据传送给客户端,客户端浏览器显示该页面.以下在传统代理服务器的配置基础上介绍透明代理的实现.
端口重定向
使用下面Iptables命令实现端口重定向,将所有的通过内部网卡eth0的web请求重定向到代理服务器监听的端口3128.
#iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -p tcp --dport 80 -j REDIRECT --to-ports 3128
2.代理服务器的配置
在Linux操作系统选择squid代理软件是一个很好的解决方案,在配置完代理服务器的基础上,在squid的配置文件/etc/squid/squid.conf中加入以下内容就可以实现透明代理的功能.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
通过等值路由实现负载均衡
到相同的目的地,不同的路由协议可能会发现不同的路由,但并非这些路由都是最优的.事实上,在某一时刻,到某一目的地的当前路由仅能由唯一的路由协议来决定.这样,各路由协议都被赋予了一个优先级,这样当存在多个路由信息源时,具有较高优先级的路由协议发现的路由将成为当前路由.
多路由模式,即允许配置多条到同一目的地而且优先级相同的路由.到同一目的地存在多条不同的路径,而且它们的优先级也相同.当没有到同一目的地的更高优先级路由时,这几条路由都被IP采纳,在转发去往该目的地报文时,由IP依次通过各条路径发送,从而实现网络的负载分担.
对于同一目的地,特定的路由协议可能会发现几条不同的优先级相同的路由,如果该路由协议在所有活跃的路由协议中优先级最高,那么这几条不同的路由都被看作当前有效的路由.这样,在路由协议层面上,保证了IP流量的负载分担.
我们将在三层核心路由交换机上给每一个VLAN配置IP地址,做为客户端计算机的网关地址,客户端的计算机将数据送到网关后,给Vlan配置描述信息和接口IP地址,代码如下所示:
interface Vlan-interface116
description 12stuF-4
ip address 172.17.4.1 255.255.255.0
再通过等值路由转发给上级代理服务器,并且根据网络负载情况适时增加多台代理服务器,同时在代理服务器上启用透明代理,不但实现网络的负载均衡,而且不需要对客户机的配置做任何修改,简化了客户端的网络配置.等值路由的配置如下所示:
ip route-static 0.0.0.0 0.0.0.0 172.16.250.250 preference 60
ip route-static 0.0.0.0 0.0.0.0 172.16.250.254 preference 60
路由表中显示的信息如下:
Destination/Mask
Protocol
Pre
Cost
Nexthop
Interface
0.0.0.0/0
STATIC
60
0
172.16.250.250
Vlan-interface101
172.16.250.254
Vlan-interface102
六,代理重定向程序的开发
由于我院上网用户众多,特别是学生区同时有千余台主机上网,如此众多的用户使代理服务器的负载极高,而且上网高峰时速度很慢,经过仔细研究发现一些用户使用Flashget等多线程下载工具下载大文件,极大地占用了服务器资源,为此我们对大文件的下载进行分时段开放,在上网高峰期禁止大文件下载,而且为了防止代理服务器响应多线程客户端不停的重试下载而使代理服务器浪费宝贵的资源,我们决定开发独立于代理服务器的重定器(Redirector)应用程序.当用户访问已经禁止下载大文件的时,通过Redirector将其下载请求重定向到一个简单的HTML文件(通知用户这个时段不能下载),这样客户端程序在接收到此HTML文件后就认为已经下载完毕,也不会重新尝试下载,从而减轻了代理服务器的负担.
Squid提供了标准的接口来开发独立的Redirector,可以选择多冲编程语言,为了提高效率我们选择使用C语言实现.在squid的配置文件squid.conf中加入
redirect_program /RedirectorPath/YourRedirector(设置独立于 squid的重定向器的路径)
redirect_children 20(squid启动时打开的重定向器的数目)
两行内容使自己开发的Redirector工作起来,squid将用户的URL请求通过如下格式
http://www.nyist.net/test.iso 127.0.0.1/ - - GET
传递给Redirector处理,四个字段分别表示:URL ,ip-address/fqdn ,ident ,method.为了存储squid传递过来的URL请求,定义如下结构,
#define MAX_BUFF 8000
char buff[MAX_BUFF];
struct IN_BUFF {
char url[MAX_BUFF];
char src_address[MAX_BUFF];
char ident[MAX_BUFF];
char method[MAX_BUFF];
};
struct IN_BUFF in_buff;
char *redirect_url;
通过C函数fgets(buff, MAX_BUFF, stdin)得到URL请求字符串,再使用C语言的字符处理函数将其分离后赋值给in_buff的各字段.接下来即可使用in_buff.url进行模式匹配,如果遇到禁止访问的资源则将重定向的URL赋值给redirect_url,通过C语句:printf("%s %s %s %s\n", redirect_url, in_buff.src_address, in_buff.ident, in_buff.method);
将重定向处理后内容返回给squid,squid再把redirect_url中的网址内容发送给用户.建议使用GNU的规则表达式库实现模式匹配,以使配置更加灵活和高效.如果需要还可以在上述程序中加入日志处理功能.
七,客户端的配置
在本方案中我们综合了多项技术,所以客户端的配置就相对比较简单,只需配置有效的IP地址,子网掩码,缺省网关和DNS服务器即可,客户端不需要进行代理服务器的相关设置.
八,总结
我院校园网现有上网微机共有八千余台,使用等值路由,透明代理和代理重定向综合组网技术,运行稳定,可靠性高,成本低,速度快,具有很好的社会效益和经济效益.
参考文献:
1,[美]Christopher Negus,《Red Hat Linux 9 Bible》,John Wiley & Sons,Inc.,2004.10
2,[美] Michael K. Johnson著,《Linux应用程序开发(第2版)》,电子工业出版社,2005.11
3,倪继利著,《Linux内核分析与编程》,电子工业出版社,2005.9
4,周明德著,《UNIX/Linux核心》,清华大学出版社,2004. 2
5,(美)BaerWolf公司,《CCIE路由与交换技术》,人民邮电出版社,2003.1
6,(美)Radia Perlman著,《网络互连—网桥·路由器·交换机和互连协议(英文版·第2版)/(美)》,机械工业出版社,2002.1
论文录入:华东论文网    责任编辑:华东论文网 
  • 上一篇论文: 图书馆管理系统

  • 下一篇论文: 网络经济与网络营销的关系
  • 【字体: 】【发表评论】【告诉好友】【打印此文】【关闭窗口