代理与路由服务_第1页
代理与路由服务_第2页
代理与路由服务_第3页
代理与路由服务_第4页
代理与路由服务_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章代理与路由服务,学习目标,掌握代理的概念和Squid的使用掌握使用Iptables设置NAT掌握路由的概念及Quagga的安装、设定和使用,9.1Squid代理服务,Squid是Linux上常用的代理服务器软件,功能强大,既可以做普通的网络服务代理,也可以在大型的企业网站里提供反向代理的的功能,构建服务器集群。,9.1.1代理的概念,代理服务器英文全称是ProxyServer,其功能就是代理网络用户去取得网络信息。代理服务器是介于浏览器和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并转发给用户的浏览器。,代理技术有如下的优点:,(1)连接Internet与Intranet充当firewall(防火墙)。(2)节省IP地址。(3)提高访问速度,9.1.2Squid代理服务概述,Squid软件包包含:Squid服务器域名查找程序dnsserverFTP客户端ftget脚本管理程序cachemgr.cgi等。,9.1.3Squid的获取和安装1.下载,用户可以去squid的官方网站下载最新的安装包,当前最新的是squid-3.0.STABLE1.tar.gz,存放到/squid目录下。rootlocalhostsquid#tarzxvfsquid-3.0.STABLE1.tar.gzrootlocalhostsquid#cdsquid-3.0.STABLE1,2.安装,Squid的功能非常丰富,随之选项也非常多,为了满足用户的各种需求,经常需要通过源文件进行编译安装。用下列命令查看设置选项。rootlocalhostsquid-3.0.STABLE1#./configure-help常用的配置选项:语法:#./configureOPTION.VAR=VALUE.,(1)设置选项:,-h,-help显示帮助信息后退出-help=short显示针对本软件包的设置选项-q,-quiet,-silent不显示“checking.”信息-C,-config-cache“-cache-file=config.cache”项的别名-n,-no-create不创建输出文件-srcdir=DIR设置源文件路径,(2)安装位置,默认情况下,“makeinstall”命令会将系统文件安装到“/usr/local/squid/bin”文件夹下,库文件安装到“/usr/local/squid/bin”文件夹下,但可以通过下边选项改变默认安装位置。-prefix=PREFIX指定平台无关文件的安装位置,默认安装位置是在“/usr/local/squid”文件夹下-exec-prefix=EPREFIX指定平台相关文件的安装位置,读者可自行指定路径,(3)选项说明:,-disable-FEATURE不包含FEATURE(和“-enable-FEATURE=no”功能相同)-enable-FEATURE=ARG包含FEATUREARG=yes-disable-dependency-tracking禁止进行依赖跟踪检查,可加快编译速度-enable-dependency-tracking使能进行依赖跟踪检查-enable-shared=PKGS编译共享库,默认是不编译的-enable-static=PKGS编译静态库,该选项是默认的-enable-fast-install=PKGS快速安装优化,默认是yes-enable-gnuregex正则表达式支持,(4).可选包:,-with-default-user=USERSquid服务度应的系统用户,默认是nobody。-with-aufs-threads=N_THREADS指定aufs存储机制使用的线程数量,squid默认根据缓存目录的数量,自动计算需要使用多少线程。-with-openssl=prefix和OpenSSl库一起编译,不是不是按照标准模式安装的,则需要指出OpenSSL开发库和头文件的路径。-with-coss-membuf-size循环目录存储系统(coss)是squid的试验性存储机制。该选项设置coss缓存目录的内存缓冲大小。注意为了使用coss,必须在-enable-storeio选项里指定存储类型。该参数以字节形式赋值,默认是1048576字节或1M。-with-large-files使能大容量文件支持,如logs等。,3.初始化,执行“makeinstall”后,整个程序被安装在/usr/local/squid下,仍需做以下的初始化工作:(1)创建用户和组:(2)改变squid安装目录的所有者及所属组:(3)初始化缓存空间:如果直接下载rpm二进制安装包安装,则程序的安装路径是/user/sbin,配置文件的默认路径是/etc/squid.conf。,9.1.4squid的启动和停止,1.执行“squid-h”命令可以看到命令的使用方法提示信息。命令语法:squid-zCDN-dlevel-ksignal2.启动(1)在终端里调试运行,可以从屏幕输出信息观察程序运行状态,利于纠错:rootlocalhost#squidNd1(2)以后台方式运行。“-s”选项导致squid将重要的状态和警告信息写到syslogd。rootlocalhost#squids3.停止:rootlocalhost#squidkshutdown或rootlocalhost#squidkkill,9.1.5squid配置文件的主要参数说明,系统自带的squid2.6的配置文件为/etc/squid.conf,如果是用户自己下载源文件编译安装的,则默认情况下配置文件的路径为/usr/local/squid/etc/squid.conf。下文描述主要的配置选项的功能和配置方法。,1.网络部分设置,(1)http_port用法:portoptions或:hostname或IP:portoptions(2)icp_port在大型网络里,单台服务器不足以完成代理工作,这时可以配置分级代理服务器集群,各代理之间相互配合,以提高代理能力。该端口配置squid代理和邻居进行通信时所用的端口号,默认是3130,如果禁用该功能,则设置为0。可以在启动suqid时用“-u”参数覆盖该设置。(3)cache_peer在层次式的代理阵列中,用来声明其他的代理服务器,格式如下:cache_peerhostnametypehttp_porticp_portoptions(4)cache_peer_domain用来限定邻居缓存服务器的查询区域。(5)cache默认情况下squid会缓存所有的内容,本参数用来定义不被缓存的对象。该参数需要和acl参数配合使用。,2.缓存空间设置,(1)cache_mem(bytes)设定Squid占用的物理内存。(2)cache_swap_low(percent,0-100)cache_swap_high(percent,0-100)声明交换空间的使用策略。,3.日志和缓存路径设置,(1)cache_dir设定缓存路径,可以重复设置该参数,以把缓存内容存放到不同的磁盘分区。默认支持“ufs”类型的存储方式,该参数可以在编译源代码时用“-enable-storeio”参数指定。语法:cache_dirTypeDirectory-NameFs-specific-dataoptions(2)cache_access_log用户的访问记录,可以通过分析它来了解所有用户访问的详尽地址。,4.透明代理设置,所谓透明代理,就是客户端不知道有代理服务器的存在,当然也不需要进行任何与代理有关的设置,从而大大方便了系统管理员。相关的选项有以下几个:httpd_accel_hostvirtualhttpd_accel_port80httpd_accel_with_proxyonhttpd_accel_user_host_headeron在Linux上,可以用iptables直接将对Web端口80的请求直接转发到Squid端口3128,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。可以下这条命令来实现:iptables-tnat-APREROUTING-s/24-ptcp-dport80-jREDIRECT3128将内部私有网络/24的所有针对80端口的访问重定向到3128端口。,5.访问控制,(1)访问控制列表ACL语法:aclacl_list_nametypedestinationIPorMAC(2)http_access语法:http_accessdeny|allowacl_list_name,6.高级访问控制,用户/密码认证为Squid管理提供了更多便利,最常用的认证方式是NCSA。从Squid2.5版本开始,NCSA认证包含在了basic中,而非以前单独的认证模块。首先在编译时配置选项应包括以下配置:-enable-auth=basic-enable-basic-auth-helpers=NCSA,6.高级访问控制,(1)auth_param语法:auth_paramschemeparametersetting功能:设置用户认证功能用于基本(basic)认证模式的参数。(2)program语法:auth_parambasicprogramexternal_programpassword_file功能:指定外部认证程序,该认证程序通过读取密码文件对用户进行认证。指定认证方式、认证程序和对应的密码文件。(3)children语法:auth_parambasicchildrenNUMBER功能:指定认证程序的进程数。,6.高级访问控制(续),(4)realm语法:auth_parambasicrealmDESCRIPTION_STRINGs功能:浏览器显示输入用户/密码对话框时的提示内容。(5)credentialsttl语法:auth_parambasiccredentialsttlTIME功能:基本的认证有效时间(6)casesensitive语法:auth_parambasiccasesensitiveon|off功能:是否区别大小写,7用于摘要(digest)认证的参数,(1)Program语法:auth_paramdigestprogramexternal_programpassword_file功能:指定用于摘要认证的外部程序和密码文件。(2)children语法:auth_paramdigestchildrennumber功能:指定认证程序的进程数。(3)realm语法:auth_paramdigestrealmDESCRIPTION_STRINGs功能:浏览器显示输入用户/密码对话框时的提示内容。(4)credentialsttl语法:auth_parambasiccredentialsttlTIME功能:基本的认证有效时间,9.1.6配置实例,图9-1代理功能配置实例,9.2Nat,Internet中不同的网段通过路由器连接成为一个的通信网络,数据包通过路由器在不同的系统之间传输,但Internet路由器不能转发私有网段的IP报文的,为了使配置了私有IP网段的计算机能够和Internet上的主机进行正常的数据传输,一般可以采用在内部私有网络和Internet之间架设代理服务器或者NAT服务器的方式来解决。,9.2.1NAT服务基本原理,随着Internet的飞速发展,越来越多的用户加入到互联网的使用中,使得网络本身的发展遇到了阻碍,最主要的两个问题是:路由表的快速增长使得大量的网络设备由于处理速度跟不上而很快被淘汰。IP地址即将耗尽。对这些问题业界提供了大量的解决方案。对于路由表膨胀的问题,可以使用VLSM、CIDR等技术以及各种路由协议的特性来缓解;而对于IP地址的耗尽问题,IPv6应该是最终的解决手段,但IPv6的全面实现还需要一段很长的时间。NAT(Networkaddresstranslation)(RFC1631)作为这样一种过渡解决手段,可以用来减少对全球合法注册地址的需求。,内部地址,NAT就是在内部专用网络中使用内部地址(不可路由),而当内部节点要与外界网络发生联系时,就在边缘路由器或者防火墙处,将内部地址替换成全局地址(公网地址,可路由),从而在外部公共网上正常使用。内部私有地址是指在内部网络中分配给节点的私有IP地址,这个地址只能在内部网络中使用,不能被路由。全局地址,是指合法的IP地址,它是由NIC或者网络服务提供商分配的地址,是全球统一的可寻址的地址。,NAT的作用,NAT的主要作用是节约地址空间。在任一时刻,如果内部网络中只有少数节点与外界建立连接,那么就只有少数的内部地址需要被转化成全局地址,可以减少对公网地址的需求。同时,还可以使多个内部节点共享一个外部地址,使用端口进行区分(NAPT),这样就能更有效的节约公网地址;除了节约地址外,NAT还能简化配置,增加网络规划的灵活性,从而简化内部网的设计。另外,当两个有地址重叠的私有内部网要连接在一起时,可以使用NAT来防止地址冲突,而避免逐个改变节点地址的繁杂工作。,NAT技术的缺点,使用NAT地址转换会使路由器处理数据包延迟增大NAT隐藏了端到端的IP地址,使得对数据包路径的跟踪变的比较困难如果使用IPSec进行加密,则只能把NAT放在受保护的VPN内部,或者使用具有NAT功能的IPSec设备,9.2.2NAT的类型,根据地址转换的生命期不同,NAT地址转换有两种主要类型:静态转换(StaticTranslation)动态转换(DynamicTranslations),静态转换,静态转换是最简单的一种转换方式,它在NAT表中为每一个需要转换的内部地址创建了固定的转换条目,映射了唯一的全局地址。内部地址与全局地址之间一一对应。每当内部节点与外界通信时,内部地址就会转化为对应的全局地址。,动态转换,动态转换增加了网络管理的复杂性,但也提供了很大的灵活性。它将可用的全局地址地址集定义成NAT池(NATpool)。对于要与外界进行通信的内部节点,如果还没有建立转换映射,边缘路由器或防火墙将会动态地从NAT池中选择全局地址对内部地址进行转化。每个转换条目在连接时动态建立,而在连接终止时会被释放。这样网络的灵活性大大增强了,所需要的全局地址数量进一步减少。,端口地址转换,端口地址转换(NAPTNetworkaddressporttranslatin),是动态转换的一种变形。它可以使多个内部节点共享一个全局IP地址,而使用源和目的的TCP/UDP的端口号来区分NAT表中的转换条目及内部地址,这样就更节省了地址空间。,NAT技术使用的几种地址的类型,InsideLocalIPaddress:指内部网络主机的私有地址InsideGlobalIPaddress:代表一个或更多内部IP到外部世界的合法IPOutsideGlobalIPaddress:外部网络主机的合法IPOutsideLocalIPaddress:外部网络的主机地址,9.2.3NAT适用的几种情况,连接到Internet,但却没有足够的合法地址分配给内部主机,这是最常适用的一种形式。更改到一个需要重新分配地址的ISP,这时ISP的所有修改在NAI服务器之外完成,不会影响到内部网络,简化了内部管理。有相同的IP地址的两个Internat合并。支持负载均衡。,9.2.4NAT服务的使用1.NAT服务配置基础,Netfilter是Linux核心中一个通用架构,它提供了一系列的“表”(tables),每个表由若干“链”(chains)组成,而每条链中可以有一条或数条规则(rules)组成。系统缺省的表是“filter”。但是在使用NAT的时候,所使用的表不再是“filter”,而是“nat”表,所以必须使用“-tnat”选项来显式地指明这一点。Nat表也有三条缺省的“链”(chains),这三条链也是规则的容器,分别是:PREROUTING:定义进行目NAT的规则,因为路由器进行路由时只检查数据包的目的IP地址,所以为了使数据包得以正确路由,必须在路由之前就进行目地址的转换。POSTROUTING:定义进行源NAT的规则,系统在决定了数据包的路由以后、传出本主机之前执行该链中的规则。OUTPUT:定义对本地产生的数据包的目的NAT规则。,2.NAT服务配置的命令和参数,(1)对规则的操作命令-A:加入一个新规则到一个链的最后。-I:在链内某个位置插入一个新规则,通常是插在最前面。-R:在链内某个位置替换一条规则。-D:在链内某个位置删除一条规则。(2)指定源地址和目的地址通过“-source”或“-src”或“-s”参数来指定源地址,通过“-destination”或“-dst”或“-d”来指定目的地址。(3)指定网络接口可以使用“-in-interface”或“-i”或“-out-interface”或“-o”来指定网络接口。(4)指定协议及端口可以通过“-protocol”或“-p”选项来指定协议,3.源NAT(SNAT)服务配置实例,图9-2SNAT实例,4.目的NAT(DNAT)服务配置实例,图9-3DNAT配置实例,5.透明代理配置实例,(1)/etc/squid/squid.conf文件做如下更改:http_port:3128transparent/和之前版本实现透明代理的方式有区别cache_effective_usersquidcache_effective_groupsquidhttp_accessallowall/允许所有用户访问cache_dirufs/usr/local/squid/cache50016256/代理缓存目录设置重新启动Squid。(2)设置iptables:Echo“1”/proc/sys/net/ipv4/ip_forwardItablestnatAPREROUTINGieth0ptcpdprot80jREDIRECT-to-port3128IptablestnatAPOSTROUTINGs/24oeth1jSNAT-to43IptablesAFORWARDmstate-stateESTABLISHED,RELATEDjACCEPT,9.3路由9.3.1路由的基本作用,在TCP/IP结构中,路由功能是在网络层实现的。当属于不同的IP子网的主机进行通信时,就需要使用路由器转发数据包。路由器就是运行路由协议软件的专用计算机,担负着将数据包根据某种设定的策略(例如最短路径)在相互通信的源主机和目标主机之间传递数据包。本节介绍的路由软件可以把一台PC机设置为路由器使用。,9.3.2Quagga简介,Quagga是一个基于TCP/IP的路由软件包,可以支持RIPv1、RIPv2、RIPng、OSPFv2、OSPFv3、BGP-4和BGP-4+协议,同时Quagga也支持IPv6路由协议,支持SNMP管理协议。Quagga的先进架构可以提供高质量、多服务器引擎的路由服务,提供了针对每个路由协议的交互式操作界面,用户可以利用Quagga提供的库开发自己的应用程序操作界面。Zebra是quagga中一个最重要的部分,它综合了路由管理和rip、ospf、bgp等路由模块通讯,可以和kernel通讯,完成静态路由配置等一系列功能。,9.3.3Quagga的结构,uagga采用了多个服务后台进程共同配合去完成路由功能的结构,多进程结构带来了良好的可扩展性、模块化特性和可维护性,开放式的架构使得很容易添加新的后台服务程序而不会影响其他的软件,用户可以只运行需要的路由协议,而且这些进程还可以运行在不同的计算机上。系统里存在多个和具体路由协议相关的路由进程及Zebra核心路由路由管理进程,关系如图9-4所示:,Quagga的模块和内核的关系,Ripd后台进程支持RIP路由协议;Ospfd后台进程支持OSPF2路由协议;Bgpd后台进程支持BGP4边界路由协议;Zebra进程是内核路由表的管理进程,负责协调多个路由协议的工作。,图9-4Quagga的模块和内核的关系,9.3.4Quagga支持的平台,Quagga支持多个操作系统平台:FreeBSD4.xandhigherNetBSD1.6andhigherOpenBSD2.5andhigherSolaris2.6andhigher(IPv6supportrequiresapatchatmoment)gnu/Linux2.2.xandhigher并且支持以下系统的IPv4栈:LinuxIPv6stackforGNU/Linux2.2.xandhigherKAMEIPv6stackforBSDINRIAIPv6stackforBSD,9.3.5Quagga的下载和安装,用户可以去官方网站下载最新的稳定版Quagga-0.98.6.tar.gz源程序安装包,假设下载的安装包放置在路径/quagga下。rootlocalhostquagga#tarzxvfquagga-0.98.6.tar.gzrootlocalhostquagga#lslrootlocalhostquagga#cdquagga-0.98.6rootlocalhostquagga-0.98.6#./configure-enable-vtyshrootlocalhostquagga-0.98.6#useraddquaggarootlocalhostquagga-0.98.6#makerootlocalhostquagga-0.98.6#makeinstallrootlocalhostquagga-0.98.6#chownRroot.quagga/usr/local/etcrootlocalhostquagga-0.98.6#chmodR774/usr/local/etc,9.3.6Quagga的启动和停止,Quagga的可执行文件安装在/usr/local/sbin下。rootlocalhost#cd/usr/local/etcrootlocalhostetc#cpzebra.conf.samplezebra.conf对其他的配置文件模板也做如此处理,去掉文件尾的“.sample”。启动zebra:rootlocalhostsbin#./zebra&,9.3.7zebra的基本操作,Quagga提供了VTY(VirtualTeletYpe)命令行管理界面,用户可通过Telnet登录该界面。rootlocalhost#telnetlocalhost2601Password:XXXXX说明:输入zebra.conf中配置的密码Router?说明:显示该模式下可用的命令注意:和CiscoIOS一样,quagga中的用户界面也有“tab”键命令补全功能和“?”键帮助功能,可以简化命令的记忆,对学习和提高调试技巧很有效。,1.zebra终端模式下的命令,(1)showiproute显示当前的路由表中的路由。(2)showipv6route显示IPv6路由。(3)showinterface显示接口状态信息。(4)showipforward显示主机是否打开了内核IP转发功能。(5)showipv6forward显示是否打开IPv6数据包转发功能。,2.网络接口操作命令,Zebra提供了多种设置模式,包括:一般模式、特权设置模式、终端设置模式和接口设置模式,在操作时不同的模式允许进行的操作不同,可以使用“?”查看该模式下的允许使用的命令。多种模式的设置方法也是主流路由器采用的形式。操作时,使用“exit”命令可以退回到前一个模式,使用“ctrl+z”直接退回到特权模式。,常用的网络接口命令,(1)interfaceifname说明:进入接口配置模式。(2)shutdown和noshutdown说明:关闭和打开接口(3)ipaddressaddress/prefix说明:前一条给接口配置IPv4地址和掩码,前面加“no”命令可以取消前一条命令的设置结果,下同。(4)ip6addressaddress/prefix说明:给接口配置IPv6地址和地址前缀(5)multicast说明:使能或禁止接口的多播特性。(6)Interfacebandwidth说明:使能或禁止接口带宽限制功能,单位是Kb/s,用来计算ospf的开销,不影响设备的实际设置。(7)link-detectInterface说明:使能或禁止链路侦测功能,目前只有Linux支持该特性。,3.静态路由配置,(1)命令格式:iproutenetworkgateway目标网络的配置形式为A.B.C.D/M,gateway是网关地址或者是接口的名字。如果名字是“null0”,则zebra建立一条黑洞路由。(2)命令格式:iproutenetworknetmaskgateway和上一条命令是等价的。(3)命令格式:iproutenetworkgatewaydistance利用声明的距离来设定路由。多“netxthop”静态路由,该特性需要内核支持。(4)命令格式:ipv6routenetworkgateway或ipv6routenetworkgatewaydistance设置IPv6路由,使用方法同对应的IPv4命令。(5)命令格式:tabletableno指定主路由表,在利用该特性设定路由表之后,随后添加的静态路由将被添加到指定的路由表中。,9.3.8配置基于RIP协议的动态路由,1.routerrip说明:使用RIP功能,该命令是使用RIP路由时要执行的第一条命令。前面加“no”命令,表示取消该条命令。下同。worknetwork说明:声明需要侦测的网段,只有位于该网段内的接口才会被激活。workifname说明:通过网络接口名激活RIP功能,使能该接口收、发RIP数据包的功能。4.neighbora.b.c.d说明:声明RIP邻居。让一个邻居不能自动理解多播路由时,用该命令来声明邻居。5.passive-interface(IFNAME|default)说明:设置网络接口为被动(passive)模式。6.ipsplit-horizon说明:接口的水平分裂,该功能也是默认的。,9.3.9配置基于OSPF的动态路由,OSPF是链路状态协议,和RIP协议不同,OSPF不是交换到达目的地的矢量距离,而是维护了一张网络的拓扑结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论