静态转换 (Static Translation)
动态转换(Dynamic Translation)
端口多路复用(Port Address Translation)html
NAT地址转换一种假装,确保了地址的安全 如图: PC1第一件事情发出请求,先查询路由表,而后才会根据NAT表转换成公网地址,去访问外部网。源IP,目的IP,这时候外部的源IP就变成了公网地址。 PC2第一件事情给出回应,先查询NAT转换表,再查询路由表发送数据包。 回应时两个接口若是先查询路由表,就无法去找到,一个接口是1.0一个是125.0 内部: 源IP:内部局部地址 目的IP:外部局部地址 外部: 源IP:内部全局地址 目的IP:外部全局地址
简单转换条目根据IP 扩辗转换条目根据IP 和 端口
1:本身主机的地址10.1.1.1 2.根据NAT转换表,须要本身手动配置,TCP协议,内部用局部IP地址,内部用全局IP地址,外部用全局IP地址 3.目的IP地址 4.访问外部网 5.目的IP地址和源IP地址
PAT是多个私网地址转换成一个公网地址,多了端口,端口能够本身设定
***隧道两端都是固定IP地址,转换地址就变了 有个技术穿越***技术,绕过去
sw1:关闭路由功能,设置速率和全双工 R3:给接口配IP,配置默认路由 f0/0:12.0.0.2/24 f0/1:13.0.0.1/24 R2:给接口配IP,配置默认路由回去,配置静态NAT地址转换,应用于接口 f0/0:12.0.0.1/24 f0/1:192.168.100.1/24 PC1:192.168.100.10/24 PC2:192.168.100.20/24
sw1#conf t sw1(config)#no ip routing //关闭路由功能 sw1(config)#int f1/0 sw1(config-if)#speed 100 //速率100 sw1(config-if)#dup full //全双工模式 sw1(config-if)#ex
R3#conf t R3(config)#int f0/0 R3(config-if)#ip add 12.0.0.2 255.255.255.0 //配置地址 R3(config-if)#no shut //开启地址接口 R3(config-if)#int f0/1 R3(config-if)#ip add 13.0.0.1 255.255.255.0 R3(config-if)#no shut R3(config-if)#do show ip route //查看路由表条目 Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set 12.0.0.0/24 is subnetted, 1 subnets C 12.0.0.0 is directly connected, FastEthernet0/0 13.0.0.0/24 is subnetted, 1 subnets C 13.0.0.0 is directly connected, FastEthernet0/1 R3(config-if)#ex R3(config)#ip route 0.0.0.0 0.0.0.0 12.0.0.1 //配置默认路由 R3(config)#
R2#conf t R2(config)#int f0/0 R2(config-if)#ip add 192.168.100.1 255.255.255.0 //配置地址 R2(config-if)#no shut R2(config-if)#int f0/1 R2(config-if)#ip add 12.0.0.1 255.255.255.0 //配置地址 R2(config-if)#no shut R2(config-if)#ex R2(config)#ip route 0.0.0.0 0.0.0.0 12.0.0.2 R2(config)#
PC1> ip 192.168.100.10 192.168.100.1 Checking for duplicate address... PC1 : 192.168.100.10 255.255.255.0 gateway 192.168.100.1 PC2> ip 192.168.100.20 192.168.100.1 Checking for duplicate address... PC1 : 192.168.100.20 255.255.255.0 gateway 192.168.100.1 PC3> ip 13.0.0.13 13.0.0.1 Checking for duplicate address... PC1 : 13.0.0.13 255.255.255.0 gateway 13.0.0.1
R2#conf t R2(config)#ip nat inside source static 192.168.100.10 12.0.0.10 //设置静态NAT地址内部网转换成外部网 R2(config)#ip nat inside source static 192.168.100.20 12.0.0.20 R2(config)#int f0/0 R2(config-if)#ip nat inside //给F0/0接口设置内部 R2(config-if)#int f0/1 R2(config-if)#ip nat outside //给F0/1接口设置外部 R2(config-if)#end R2#debug ip nat //查看NAT地址转换状态 IP NAT debugging is on
NAT端口映射协议(英语:NAT Port Mapping Protocol,缩写NAT-PMP)是一个能自动建立网络地址转换(NAT)设置和端口映射配置而无需用户介入的网络协议。该协议能自动测定NAT网关的外部IPv4地址,并为应用程序提供与对等端交流通讯的方法。NAT-PMP于2005年由苹果公司推出,为更常见的ISO标准互联网网关设备协议(被许多NAT路由器实现)的一个替代品。该协议由互联网工程任务组(IETF)在RFC 6886中发布。 NAT-PMP使用用户数据报协议(UDP),在5351端口运行。该协议没有内置的身份验证机制,由于转发一个端口一般不容许任何活动,也不能用STUN方法实现。NAT-PMP相比STUN的好处是它不须要STUN服务器,而且NAT-PMP映射有一个已知的过时时间,应用能够避免低效地发送保活数据包。 NAT-PMP是端口控制协议(PCP)的前身。linux
[root@localhost ~]# yum install httpd -y //安装HTTPD服务
[root@localhost ~]# vim /var/www/html/index.html //代站点底下建立文件和内容
<h1>this is web NAT </h1>
~
[root@localhost ~]# systemctl start httpd //开启HTTPD服务
[root@localhost ~]# systemctl stop firewalld.service //关闭防火墙
[root@localhost ~]# setenforce 0 //开启加强功能web
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static //设置静态 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=849aa04e-1874-490f-8cb0-b2fde4b9a6f8 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.100 //IP地址 NETMASK=255.255.255.0 //子网掩码 GATEWAY=192.168.100.1 //网关 [root@localhost ~]# systemctl restart network //重启网络服务 [root@localhost ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.255 inet6 fe80::e3c7:14af:6e4d:7216 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:c9:dd:05 txqueuelen 1000 (Ethernet) RX packets 4309 bytes 4579244 (4.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1123 bytes 96283 (94.0 KiB)
R1#conf t R1(config)#int f0/0 R1(config-if)#ip add 192.168.100.1 255.255.255.0 R1(config-if)#no shut R1(config-if)#int f0/1 R1(config-if)#ip add 12.0.0.1 255.255.255.0 R1(config-if)#no shut
映射什么意思?就是外部网想要访问你的私网地址必需要映射,否则不安全。vim
R1#conf t R1(config)#ip nat inside source static tcp 192.168.100.100 80 12.0.0.100 8080 extendable //内部端口启用NAT,tcp协议,IP地址加端口,映射外部网地址加端口,后面必定要加个扩展extendable on Interface NVI0, changed state to up R1(config)#int f0/0 R1(config-if)#ip nat inside //设置为内部 R1(config-if)#int f0/1 R1(config-if)#ip nat outside //设置为外部 R1(config-if)#end R1#debug ip nat //测试启动端口映射 IP NAT debugging is on
动态NAT是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不肯定的,是随机的,全部被受权访问Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址能够进行转换,以及用哪些合法地址做为外部地址时,就能够进行动态转换。动态转换可使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。能够采用动态转换的方式。安全
sw#conf t sw(config)#no ip routing sw(config)#int f1/0 sw(config-if)#speed 100 sw(config-if)#dup full sw(config-if)#ex
R1#conf t R1(config)#int f0/0 R1(config-if)#ip add 192.168.100.1 255.255.255.0 R1(config-if)#no shut R1(config-if)#int f0/1 R1(config-if)#ip add 12.0.0.1 255.255.255.0 R1(config-if)#no shut R1(config-if)#ex R1(config)#access-list 1 permit 192.168.100.0 0.0.0.255 //定义内部容许的网段,后面要加反码 R1(config)#ip nat pool test 12.0.0.10 12.0.0.100 netmask 255.255.255.0 //定义外部转换的地址段落,地址范围,起始地址和结束地址和子网掩码 R1(config)#ip nat inside source list 1 pool test //引用内部的网段,转换成外部网的地址池 R1(config)#int f0/0 R1(config-if)#ip nat inside //定义内部网 R1(config-if)#int f0/1 R1(config-if)#ip nat outside //定义外部网 R1(config-if)#end R1#debug ip nat //测试启用NAT IP NAT debugging is on
PC1> ip 192.168.100.10 192.168.100.1 Checking for duplicate address... PC1 : 192.168.100.10 255.255.255.0 gateway 192.168.100.1 PC2> ip 192.168.100.20 192.168.100.1 Checking for duplicate address... PC1 : 192.168.100.20 255.255.255.0 gateway 192.168.100.1 PC3> ip 12.0.0.12 12.0.0.1 Checking for duplicate address... PC1 : 12.0.0.12 255.255.255.0 gateway 12.0.0.1
PC1> ping 12.0.0.12 84 bytes from 12.0.0.12 icmp_seq=1 ttl=63 time=20.944 ms 84 bytes from 12.0.0.12 icmp_seq=2 ttl=63 time=18.950 ms 84 bytes from 12.0.0.12 icmp_seq=3 ttl=63 time=15.957 ms 84 bytes from 12.0.0.12 icmp_seq=4 ttl=63 time=22.452 ms 84 bytes from 12.0.0.12 icmp_seq=5 ttl=63 time=19.952 ms *Mar 1 00:19:47.327: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 34108 (34108) R1# *Mar 1 00:19:47.463: NAT*: s=192.168.100.20->12.0.0.11, d=12.0.0.12 [15552] *Mar 1 00:19:47.471: NAT*: s=12.0.0.12, d=12.0.0.11->192.168.100.20 [15552] *Mar 1 00:19:48.351: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 34364 (34364) R1# *Mar 1 00:19:48.487: NAT*: s=192.168.100.20->12.0.0.11, d=12.0.0.12 [15553] *Mar 1 00:19:48.499: NAT*: s=12.0.0.12, d=12.0.0.11->192.168.100.20 [15553] *Mar 1 00:19:49.375: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 34620 (34620) R1# *Mar 1 00:19:49.511: NAT*: s=192.168.100.20->12.0.0.11, d=12.0.0.12 [15554] *Mar 1 00:19:49.519: NAT*: s=12.0.0.12, d=12.0.0.11->192.168.100.20 [15554] *Mar 1 00:19:50.399: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 34876 (34876) R1# *Mar 1 00:19:50.531: NAT*: s=192.168.100.20->12.0.0.11, d=12.0.0.12 [15555] *Mar 1 00:19:50.543: NAT*: s=12.0.0.12, d=12.0.0.11->192.168.100.20 [15555] *Mar 1 00:19:51.423: NAT: expiring 12.0.0.11 (192.168.100.20) icmp 35132 (35132) R1#
Port Address Translation,端口多路复用(端口地址转化),经过改变外出数据包源IP和源端口,并进行端口转换,内网全部主机都可共享一个公用IP访问外网,节约IP。服务器
sw#conf t sw(config)#no ip routing sw(config)#int f1/0 sw(config-if)#speed 100 sw(config-if)#dup full
R1#conf t R1(config)#int f0/0 R1(config-if)#ip add 192.168.100.1 255.255.255.0 R1(config-if)#no shut R1(config-if)#int f0/1 R1(config-if)#ip add 12.0.0.1 255.255.255.0 R1(config-if)#no shut R1(config-if)#ex R1(config)#access-list 1 permit 192.168.100.0 0.0.0.255 //定义内部容许的网段,加反码 R1(config)#ip nat inside source list 1 interface fastEthernet 0/1 overload //直接引用外部接口 ,overlload全部外部网 R1(config)#int f0/0 R1(config-if)#ip nat in //定义内部网 R1(config-if)#int f0/1 R1(config-if)#ip nat out //定义外部网 R1(config-if)#end R1#debug ip nat IP NAT debugging is on //测试启动NAT
PC1> ip 192.168.100.10 192.168.100.1 Checking for duplicate address... PC1 : 192.168.100.10 255.255.255.0 gateway 192.168.100.1 PC2> ip 192.168.100.20 192.168.100.1 Checking for duplicate address... PC1 : 192.168.100.20 255.255.255.0 gateway 192.168.100.1 PC3> ip 12.0.0.12 12.0.0.1 Checking for duplicate address... PC1 : 12.0.0.12 255.255.255.0 gateway 12.0.0.1
PC1> ping 12.0.0.12 -t 12.0.0.12 icmp_seq=1 timeout 84 bytes from 12.0.0.12 icmp_seq=2 ttl=63 time=20.943 ms 84 bytes from 12.0.0.12 icmp_seq=3 ttl=63 time=17.919 ms 84 bytes from 12.0.0.12 icmp_seq=4 ttl=63 time=16.956 ms R1# *Mar 1 00:19:04.779: NAT: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18124] R1# *Mar 1 00:19:06.783: NAT*: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18125] *Mar 1 00:19:06.791: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.10 [18125] R1# *Mar 1 00:19:07.807: NAT*: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18126] *Mar 1 00:19:07.811: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.10 [18126] R1# *Mar 1 00:19:08.823: NAT*: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18127] *Mar 1 00:19:08.831: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.10 [18127] R1# *Mar 1 00:19:09.843: NAT*: s=192.168.100.10->12.0.0.1, d=12.0.0.12 [18128] *Mar 1 00:19:09.847: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.10 [18128] R1# PC2> ping 12.0.0.12 -t 84 bytes from 12.0.0.12 icmp_seq=1 ttl=63 time=29.921 ms 84 bytes from 12.0.0.12 icmp_seq=2 ttl=63 time=16.981 ms 84 bytes from 12.0.0.12 icmp_seq=3 ttl=63 time=15.958 ms 84 bytes from 12.0.0.12 icmp_seq=4 ttl=63 time=23.936 ms R1# *Mar 1 00:20:28.715: NAT*: s=192.168.100.20->12.0.0.1, d=12.0.0.12 [18208] *Mar 1 00:20:28.719: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.20 [18208] R1# *Mar 1 00:20:29.731: NAT*: s=192.168.100.20->12.0.0.1, d=12.0.0.12 [18209] *Mar 1 00:20:29.739: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.20 [18209] R1# *Mar 1 00:20:30.751: NAT*: s=192.168.100.20->12.0.0.1, d=12.0.0.12 [18210] *Mar 1 00:20:30.759: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.20 [18210] R1# *Mar 1 00:20:31.775: NAT*: s=192.168.100.20->12.0.0.1, d=12.0.0.12 [18211] *Mar 1 00:20:31.779: NAT*: s=12.0.0.12, d=12.0.0.1->192.168.100.20 [18211]