数据来源
1、ipv4地址严重不够用了
X.X.X.X X 0-255 A、B、C类可以使用 D组播 E科研
2、IP地址分为公网IP和私网IP
- 公网IP只能在公网上使用
- 私网IP只能在内网中使用
- 公网上不允许出现私有IP地址
- 私网IP可以重复在内网使用
1)私有地址范围
10.0.0.0/8(10开头的)
172.16.0.0/16 - 172.31.0.0/16(172.16开头的一直到172.31开头的)
192.1680.0/16(192.168开头的)
2)公有地址范围
A、B、C三类广播地址中除了私有地址其他的都是公有地址
国际标准组织ISO定义地址分类:五大类(是以IP地址的第一位进行区分的)
- A类:1-126 默认子网掩码: 255.0.0.0
- B类:128-191 默认子网掩码:255.255.0.0
- C类:192-223 默认子网掩码:255.255.255.0
- D类:224-239 组播地址
- E类:240-254 科研使用 (国家用的)
- 127 开头的已经被当做回环地址 比如:127.0.0.1 (本机地址)
- 255 开头的被当做子网掩码
3、NAT主要实现公私有|P地址的转换,一般是路由器或者防火墙上来完成,不建议在三层交换机上配置
4、NAT有3大类
1)静态NAT(1对1映射)
适合部署内网服务器,外网访问内网的服务器
2)动态NAT(淘汰了)
3)PAT(端口地址转换,多对一)
PAT也称为端口复用技术,内网的PC用同一个公网ip访问互联网,互联网回包给内网通过端口号区分具体PC(端口号是路由器随机更改的)
端口号:0-65535
路由器的工作原理 :
数据帧内网到外网:一个帧从内网到达路由器内网端口之后,路由器会判断帧头的目标MAC地址是不是自己,是解封装(拿掉帧头) 然后数据包进入路由器内部开始路由,路由完成之后这个包会被路由到出接口,如果这个接口是外网接口就会检查NAT地址表准备做NAT地址转换,这个转换会对包的源IP进行动态地址转换,然后再发出去。
数据帧外网到内网:一个帧从外网到达路由器的外网端口之后,还是判断目标MAC地址让后解封装,检查NAT地址表,准备对目标IP地址进行地址转换(转换成对应内网地址)转换完成之后路由数据到对应的接口。
注意:无论是内网到外网还是外网到内网最后的地址转换都是在外网的端口上完成的。
5、NAT命令(路由器是先路由数据,发现出接口设置了NAT才会做NAT转换)
1)定义内网端口
int f0/0
ip nat inside
exit
2)定义外网端口
int f0/1
ip nat outside
exit
3)配置PAT(内到外上网使用)
定义内部地址池
acc 1 permit 192.168.0.0 0.0.255.255 # 将 192.168开头的ip地址加入,1号地址池内,一般要加入公司所有员工ip,不然是不会被转换成公网ip那就不能上网
做PAT动态映射
conf t
ip nat inside source list 1 int f0/1 overload # 源ip地址如果在地址池1中,就允许使用f0/1接口上的公网ip地址做替换,然后在做端口转换
4)配置静态端口转换(外到内,一般用来部署内网服务器 )
conf t
ip nat inside source static tcp 192.168.1.3 80 100.1.1.2 80 # 将192.168.1.3的tcp服务的80端口映射到100.1.1.2的80端口上,也就是说如果外网的人访问 100.1.1.2的80端口,就相当于访问192.168.1.3的80端口
5)查看/删除NAT表
sh ip nat translations # 查看 NAT 表
clear ip nat translation # 清空 NAT 表
6、实验
模拟现实中的内外网
1)首先给所有PC、服务器、路由器端口配置IP地址并开启端口
假设:100.1.1.1是公司买的公网IP
配置路由器的命令:
en # 进入特权模式
conf t # 进入全局配置模式
int Fa0/x # 进入需要配置的端口
ip add ip地址 子网掩码(/24就是3个255,255.255.255.0) # 配置IP
no shut # 开启端口
exit # 退到上一级
ip route 0.0.0.0 0.0.0.0 下一跳IP # 配置默认路由
ip route 目标网段 子网掩码 下一跳IP # 配置静态路由
注意:配置完成后,现在的内外网是无法通信的,因为外网的包发个内网的设备,内网的包出不去,因为私有的IP无法在公网中生存
2)配置第一个路由器让内网可以访问外网(俗称:上网)
定义内网端口
en # 进入特权模式
conf t # 进入全局配置模式
int fa0/0 # 进入需要设置的端口
ip nat inside # 将端口定义为内网端口
exit
定义外网端口
int fa0/1 # 进入需要设置的端口
ip nat outside # 将端口定义为外网端口
exit # 退到上一级
定义内部地址池
acc 1 permit any # 将所有的ip地址加入,1号地址池内
exit # 退到上一级
做PAT动态映射
conf t
ip nat inside source list 1 int fa0/1 overload # 源ip地址如果在地址池1中,就允许使用f0/1接口上的公网ip地址做替换,然后在做端口转换
测试:使用内网PC使用命令:ping 目标ip
注意不上网对应的ip记录一会就会消失
注意:现在只是让内网可以上网,但是外网的设备是无法访问内网的服务
3)给内网ip做映射,映射到公司买的公网ip:100.1.1.2 (这个ip不用配到端口上)
配置静态端口转换(外到内,一般用来部署内网服务器 )
conf t
ip nat inside source static tcp 192.168.1.222 80 100.1.1.2 80 # 将192.168.1.222的tcp服务的80端口映射到100.1.1.2的80端口上,也就是说如果外网的人访问 100.1.1.2的80端口,就相当于访问192.168.1.222的80端口
如果需要部署两个或更多内网服务器可以部署在同一公网ip,更改命令的端口号就行如:ip nat inside source static tcp 192.168.1.223 80 100.1.1.2 81 或部署在多个公网ip上,区别:同一个公网IP部署了多个服务器,那除了80端口的服务器,其他服务器访问时需要加端口号如:100.1.1.2:81
然后给ip为192.168.1.222的服务器部署一下网页,测试一下
简单的HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>三角制作</title>
<style>
.box1 {
width: 0;
height: 0;
border-top: 100px solid pink;
border-right: 100px solid red;
border-bottom: 100px solid blue;
border-left: 100px solid green;
}
.box2 {
width: 0;
height: 0;
line-height: 0;
font-size: 0;
/* 透明色 */
border: 50px solid transparent;
border-left-color: pink;
margin: 100px auto;
}
.jido {
position: relative;
width: 120px;
height: 249px;
background-color: pink;
}
.jido span {
position: absolute;
top: -10px;
right: 15px;
width: 0;
height: 0;
/* 为了照顾兼容性 */
line-height: 0;
font-size: 0;
/* 透明色 */
border: 5px solid transparent;
border-bottom-color: red;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
<div class="jido">
<span></span>
</div>
</body>
</html>
将上面的HTML的代码替换掉原来的代码
使用外网的PC,在浏览器输入公司买的公网ip:100.1.1.2 测试访问内网服务器