资源描述
路由器转发数据包过程详解
(2010-05-22 20:59:09)
转载
标签:
路由器
数据包转发
it
分类: 学习交流
主机PC1向主机PC2发个数据包,中间经过B路由器,请问源地址和源MAC是怎么变化的?
答:就假设拓扑图是这个样子吧:PC1-----(B1-B2) -------PC2
B1和B2是路由器B上的两个接口, PC1和PC2是PC,由主机PC1向主机PC2发送数据包,那么在主机PC1形成的数据包的目的IP就是PC2的IP,源IP就是主机PC1的IP地址,目标MAC地址就是B1的MAC地址,源MAC地址就是PC1的MAC地址。
转发过程:假如是第一次通信PC1没有PC2的ARP映射表
PC1在本网段广播一个数据帧(目的MAC地址为:FFFF:FFFF:FFFF:FFFF)帧格式为:
源MAC地址(PC1)
源IP地址(PC1)
FFFF:FFFF:FFFF:FFFF
目的IP地址(PC2)
由于PC2和PC1不在同一网段,路由器不转发广播帧。假设路由器B、C配置了到达PC2网段的路由。此时路由器给PC1回复一个应答数据包,告诉PC1自己的MAC地址就是PC1要通信的PC2主机的MAC地址。而此时PC1建立ARP映射表,将该MAC地址(即路由器的B1接口)与PC2的IP地址建立映射关系。实际上是路由器对其进行了“欺骗”。
其应答数据帧格式为:
源MAC地址(路由器B1)
源IP地址(PC2)
目的MAC地址(PC1)
目的IP地址(PC1)
而数据包在B1接口的时候其数据包的帧格式为:
源MAC地址(PC1)
源IP地址(PC1)
FFFF:FFFF:FFFF:FFFF
目的IP地址(PC2)
对于路由器B同样建立了自己的ARP映射表:将PC1的MAC地址与PC1的IP地址映射。
数据包在流出B2接口的时候其数据包的帧格式为:
源MAC地址(路由器B2)
源IP地址(PC1)
FFFF:FFFF:FFFF:FFFF
目的IP地址(PC2)
PC2所在的网段各主机将自己的IP地址与数据包中的目的IP地址比对。若符合则将自己的MAC地址替换上广播MAC地址,并回复该数据帧:
源MAC地址(PC2)
源IP地址(PC2)
目的MAC地址(路由器B2)
目的IP地址(PC1)
路由器收到该数据包的时候,由于已经建立了ARP映射表,一方面路由器将储存在映射表中的对应关系调出来。将PC1的MAC地址覆盖路由器B2接口的MAC地址。另一方面路由器更新ARP映射表,将PC2的MAC地址与PC2的IP地址映射。
此时流出路由器B1接口的数据包的帧格式为:
源MAC地址(PC2)
源IP地址(PC2)
目的MAC地址(PC1)
目的IP地址(PC1)
之后PC1收到该数据帧。通信建立。同时更新ARP映射表,将PC2的MAC地址与PC2的IP地址建立对应关系。
此后每次通信时由于PC1要与PC2通信时。由于PC1已经建立了到PC2IP地址的ARP映射,所以下次要通信时直接从本地ARP调用。
简单说一下,网络设备间(包括设备之间和计算机之间)如果要相互通信的话必需经过以下这几个步骤:
(以TCP/IP协议通信为例)
1、发送端的应用程序向外发出一个数据包。
2、系统判断这个数据包的目标地址是否在同一个网段之内。
3、如果判断出这个数据包的目标地址与这台设备是同一个网段的,那么系统就直接把这个数据包封装成帧,这个数据帧里面就包括了这台设备的网卡MAC地址,然后这个帧就直接通过二层设备(也就是大家说的不带路由的交换机/HUB之类的~^-^)发送给本网段内的目标地址。
4、如果这个数据包的目标地址不在这个网段,系统就把这个数据包转发给网关!网关收到之后经过重新封装,再重复这一步,把数据转发给其它网段,以此类推,广域网就是这样建立起来的!
这里的网关可以是大家所熟悉的代理PC、路由器,三层交换机、防火墙等~
作者:要死掉啦 回复日期:2003-1-3 22:13:33
宫本大哥的贴也有说明:
什么是网关?有什么用?
真正意义上的网关实际上是一个应用层的设备。实际上在我们现在的网络中,它只表示一个网络的出口。
在一个网络中,机器A要发一个数据包给机器B,这时A要比较B的机器的IP和自己在不在同一个网络中,如果在,那么数据包直接被发送出去,如果不在,那么A会把机器送到网关,如果没有设网关,那么机器A就会把这个数据包丢弃掉。
还是以学校为例,网关就像是我们每个教室的门一样,出了这个教室门,我们就可以到另外一个班。当我要送东西给一个同学时,这个同学如果在我们班里,我就可以直接送给他,如果他不在我们班,那么我就要走出教室门,如果没有教室门,那我就把东西丢了。
作者:宫本不赢 回复日期:2003-1-3 22:30:11
我在我的网络基本知识的讲座中说得不够精确,实际上:在一个网络中,机器A要发一个数据包给机器B,那么A会先检查路由表,如果路由表里有到目标地址的路由,就会根据路由把数据发送出去,如果路由表里没有,就会把数据送到网关,如果没有设网关,那么机器A就会把这个数据包丢弃掉。我估计你能访问内网是因为你的路由表里有到你内网的路由,所以它并不通过网关。
作者:南方懒猫 回复日期:2003-1-3 22:31:58
理论地东东说完了。
请说点实际的东东了~~~~
等待~~~~
作者:海天一线 回复日期:2003-1-3 23:39:20
ok
作者:不可七世 回复日期:2003-1-4 0:47:48
OK
作者:bluebeer 回复日期:2003-1-4 1:15:49
网络的东西应该好好讲讲层,并学会用层的思想去分析网络的问题。大有好处,楼主老师指正
作者:xqh_qing 回复日期:2003-1-4 1:23:41
接着写啊~
作者:要死掉啦 回复日期:2003-1-4 1:31:41
作者:bluebeer 回复日期:2003-1-4 1:15:49
网络的东西应该好好讲讲层,并学会用层的思想去分析网络的问题。大有好处,楼主老师指正
回楼上的,如果我能用那七个灰色的框框来套一套,的确很容易就可以把话说清楚,但....也要考虑一些基础不好的同学啊~。
假如大家都像你这样有了一定的基础,就应该自己抱着教材啃了.
呵呵~~
作者:阿虎 回复日期:2003-1-4 1:53:01
我倒是有CISCO的一套教材FALSH的,当年学CCAI的时候用的,就是全英文的,:)
做的很好,也讲的很透彻。
作者:要死掉啦 回复日期:2003-1-4 2:36:29
继续:
5、当一个网关(三层设备)收到另一个网段送上来的数据包,就马上打开它,并找出这个数据包送达的目标IP地址。
6、系统根据这个IP地址,查找自身的路由表,决定这个数据包应该由哪个端口转发出去才能最快的到达目标。
7、当设备决定好了数据转发的最佳路径,就重新把这个数据包进行封装,继续转发给下一个路由器。
8、当数据包经过以上几个步骤发送与转发,终于到达了目标网段之后,也就是在最后的一个网关设备那里。网关设备打开这个送到的数据包并分析其中的目标IP。
9、网关设备得知送到的这个数据包正是在本网段之后,就马上查找内部的MAC表。找到IP与MAC的对应关系,重复步骤3,把这个数据包封装成帧,最终将这个数据包送到目标机器的网卡上!
10、目标主机的网卡收到网关设备发送过来的这个数据包。验证之后,将其传送给最高层,即:应用程序。
至此,整个通信过程就这样建立起来了~~
· 漫谈三层交换机技术工作原理
· 2010-03-16 15:54 佚名 电子产品世界 我要评论()
有关三层交换机技术工作过程的简单概括可以总结为:简洁的路由软件使路由过程简化,使我们的工作变得更加的游刃有余。
大家都知道三层交换机适用于一些小型的局域网络和一些中小型的企业,这个就不用在这里做过多的介绍了,那么下面就向大家介绍下有关三层交换机技术,相信这是许多用户日常中可以用的到的。
三层交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中。交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发。
如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发,这一过程称为泛洪(flood),广播帧和组播帧向所有的端口转发。学习:以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中。
转发/过滤:当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(如该数据帧为广播/组播帧则转发至所有端口)。消除回路:当交换机包括一个冗余回路时,以太网交换机通过生成树协议避免回路的产生,同时允许存在后备路径。
三层交换机的每一个端口所连接的网段都是一个独立的冲突域。交换机所连接的设备仍然在同一个广播域内,也就是说,交换机不隔绝广播(惟一的例外是在配有VLAN的环境中)。
交换机依据帧头的信息进行转发,因此说交换机是工作在数据链路层的网络设备(此处所述交换机仅指传统的二层交换设备)。依照交换机处理帧时不同的操作模式,主要可分为两类:
存储转发:交换机在转发之前必须接收整个帧,并进行错误校检,如无错误再将这一帧发往目的地址。帧通过交换机的转发时延随帧长度的不同而变化。直通式:交换机只要检查到帧头中所包含的目的地址就立即转发该帧,而无需等待帧全部的被接收,也不进行错误校验。由于以太网帧头的长度总是固定的,因此帧通过交换机的转发时延也保持不变。
二层交换(也称为桥接)是基于硬件的桥接。基于每个末端站点的唯一MAC地址转发数据包。二层交换的高性能可以产生增加各子网主机数量的网络设计。其仍然有桥接所具有的特性和限制。
三层交换是基于硬件的路由选择。路由器和第三层交换机对数据包交换操作的主要区别在于物理上的实施。四层交换的简单定义是:不仅基于MAC(第二层桥接)或源/目的地IP地址(第三层路由选择)。
同时也基于TCP/UDP应用端口来做出转发决定的能力。其使网络在决定路由时能够区分应用。能够基于具体应用对数据流进行优先级划分。它为基于策略的服务质量技术提供了更加细化的解决方案。提供了一种可以区分应用类型的方法。
二层交换技术从网桥发展到VLAN(虚拟局域网),在局域网建设和改造中得到了广泛的应用。第二层交换技术是工作在OSI七层网络模型中的第二层,即数据链路层。它按照所接收到数据包的目的MAC地址来进行转发,对于网络层或者高层协议来说是透明的。
它不处理网络层的IP地址,不处理高层协议的诸如TCP、UDP的端口地址,它只需要数据包的物理地址即MAC地址,数据交换是靠硬件来实现的,其速度相当快,这是二层交换的一个显著的优点。
但是,它不能处理不同IP子网之间的数据交换。传统的路由器可以处理大量的跨越IP子网的数据包,但是它的转发效率比二层低,因此要想利用二层转发效率高这一优点,又要处理三层IP数据包,三层交换技术就诞生了。
三层交换技术的工作原理
第三层交换工作在OSI七层网络模型中的第三层即网络层,是利用第三层协议中的IP包的包头信息来对后续数据业务流进行标记,具有同一标记的业务流的后续报文被交换到第二层数据链路层。
从而打通源IP地址和目的IP地址之间的一条通路。这条通路经过第二层链路层。有了这条通路,三层交换机就没有必要每次将接收到的数据包进行拆包来判断路由,而是直接将数据包进行转发,将数据流进行交换。
近年来的对三层技术的宣传,耳朵都能起茧子,到处都在喊三层技术,有人说这是个非常新的技术,也有人说,三层交换嘛,不就是路由器和二层交换机的堆叠,也没有什么新的玩意,事实果真如此吗?下面先来通过一个简单的网络来看看三层交换机的工作过程。
浅谈vpn实现原理
众所周知,由于公共IP的短缺,我们在组建局域网时,通常使用保留地址作为内部IP,这些保留地址Internet上是无法被路由的,所以在正常情况下我们无法直接通过Internet访问到在局域网内的主机。为了实现这一目的,我们需要使用VPN隧道技术,其实现过程可以通过下面的图示说明:
- 通常情况下,VPN网关采用双网卡结构,外网卡使用公共IP接入Internet;
- 如果网络一的终端A需要访问网络二的终端B,其发出的访问数据包的目标地址为终端B的IP (内部IP);
- 网络一的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查,如果目标地址属于网络二的地址,则将该数据包进行封装,封装的方式根据所采用的VPN技术不同而不同,同时VPN网关会构造一个新的数据包(VPN数据包),并将封装后的原数据包作为VPN数据包的负载,VPN数据包的目标地址为网络二的VPN网关的外部地址;
- 网络一的VPN网关将VPN数据包发送到Internet,由于VPN数据包的目标地址是网络二的VPN网关的外部地址,所以该数据包将被Internet中的路由正确地发送到网关;
- 网络二的VPN网关对接收到的数据包进行检查,如果发现该数据包是从网络一的VPN网关发出的,即可判定该数据包为VPN数据包,并对该数据包进行解包处理。解包的过程主要是先将VPN数据包的包头剥离,在将负载通VPN技术反向处理还原成原始的数据包;
- 网络二的VPN网关将还原后的原始数据包发送至目标终端,由于原始数据包的目标地址是终端B的IP,所以该数据包能够被正确地发送到终端B。在终端B看来,它收到的数据包就从终端A直接发过来的一样;
- 从终端B返回终端A的数据包处理过程与上述过程一样,这样两个网络内的终端就可以相互通讯了。
通过上述说明我们可以发现,在VPN网关对数据包进行处理时,有两个参数对于VPN隧道通讯十分重要:原始数据包的目标地址(VPN目标地址)和远程VPN网关地址。根据VPN目标地址,VPN网关能够判断对哪些数据包需要进行VPN处理,对于不需要处理的数据包通常情况下可直接转发到上级路由;远程VPN网关地址则指定了处理后的VPN数据包发送的目标地址,即VPN隧道的另一端VPN网关地址。由于网络通讯是双向的,在进行VPN通讯时,隧道两端的VPN网关都必须知道VPN目标地址和与此对应的的远端VPN网关地址。
随着信息技术的快速发展,为了提高服务的质量和水平、在市场竞争中取得优势,企业建立了内部局域网,使内部办公人员通过网络可以迅速地获取信息。然而,随着个人电脑和互联网应用技术的普及,“在家办公”、“异地办公”、“移动办公”等多种远程办公模式逐渐普及,同时合作伙伴的人员也希望能访问到相应的信息资源,企业的IT 管理人员面临将远程办公模式作为内部办公网络的延伸和对合作伙伴人员提供外联网接入的需求,为远程办公的员工提供访问内部信息和为合作伙伴人员访问与其身份相符的信息的方便。
然而,要享受通过互联网访问企业内部的信息资源的便利,就需要实施适当的信息安全策略,在严格防止企业信息资源被非法窃取的同时,对合法的访问要提供方便,同时还需尽量降低信息安全策略的实施和维护成本。要满足以上需求就要利用VPN 技术接入,VPN 按接入可分为Site-TO-Site VPN 和Client-TO-Site VPN。
企业通过Internet 数据传输平台,实施加密的VPN 实现安全接入的办法主要有两种:一种是IPsec VPN,另一种是SSL VPN。两种技术在不同领域各有其优势。
datagram(数据报) -- 在网络层中的传输单元(例如IP)。一个datagram可能被压缩成一个或几个packets,在数据链路层中传输。
packet(数据包) -- 封装的基本单元,它穿越网络层和数据链路层的分解面。通常一个packet映射成一个frame,但也有例外:即当数据链路层执行拆分或将几个packet合成一个frame的时候。
二层的PDU叫做Frame;
IP的叫做Packet;
TCP的叫做Segment;
UDP的叫做Datagram。
OSI参考模型的各层传输的数据和控制信息具有多种格式,常用的信息格式包括帧、数据包、数据报、段、消息、元素和数据单元。信息交换发生在对等OSI层之间,在源端机中每一层把控制信息附加到数据中,而目的机器的每一层则对接收到的信息进行分析,并从数据中移去控制信息,下面是各信息单元的说明:
帧(frame)是一种信息单位,它的起始点和目的点都是数据链路层。
数据包(packet)也是一种信息单位,它的起始和目的地是网络层。
数据报(datagram)通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。
段(segment)通常是指起始点和目的地都是传输层的信息单元。
消息(message)是指起始点和目的地都在网络层以上(经常在应用层)的信息单元。
元素(cell)是一种固定长度的信息,它的起始点和目的地都是数据链路层。元素通常用于异步传输模式(ATM)和交换多兆位数据服务(SMDS)网络等交换环境。
数据单元(data unit)指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。SDU是在同一机器上的两层之间传送信息。PDU是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。
网络分析中数据包结构的定义时间:2009-07-03 00:00 来源:enet 字体:[大 中 小]CODE 协议结构定义
---------------------------------------
#pragma pack(1) //进入字节对齐方式
typedef struct FramHeader_t
{ //Pcap捕获的数据帧头
BYTE DstMAC[6]; //目的MAC地址
BYTE SrcMAC[6]; //源MAC地址
WORD FrameType; //帧类型
} FramHeader_t;
typedef struct IPHeader_t
{ //IP数据包头
BYTE Ver_HLen; //版本+报头长度
BYTE TOS; //服务类型
WORD TotalLen; //总长度
WORD ID; //标识
WORD Flag_Segment; //标志+片偏移
BYTE TTL; //生存周期
BYTE Protocol; //协议类型
WORD Checksum; //头部校验和
DWORD SrcIP; //源IP地址
DWORD DstIP; //目的IP地址
} IPHeader_t;
typedef struct ARPHeader_t
{ //ARP数据包头
WORD HeadwareType; //硬件类型
WORD ProtocolType; //协议类型
BYTE HLen; //硬件地址长度
BYTE PLen; //协议地址长度
WORD Operation; //操作类型
BYTE SrcMAC[6]; //源MAC地址
DWORD SrcIP; //源IP地址
BYTE DstMAC[6]; //目的MAC地址
DWORD DstIP; //目的IP地址
} ARPHeader_t;
typedef struct UDPHeader_t
{ //UDP数据包头
WORD SrcPort; //源端口
WORD DstPort; //目的端口
WORD Len; //总长度
WORD Checksum; //校验和
}UDPHeader_t;
typedef struct TCPHeader_t
{ //TCP数据包头
WORD SrcPort; //源端口
WORD DstPort; //目的端口
DWORD SeqNO; //序号
DWORD AckNO; //确认号
WORD Offset4_Reserved6_Flag6; //头部长度+保留+标志
WORD Window; //窗口大小
WORD Checksum; //校验和
WORD UrgentPointer; //紧急指针
DWORD Option_; //选项+填充
}TCPHeader_t;
#pragma pack() //恢复默认对齐方式
----------------------------------------------------------------------------
一.IP 数据报结构
IP数据包结构分析
IP数据报中依次包括以下信息:
1、Version=4,表示IP协议的版本号为4。该部分占4个BIT位。
2、Header Length=20 Bytes,表示IP包头的总长度为20个字节。该部分占4个BIT位,单位为4个字节,因此,一个IP包头的长度最长为“1111”,即15*4=60个字节。
3、Type of Service=00,表示服务类型为0。该部分用二个十六进制值来表示,共占8个BIT。
8个BIT的含义是:
000 前三位不用
0 表示最小时延,如Telnet服务使用该位
0 表示吞吐量,如FTP服务使用该位
0 表示可靠性,如SNMP服务使用该位
0 表示最小代价
0 不用
4、Total Length=48Bytes,表示该IP包的总长度为48个字节。该部分占16个BIT,单位为Byte。由此可见,一个IP数据包的最大长度为2的 16次方减1,即:65535个字节。因此,在以太网中能够传输的最大IP数据包为65535个字节。
5、Identification=363,表示IP包识别号为363。该部分占16个BIT,以十进制数表示。
6、Flags,表示片标志,占3个BIT。各位含义分别为:第一个“0”不用,第二个“0”为分片标志位,“1”表示分片,“0”表示不分版本。第三个0为是否最后一片标志位,0表示最后一片,1表示还有更多的片。
7、Fragment Offset=0,表示片偏移为0个Bytes。该部分占13个BIT。
8、Time to Live=128Secongs/Hops,表示生存时间TTL值为128。该部分占8个BIT。
9、Proctol=6(TCP),表示协议类型为TCP,协议代码是6。如果是UDP协议,则此处的协议代码应为17。如果是ICMP协议,则此处的协议代码应为1。该部分占8个BIT。
10、Header Checksun=4035(correct),表示IP包头校验和为4035,括号内的Correct表示此IP数据包是正确的,没有被非法修改过。该部分占16个BIT,用十六进制表示。
11、Source Address=[76.88.16.104],表示IP数据包源地址为:76.88.16.104。该部分占32个BIT。
12、Destination Address=[76.88.16.16],表示IP数据包目的地址为:76.88.16.16。该部分占32个BIT。
13、No Options,表示IP数据包中未使用选项部分。当需要记录路由时才使用该选项。
二.TCP数据报结构
TCP数据报结构分析
TCP数据报中依次包括以下信息:
1、Source Port=1038,表示发起连接的源端口为1038。该部分占16个BIT。通过此值,可以看出发起连接的计算机源端口号。
2、Destination Port=21(FTP-CTRL),表示要连接的目的端口为21。该部分占16个BIT。通过此值,可以看出要登录的目的端口号。21端口表示是FTP服务端口。
3、Initial Sequence Number=1791872318,表示初始连接的请求号,即SEQ值。该部分占32个BIT,值从1到2的32次方减1。
4、Next Expected SEQ Number=1791872319,表示对方的应答号应为1791872319,即对方返回的ACK值。该部分占32个BIT,值从1到2的32次方减1。
5、Data Offset=28 Bytes,表示数据偏移的大小。该部分占4个BIT。
6、Reserved Bites:保留位,此处不用。该部分占6个BIT。
7、Flags=02。该值用两个十六进制数来表示。该部分长度为6个BIT,6个标志位的含义分别是:
0 URG,紧急数据标志,为1表示有紧急数据,应立即进行传递。
0 ACK,确认标志位,为1表示此数据包为应答数据包
0 PSH,PUSH标志位,为1表示此数据包应立即进行传递。
0 RST:复位标志位。如果收到不属于本机的数据包,则返回一个RST
0 SYN:连接请求标志位。为1表示为发起连接的请求数据包。
0 FIN:结束连接请求标志位。为1表示是结束连接的请求数据包。
8、Window=64240,表示窗口是64240。该部分占16个BIT。
9、CheckSum=92D7(Correct),表示校验和是92D7。该部分占16个BIT,用十六进制表示。
10、Urgent Pointer=0,表示紧急指针为0。该部分占16个BIT。
11、Maximum Segment Size=1460,表示最大段大小为1460个字节。
三.UDP数据报结构
16 32bit
Source port Destination port
Length Checksum
Data
Source Port — 16位。源端口是可选字段。当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。如果不使用,设置值为0。
Destination Port — 16位。目标端口在特殊因特网目标地址的情况下具有意义。
Length — 16位。该用户数据报的八位长度,包括协议头和数据。长度最小值为8。
Checksum — 16位。IP 协议头、UDP 协议头和数据位,最后用0填补的信息假协议头总和。如果必要的话,可以由两个八位复合而成。
Data — 包含上层数据信息。
[转载]ASA 8.0 NAT配置总结
(2011-02-14 13:44:07)
转载原文
标签:
转载
分类: 技术文章
原文地址:ASA 8.0 NAT配置总结作者:卓一航
在配置之前必须了解的....
一. PIX 6.3之前的版本,防火墙比较土,只要是穿越防火墙都需要创建转换项,比如:nat;static等等,没有转换项是不能穿越防火墙的。PIX 7.0以后,可以通过关闭nat-control(PIX 7.0以后默认也是关闭的),使得流量不需要任何转换项也能正常的像路由器一样穿越防火墙。当然,如果开启nat-control,规则与6.3之前一样。
二. 在nat-control开启的情况下:
不同security level的端口之间通讯必须有nat rule匹配,否则不通。
same security level的端口之间不需要nat rule,但一旦配置了nat,所有流量都必须匹配nat rule。(需要配置same-security-level permit inter-interface,注意此时相同安全级别端口之间的通讯不受任何限制,包括ACL)
三. 很多人连路由和NAT都未分清楚就开始配置了,到头来就算能ping到,但却不知道什么原理。这是很悲剧的一件事。按着上面的例子,现在我们想R1通过ASA的nat访问R3,要怎么做??注意了是通过NAT访问,而不是把ASA配置为路由器那样。特别强调一点,很多人用模拟器来模拟公网那个路由器,但却在模拟的公网路由器上加一条默认路由指向ASA,这是错误的。虽然那样可以让R1访问R3,但ASA不是用来路由的,是用来承载NAT压力的?废话少说......
实验拓扑:
eg. R1----------inside------ASA-----outside----------R3
192.168.2.2 192.168.2.1 172.16.8.1 172.16.8.10
ASA配置
1. 配置outside接口放行的acl
access-list acl permit ip any any
access-group acl in interface outside
解析: 只配置IP,不配置其他任何设置, R1是可以ping通R3的,不过前提条件是要在ASA的outside接口配置好放行的acl。为什么要配置ACL?不是说ASA已经变成路由器了么?你还要知道ping是双向通信的,但有R1向R3发送icmp request而R3不能向R1发送icmp reply,那样整个通信是不生效的。而ASA内部规定了低安全区域向高安全区域访问必须要配置相应的放行ACL。此时ASA就像路由器一样。
2. 配置nat
nat (inside) 1 0.0.0.0 0.0.0.0
globle (outside) 1 interface
解析:这两句话的意思是把inside区域的所有地址进行映射,映射为outside端口的那个公网IP地址。同时记得不要在outside的路由器上配置一条指向ASA的默认路由。这时在R1上ping 172.16.8.10是通的,说明NAT已经成功匹配,你可以在ASA上用debug icmp trace查看。
3. 配置默认路由
route outside 0.0.0.0 0.0.0.0 172.16.8.10
解析: NAT配置成功不代表R1就可以访问公网的所有地址,如果此时在R3上加一个lo 0接口,ip地址是3.3.3.3。那么R1 ping 3.3.3.3是不通的,为什么不通??因为ASA只告诉了R1通过nat可以到达172.16.8.10这一个地址,而没有告诉R1如何到达其他outside的地址。所以必须要在ASA上配置一条对外默认,route outside 0.0.0.0 0.0.0.0 172.16.8.10。 这样R1的流量可以通过ASA路由出去,回包通过ASA的NAT回来,整个通讯就可以完整地建立起来。R3也永远只知道172.16.8.1这个地址在跟自己通信,而不知道inside区域的R1地址。
感觉自己说得很白了...............
展开阅读全文