NAT服务器与防火墙.docx

上传人:b****5 文档编号:4396457 上传时间:2022-12-01 格式:DOCX 页数:25 大小:396.52KB
下载 相关 举报
NAT服务器与防火墙.docx_第1页
第1页 / 共25页
NAT服务器与防火墙.docx_第2页
第2页 / 共25页
NAT服务器与防火墙.docx_第3页
第3页 / 共25页
NAT服务器与防火墙.docx_第4页
第4页 / 共25页
NAT服务器与防火墙.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

NAT服务器与防火墙.docx

《NAT服务器与防火墙.docx》由会员分享,可在线阅读,更多相关《NAT服务器与防火墙.docx(25页珍藏版)》请在冰豆网上搜索。

NAT服务器与防火墙.docx

NAT服务器与防火墙

NAT服务器与防火墙

-NAT服务器与防火墙

▓浅谈IP

▓NAT原理及主要功能

▓NAT服务器的安装与使用

▓iptables在防火墙上的运用

▓实例练习

▓防火墙的简单设置

▓iptables设置文件参考范例

Squid服务器有着快速读取功能,减少了客户端直接连接Internet的机会,不足,这在目前以IPv4为主流的网络环境中,的确困扰着许多系统及网络设计人员。

因此本章将使用NAT的方式来提供这一问题的解决方案。

除此之外,利用NAT概念的扩展,我们也将介绍防火墙的基本概念以及它对企业网络安全性的影响。

◆浅谈IP

因为NAT的使用主要是为了解决IP地址不足的问题,所以在学习NAT的内容前,必须先对IP地址的意义及功能要有基本的了解。

本节将就IP的基本特性逐一介绍以帮助读者建立正确的概念。

◆IP的定义

IP是位于OSI网络模型中的网络层(NetworkLayer)能信协议,它也是TCP/IP通信协议,它也是TCP/IP通信协议组件中最重要的两个通信协议之一,目前Internet中使用的版本是IPv4,有关它的标准都定义在RFC791中。

◆IP主要定义3个基本概念:

●在TCP/IP网络中定义数据传输的基本单位--数据报(Datagram),所有数据在网络上传递都有特定的格式。

●IP运行路由(Routing)的功能,它会选择一条最佳路径供数据传输之用。

●订立数据报在不可靠(Unreliable)的网络上传递时应该遵循的原则。

通常IP是利用以下的运作模式将数据发送到网络上的:

①源主机IP层之上的传输服务会选将数据以TCP或UDP的格式发送到IP层上。

②IP层再将来源及目地的地信息(用来在网络上路由的数据)与IP数据报组合。

③接下来IP层将数据报向下发送到网络接口层,在这一层中,数据链路服务会将IP数据报转换成框架,以便在物理网络中的特定媒体上进行传递。

④因为每个IP数据报都包含来源及目的的地址,然后将这个地址与区域维护的路由表相比较,再判定需进一步采取的转送动作,而在目的地主机上则要运行反向处理。

◆IP寻址

除了路由之外,IP的另一项重要功能为寻址(Addressing)目前Internet上都使用这套标准来表示主机和网络点的逻辑地址,而通过这个管理模式,可以确定每台主机或网络都拥有惟一的识别方法,这可避免地址重复问题的发生。

有一点请大家注意的,每个网络设备的物理地址(MAC)也具有惟一性,可以用来精确表示网络上的主机位置,但因为无法利用其地址来建立一套管理方法,所以通常无法达到寻址的功能所以才设计出IP的寻址方法。

在IPv4中,每台主机所使用的IP地址都是以32个二进制的数字来表示,如011110101011001010010110101101111,这种表示法可以确保Internet上的每台主机都有惟一的地址,因为这些地址都需要经过InterNIC的授权才可以使用。

如果知道特定的IP地址,就可以利用这个地址来连接到此主机。

以上的例子中使用32个二进制的数字来表示IP地址,当然也可以使用十六进制(75652D6F)或十进制(196965039)来表示,但这些表示法都很难让一般用户记忆。

所以IP地址通常使用DottedDecimalNotation(DDN)表示法,它是将32个二进制的位分为4个字节(有时也称为Octet),然后将每个字节以十进制来表示,而每个字节之间以一具句点(.)来分隔。

因此,上例中的IP地址DDE表示法为117.101.45.111,这个表示法并没有什么特殊意义,只是利于识别的方便,如图1-1所示。

根据IP的定义,每个IP地址都是由两个部分所组成:

网络识别码(NetworkID)及主机识别码(HostID)。

例如,网络识别码包含8位,则主机识别码就有32-8=24个位。

而用来判断网络识别码的主机识别码包含的位数,就必须使用“子网掩码”(SubetMask)和IP地址来运算,举例来说,在一般情形下,IP地址为150.23.51.36的网络识别码是“150.23”,而主机识别码为“51.36”,如图1-2所示。

网络识别码在网络中是相当重要的概念,因为它可用来识别TCP/IP网络中的网络节点,而所有位于同一具网络节点中的主机,都拥有相同的网络识别码。

换句话说,如果两台主机的IP地址中包含相同的网络识别码,则它们可以互相传递信息,而无需通过路由器或网关转送。

反之,如果两台主机的IP地址经过子网掩码运算后的网络识别码不同,则它们必须通过路由器或网关转送才可彼此通信。

当在规划局域网时须特别注意这一点,否则随意地指定IP地址,可能会产生无法通信的问题。

而主机识别码是用来识别TCP/IP网络中的节点(可能是工作站、服务器、路由器或其他TCP/IP设备),每台设备的主机识别码在本地的网络节点都必须惟一,如果同一个网络节点中的两台主机具有相同的主机识别码,则它们会发生无法连接网络的问题,但是在不同网络节点中的两台主机可以使用相同的主机识别码。

例如,150.128.3.11和150.128.3.11不以同时存在网络中,因为它们的网络识别码和主机识别码都相同,但是150.128.3.11和145.200.3.11可以同时存在不同的网络中,因为它们的主机识别码虽然相同,但是网络识别码却不同。

◆IP地址类别

因为每个IP地址都是由32个二进制的数字组成,所以理论上来说,应该会存在2的32次方个合法IP地址(232=4294967296),但是事实上并没有如此多的IP地址。

目前InterNIC利用控制IP地址中的第一个字节(前8个位)来区分为5个IP类别,我们称它们为ClassA、ClassB、ClassC、ClassD、和ClassE、如图1-3所示。

●ClassA

在ClassA的网络中,每个网络都是利用前8个位来定义,因此有时也称为“/8网络”。

因为第一个位已被事先定义为二进制的0,所以ClassA的第1个字节是由00000001~01111111,也就是十进制的1~127,但因为127是个特殊的网络识别码(LookbackAddress),所以目前Internet上具有126个ClassA网络。

ClassA使用最后3个字节(24个位)来表示主机识别码,因此每个ClassA网络可以包含的主机数目为224,也就是16777216台主机。

但是主机识别码全为1和0表示广播网络地址,因此每个ClassA网络实际的主机机数目为16777214,由此可知,所有VlassA的主机数目是126*16777214=2113928964。

●ClassB

在ClassB网络中,每个网络都是利用前16个位来定义,因此有时也称为“/16网络”。

因为前2个位已被事先定义为二进制的10,所以ClassB的第一个字节是由10000001~10111111,也就是十进制的128~191,而第二个字节也是网络识别码,所以Internet上具有64*28=16384个ClassB网络。

ClassB使用最后2个字节(16个位)来表示主机识别码,因此每个ClassB网络可以包含的主机数目为216,也就是65536台主机。

但是主机识别码,因此每个ClassB网络可以包含的主机数目为65534,由此可知,所有ClassB的主机数目是167384*65534=1073709056。

●ClassC

在ClassC的网络中,每个网络都是利用前24个位来定义,因此有时也称为“/24网络”。

因为前3个位已被事先定义为二进制的110,所以ClassC的第一具个字节是由11000001~11011111,也就是十进制的192~223,而第2和第3个字节也是网络识别码,所以目前Internet上具有32*216=2097152个ClassC网络。

ClassC使用最后1个字节(8个位)来表示主机识别码,因此每个ClassC网络可以包含的主机数目为28,也就是256台主机。

但是主机识别码全为1和0表示广播及网络地址因此实际的主机数目为254,而所有ClassC的主机数目是254*2097152=532676608。

●ClassD

ClassD的IP地址只供多点发送(Multicast)的群组计算机使用,也就是说以这些地址发送的信息可以同时发送到多台主机,这些地址是用在某些特殊的软件组或服务。

ClassD网络的前4个位已被事先定义为二进制的1110,所以ClassD的第一个字节是由11100001~1101111,也就是十进制224~239,所以目前有16个ClassD网络,但这些地址并不提供给一般的Internet主机使用,它可以不具有子网掩码。

●ClassE

ClassE的IP地址是属于实验用的地址,这些地址并不提供给一般的Internet主机使用,它的前5个位已被子事先定义为二进制的11110,所以ClassE的第一个字节是由11110001~11110111,也就是十进制的240~254,所以目前有15个ClassE网络。

●私有IP地址(PrivateIPAddress)

如果用户的网络不不连接Internet,那么无湎为了使用TCP/IP通信协议而向InterNIC或ISP取得已登录的IP地址使用权,在此情形下,IANA(InternetAssignedNumbersAuthority)建议使用“私有IP地址”。

这些地址都是由IANA所保留,主要是提供在TCP/IP网络上的私人使用,Internet上的主机也不可使用这些地址,而这些私有IP地址正是NAT运作上所使用的地址。

这些私有IP地址的范围如表1-2所示

注:

有些人习惯将这些IANA保留IP地址称为虚拟IP,而开放在Internet上的地址则称为物理IP地址,但是作者认为这些名称并不合适。

因为这些保留的IP地址也是由RFC正式定义的IP地址,何称“虚拟”呢?

所以我们将用“内部IP”表示从IANA所保留的IP地址,而在Internet上使用的IP地址则是以“外部IP”来表示。

◆子网掩码(SubnetMask)

子掩码和一般的IP地址相同,都是由32个二进制的数字所组成,它的惟一功能就是辨别IP地址中网络识别码和主机识别码部分为什么,这在网络传输上相当重要,因为具有相同网络识别码的主机要以直接地通信,而不同网络识别码的主机就需要通过网关来转送信息。

在利用子网掩码判断IP地址的网络识别码和主机识别码的部分时,要按以下的步骤来运算我们在此以一个ClassB的IP地址——150.23.56.25和ClalssB默认的子网掩码---255.255.0.0为例。

将IP地址转换为二进制表示法

在所有的子网掩码运算和子网分割运算中,所有的IP地址及子网掩码都必须先转换为二进制表示法。

在本例中150.23.56.25的二进制表示法为

10010110000101110011100000011001

注:

在转换为二进制表示法时须注意一点,如果不足8位时须以0补足,例如56的二进制表示法应写成“00111000”,而不是“111000”。

将子网掩码转换为二进制表示法

在本例中子网掩码255.255.0.0的二进制表示法为111111*********0000000000000000,而各种类型网络默认的子网掩码如表1-3所示。

将以二进制表示法的IP地址和子网掩码利用“AND”运算

所谓“AND”运算是指真值表中“与”的运算,只要二者其中有一个是0,则运算后值就为0,只有在二者都为1的情形下才会为1。

有关“AND”运算的结果如下所示:

1AND1=11AND0=0

0AND1=00AND0=0

在了解“AND”运算后,就可以将以二进制表示法的IP地址和子网掩码利用“AND”来运算,运算的过程及结果如图1-4所示。

运算结果中非0的部分为网络识别码

在IP地址和子网掩码利用“AND”运算后,它的结果中不是0的部分就是网络识别码,在本例中为150.23,但是通常习惯用0来将它写成类似IP地址的形态,如150.23.0.0。

在发送信息前,IP即是以这种方法来判断目的地的主机是否存在本地网络,如果目的地主机位于远程网络,IP就会将此信息发送到路由或默认的网关,如图1-5所示。

由以上的结果可知,如果要避免寻址及路由问题,应该确保在同一网络区域上的所有TCP/IP主机都使用相同的子网掩码。

◆NAT原理及主要功能

前面内容介绍了IP的基本概念,接下来将开始介绍有关NAT的内容。

所谓“网络地址转换”(NetworkAddressTranslation,NAT),它是定义于RFC1631中的Internet标准,主要是用来简化及保存IP地址,它可让原本无法上网,但是可以使用内部IP地址的主机可以成功地连接Internet。

这可大大减少IP地址的需求,因为基本上整个内部网络都可凭借NAT上的一具外部IP来连接Internet,如图1-6所示。

当NAT作用于路由器时,通常可连接两组以上的网络上在转送数据包到其他网络前,将内部IP地址转换为Internet上合法的外部IP地址。

此外,NAT还可以对外只用一个地址代表整个网络,这样可以提供更高的安全性,将整个内部网络隐藏在该地址后,将这种安全性及地址保存的双重功能的程序通常安装在远程访问的环境。

目前许多的路由器支持NAT这项功能,其他如Linux中的IP伪装(IPMasquerade),FreeBSD中的NATD或Windows上的Sygate软件都具有相同的功能。

使用NAT的优点如下:

●减少IP地址使用量。

在使用NAT以后,Internet上的主机会误以为它正与NAT服务器进行通信,因为它们并不知在NAT主机后包含一个局域网。

于是,回传的数据包会直接发送到NAT服务器,然后NAT服务器再将这个数据包头文件目的地的IP地址更为局域网里真正发出信息的计算机。

●可在NAT服务器上的外部IP上建立多个“IPAlias”,当收到传给那些IPAlias的请求时,NAT可以把这些请示求转送给内部网络中提供服务的服务器。

●负载平衡(LoadBalancing),也就是说,将同一个IPAlias请求分别导向到其他运行相同服务的服务器,可减少单一服务器的工作量。

虽然使用NAT具有以上的优点,但是在某些情况下,必须注意NAT潜藏的缺点,以下举出几个例子以供读者参考:

●理论上,NAT服务器只使用一个IP地址,就可涵盖无数个内部IP地址,但是许多网络通信协议或应用程序都需要真正点对点的连接。

●有些数据包是从出发地到目的地过程中的过程中都不能修改,像IP安全体系结构就不可以使用NAT进行映射,因为数据包的头文件中含有数字签名,如果头文件被更改(即使是任何一个字),这个数字签名便从此失去效力。

●虽然NAT对于无法取得足够IP地址的企业组织来说,它是一个极佳的解决方案,但当该组织必须合并多个局域网时,必须仔细重新规划IP分配,否则很容易产生IP重复的情况(因为每个局域网都使用内部IP地址)。

●NAT通常被人视为增加计算机安全性的保护措施,但是如果入侵者可以控制NAT服务器,那么整个局域网就会暴露在Internet当中,因此NAT并不能拿来代替防火墙使用。

NAT依其作用的方向性可区分两种类型:

●SourceNAT(SNAT):

所谓的SourceNAT就是改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具SNAT的例子。

●DestinationNAT(DNAT):

DestinationNAT刚好与SNAT相反,它是改变第一个数据懈的目的地地址,如平衡负载就是属于DNAT。

◆NAT服务器的安装与使用

经过以上两个小节的说明,想必各位读者现在对于IP及NAT服务器的原理一定有所了解,接下来将实际进行NAT服务器的安装。

本书中的环境假设NAT服务器目前只具备一张网卡(负责连接Internet),而且这张网卡使用以下的外部IP地址配置:

●网卡名称:

eth0。

●IP地址:

24.68.32.118。

●子网掩码:

255.255.252.0。

而为了连接内部网络(本书假设为192.168.1.x)必须再新建一张网卡,它使用内部IP地址配置:

●网卡名称:

eth1。

●IP地址:

192.168.1.1.

●子网掩码:

255.255.252.0。

图1-8所示是本书范例使用的网络体系结构。

iptables安装

在安装NAT服务器前,必须确定系统上已安装iptables程序,如果不知是否已经安装iptables,可以使用以下的方法来判断:

[root@nslroot]#rpm-qaiptables

Iptables-1.2.7a-2

如果尚未安装iptables,可以在第一张安装光盘中的/RedHat/RPMS目录下,找到名为“iptables-1.2.7a-2.i386.rpm”的安装程序,然后按照以下的方法进行安装:

[root@nslroot]#rpm–ivhiptables-1.2.7a-2.i386.rpm

为使开机时能自动运行iptablas,可以在终端机窗口中输入“ntsysv”指令,然后在出现的画面中,利用上下方向键将光标移到菜单中的“iptables”项目(同时确定ipchains选项没有被选中),然后按空格键以选择,最后利用Tab键将光标移到“确定”按钮并按Enter键即完成设置,如图1-9所示。

网卡安装

在安装iptables程序后,接下来我们将安装第二张网卡连接内部网络,以下是逐步的安装说明。

为了避免安装时的失败,建议先准备一张Linux支持的网卡,如果不确定这张网卡是否可用,可到以下网址查阅(本书以RedHat为例):

http:

//

插入网卡并启动电源后,Linux会自动检测这张网卡,然后Linux会要求输入IP地址、子网掩码、网关和DNS服务器IP地址等配置信息。

启动第二张卡。

[root@nslroot]#ifupethl

使用IPForwarding功能

在安装第二张网卡后,接下来须使用IPForwarding的功能,代替内部网络的主机发送数据包,以下是使用的步骤及说明:

①修改/etc/sysctl.conf文件内容,将“net.ipv4.ip_forward=”这行设置为“1”。

[root@nslroot]#vi/etc/sysctl.conf

Net.ipv4.ip_forward=1

②使用IPForwarding功能。

在此介绍两种使用IPForwarding功能方法,可以直接运行以下的指令:

[root@nslroot]#echo1>/proc/sys/net/ipv4/ip_forward

或在/etc/sysconfig/network文件中,加入以下的记录:

[root@nslroot]#vi/etc/sysconfig/network

③最后重新加载/etc/rc.d/init.d/xinetd,以便设置生效:

[root@nslroot]#/etc/rc.d/init.d/xinetdreload

重新加载配置设置:

确定]

④在此可以先忽略安全性的考虑,等安装完成并测试成功后,再进行安全管理。

以下的指令表示允许所有内部网络的主机连接到Internet,这也是一般所称的“IP伪装”(IPMasquerading):

[root@nslroot]#iptables–tnat–APOSTROUTING–s192.168.1.0/24–jMASQUERADE

但有时使用以上的指令后,FTP会无法正常运作,此时可以尝试以下的指令:

[root@nslroot#modprobeip_conntrack_ftp

[root@nslroot]#modprobeip_nat_ftp

客户端设置

在NAT服务器设置后,最后的步骤就是客户端的设置,本书在此以Windows2000客户端为例。

以下是设置的步骤与说明:

①选择桌面上的“网上邻居”图标,然后右击并选择菜单中的“属性”选项,系统即会出现“网络和拨号连接”窗口,如图1-10所示。

②在出现的“网络和拨号连接”窗口中选择“本地连接”图标,然后右击并选择要菜单中的“属性”选项,系统会随即出现“本地连接属性”窗口,如图9-11所示。

③在出现的“本地连接属性”窗口中,选择“Internet协议(TCP/IP)”选项,并单击右下角的“属性”按钮,系统会随即出现“Internet协议(TCP/IP)属性”窗口,如图1-12所示。

④在出现“Internet协议(TCP/IP)属性”窗口中,首先选择“使用下面的IP地址”选项,然后输入以下的信息:

●“IP地址”字段:

输入192.168.1.X,本书在此以192.168.1.5为例。

●“子网掩码”字段:

输入255.255.255.0,必须与NAT服务器内部IP使用的子网掩码相同。

●“默认网关”字段:

这是最重要的设置,必须输入NAT服务器的内部IP(此处是192.168.1.1),千万不可填入NAT服务器的外部IP,否则数据包永远也无法传到NAT服务器(因为“网络ID”不同即无法通信)。

●“首选DNS服务器”字段:

如果网络中有DNS服务器,就可以在此输入DNS服务器的IP地址。

⑤完成客户端的设置。

◆iptables在防火墙上的运用

介绍安装NAT服务器时简要地说明了iptables程序,其实它还有许多功能尚未说明,因此本节将再进一步说明iptables程序在防火墙上的运用。

iptables体系结构与处理流程

“iptables”程序的功能都是属于数据包(Packet)层的工作,而这些工作都是利用不同的“规则表”(RuleTable)来定义的。

在iptables中包含3个默认的RuleTable:

FilterTable、NATTable与MangleTable,而每一个RuleTable又是由数个“链”(Chain)所组成。

举例来说,在FilterTable中除了定制的链之外,还包含3个内置的链:

INPUTChain、OUTPUTChain和FORWARDChain,如图1-13所法。

FilterTable是iptables中的默认RuleTable,也就是说,在运行时如果没有指定其他参数,则iptables会套用FilterTable中的规则,令外两种RuleTable都需要配合指令参数使用。

而在防火墙的运用上,iptables主要是使用默认的FilterTable功能,所以有人就称为“包过滤器”(PacketFilter)。

FilterTable可以先检索到数据包,然后通过预选取一义的规则(Rule)来判断是否发送此数据包。

由于它运行于网络层,所以不论是否发送数据包,都不会影响到数据包中的数据内容。

注:

所谓“包过滤”是指利用一具软件查看经过数据包的表头(Header),而由此决定整个数据包的处理,可能的处理方式有:

丢弃这个数据包(DROP)、接受这个数据包(ACCEPT),或其他更复杂的动作。

数据包过滤原理

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1