NAT(Network Address Translation网络地址转换)是一种将私有地址转换成公有地址的方法。咱们常用的192.168.0.0、172.16.0.0都是私有地址网段,在互联网中是保留不适用的,而公网中的地址是有限的(IPv4),不可能保证每一台电脑都有一个ip地址,nat的产生解决了这一问题。以本机拓扑为例,配置nat,将内网所有IP全部转换成预设公网IP(123.123.123.123)内网中的不同网络号均变成不同端口号,因此一个公网IP就可以保证所有主机均可以与相连。
Nat可以选择地址,也可以依靠访问控制列表,本实验中就是nat与访问控制列表结合,如果内网中还有其他网段却不在列表中将不能访问公网。
以下是路由器上的配置
access-list 10 permit 172.16.1.0 0.0.0.255
access-list 10 permit 172.16.2.0 0.0.0.255
access-list 10 permit 192.168.10.0 0.0.0.255
access-list 10 permit 192.168.20.0 0.0.0.255
access-list 10 permit 192.168.30.0 0.0.0.255
access-list 10 permit 192.168.40.0 0.0.0.255
ip nat pool dy 123.123.123.123 123.123.123.123 netmask 255.255.255.0
ip nat inside source list 10 pool dy overload
ip nat translation per-user 0.0.0.0 250
ip nat translation max-entries 250000
只后进入路由器端口分别输入:
在对端口输入ip nat outside
在对内网端口输入 ip nat inside
之后nat功能就完成了。
为了验证nat,我们做如下操作:
首先,在开启nat的路由器上输入命令debug ip nat.
之后,使用内网一台主机ping:
此时可以ping通。
最后观察结果如下:
看到有一组地址转换192.168.10.3—>123.123.123.123:5037说明该条地址转换成了123.123.123.123因为多对一的存在,所以只是用了其中的5037端口。
结果看完后我们应在路由器上输入 no debug ip nat 以关掉显示nat信息,省去不必要的路由器cpu负担。
nat除了地址转化还有其他功能:
上图是nat参数的设置,我们要用的是端口数量。
在路由上输入以下指令可以改变路由器最大nat转化端口数量。
本环境中设定为250000个:ip nat translation max-entries 250000
同理输入ip nat translation per-user可以改规定网段内每个用户连接数,以下我们以所有网段所有用户连接数均为250为例:
ip nat translation per-user 0.0.0.0 250
OSPF功能介绍:
Ospf(Open Shortest Path First开放式最短路径优先)是现在最常用的内部网关协议,功能强大,适应各种规模的网络。虽然本次实验拓扑只有三台设备需要路由,但是用ospf同样具有优势。而且它的可扩展性强,方便以后扩大规模。
下面是R1的配置,做一个简单介绍
router ospf 1 //进入ospf进程1,用于区分同一台设备的多个ospf进程,这个数字是本机有效的,即使其他设备是ospf 20也可以与它互联。
network 172.16.1.0 0.0.0.255 area 0 //宣告网段,输入参与ospf的网段号,反子网掩码,区域号。
network 172.16.2.0 0.0.0.255 area 0
router-id 3.3.3.3 //router-id是用于在自治域内(现在为area0)选举制定路由器和备份路由器。下文DR中会详细说。
yes //这个是锐捷设备独有的,因为router-id不用配置也会默认选一条比较小的ip地址做,锐捷设备中手动改变会有个确认信息。
default-information origin always //这句话是默认将本机的默认路由导入ospf表中传给其他主机。
下面来简单的介绍几个ospf的概念,
一、首先介绍下ospf的优点:
1、OSPF可以说是一个真正无环的路由协议,这点归功于它的算法:链路状态及最短路径树算法。
2、多区域划分,把一个网络划分为多个区域,区域间的路由信息会进行修剪摘要,大大减少传递路由信息的开销,也有效防止大规模网络信息膨胀。
3、OSPF收敛速度快,比rip快很多。
4、hello协议,能快速建立连接、动态协商、更新环境。
5、有多种网络类型,可以根据需求配置开销最小的模式(如非广播型:帧中继,ATM,X.25,点到点,广播型:以太网)
6、安全性,ospf可以对接口的明文及md5 验证。
7、OSPF可以适应上千台设备的大型网络。
二、区域概念
OSPF允许把网络分为多区域,区域间传递只需通过边界路由器(ABR)传递,因此区域内的设备不需要拥有整个网络的路由信息依然可以与全网联通。这样就能合理分配资源,让更好的设备做边界路由器。仅仅这样还不够,ospf还有骨干区域概念,即area 0。ospf规定如没有特殊情况所有区域信息必须通过area0传输。(图1)如果改变area 0与1的位置area2将收不到信息,这是出于方便管理控制角度考虑。
图1
但也不是绝对遵守此项规则,后来又出现了虚连接这个概念,为了增加ospf的可扩展性。即当这个网络已经形成而我们必须新加一个区域,却又不能直接联系area0时,会启用虚通道。虚链接是一个逻辑的隧道(Tunnel),虚链接必须配置在2个ABR之间。图2中在R3和R4上配置虚连接,这样R5就能和全图联系了。
然而这样并不是一个好方法,会增加网络复杂度和排错难度。
三、邻居关系与DR选举
Ospf也是一个非常人性的机制,他会和人类关系一样建立关系网。当一台主机开启ospf以后,他会像组播地址224.0.0.5发送hello包,跟其他设备问好。当其他设备也有ospf将进行回应,然后多次交互,最终建立邻居状态。看似简单,其实找个好邻居还是有条件的首先区域号得一致虽然挨着但不是一个区域的也不能成为邻居,其次有认证的话认证通过,安全角度不能和陌生人说话,hello时间/dead时间一致,这个机制是为了同步,dead时间为如果一段时间收不到对方的hello包就暂定他有问题了传数据就不给他了,如果这段时间的三倍还是收不到,就认定这个邻居死了,然后清了他的信息,如果他复活也只能当做一个新邻居开始建立。建立完全邻接前会有七个状态, 1.Down 2.Attempt 3.Init 4.two-way 5.ExStart 6.Exchange 7.Loading 8.Full为什么是八个?因为full就是完全邻居状态,这里面比较常见的状态是2-way状态。这跟下面即将说的DR/BDR有关。先来看一个比较复杂的图:
图3
图3基本为全互联,普遍一个路由器得跟三到四台路由器连接,这要建立邻居关系再传递信息明显是极度浪费的。Ospf制定了解决方案及路由器选举在这些路由器里选定出一个“小组长”(DR制定路由器),每台路由器把自己的信息传递给组长,再由组长广播给大家,这样大大减少了传输中的控制信息。然而在这个瞬息万变的网络中无法保证组长永远“安康”,什么时候它一当掉,整个网络就瘫痪了?当然不能,为防止此类情况发生,我们还选出了“备用组长”,备用组长享受组长同样待遇(即他也收集其他路由器发送的信息),却不用工作。在DR当掉的几秒内,它就变为DR,保证网络可靠性,而其他路由器需要做的就是再选出个“备用组长”BDR。剩下的设备叫(DR other)这些设备之间的关系停留在2-way,即双方可以传递控制信息但是不传。图4为设计拓扑中邻居关系验证
图4
我们能看出不少信息,比如dead time 均少于40秒,因为在正常连接中,每当收到对方的hello包时,dead时间会变为0然后继续增加。State可以看出关系对面设备的“身份”(DR,BDR,DR other)。Pri即Priority为优先级,默认为1,数值越大优先级越高,越容易成为DR,优先级为0不参与选举。我们还能看到一个新的概念neighbor ID。这个id就是我们刚才留下没讲的router-id值。这个值是为了选举DR而存在的,如果不手动配他会选择本台路由器中最小的环回口地址,如果没有则选择最小的地址。这个数字不能跟其他设备数字重复,否则不能建立邻居,选举DR时,在优先级相同时挑选最大的。图5为路由器上看到的邻居表。
图5
四、路由表
Ospf协议最终目标是路由畅通,所以数据都会体现在路由表之中。
图6是s31的路由表,图中可以看出三层交换机之间vlan连接必须通过路由器,这是我们规定的路由条目分为C、O、O*E2三种。C为直连,O为在OSPF中学到的条目,O*E2称为OSPF外部路由,这个是我们之前的那条指令产生——default-information origin always。
将默认路由定义成ospf外部路由分发给其他主机。
图6
图7为路由器所有的路由条目。因为我们手动修改了cost值,所以vlan 10,30走172.16.1.0网段,vlan 20,40走172.16.2.0网段。与上图有不同的是S*这个条目,这是那条默认路由,即如果为路由表不存在的条目,将包转发给123.123.123.1(发往)。这样,我们的内网不需要学什么路由条目就可以和外界连接了。
图7