NAT简单实验

一、NAT技术简介

        NAT(Network Address Translation,网络地址转换)是一种用于解决公有IP地址不足的网络地址转换技术,顾名思义就是用于实现公有IP和私有IP之间的转换。

        NAT技术有两种模式--SNAT和DNAT,他们分别对应着不同的场景:

                SNAT主要用于允许局域网内的主机通过一个公有IP地址访问互联网。这种场景对应着我们平时上网的情况,就是处于局域网内,通过路由器的SNAT转换将我们在局域网内的私有IP转换为路由器WAN口的公有IP访问互联网。因为我们的IPv4地址是由32位2进制组成,大约有37亿个,是远远不够我们使用的。所以我们引入了NAT技术,解决公有IP不足的情况。

                DNAT主要用于允许通过互联网中的互联网中的公有IP访问,将通过公有IP的访问定向到局域网内的特定主机。这种情况对应着企业服务器的发布,企业的服务器处在局域网内集群分布,为了让互联网中的用户可以得到服务器的服务,且弥补公有IP不足的问题。我们就引入了DNAT技术将我们处在局域网内部的服务器发布到互联网上,通过端口或者其他方式映射到我们指定的服务器上,让用户能够得到指定的服务。

二、模拟实现NAT

        简单的了解了NAT技术,那么它是如何实现的,下面我们进行简单的模拟。

1、实验准备

        VMware虚拟机器两台分别充当路由器(NAT实现)、客户机/服务器进行两组实验(机器分别充当客户机访问互联网<SNAT>和机器充当服务器提供服务<DNAT>的情况)。

        Xshell远程连接虚拟机,方便管理。

2、开始实验

1)SNAT简单模拟

        这里使用到了两台虚拟机分别是client和router

1、网卡类型配置

        将client的网卡类型设置为hostonly确保单独存在时,无法访问互联网。

虚拟机-->设置-->网络适配器

        因为一般的路由器至少都有两个接口分别连接互联网和局域网,而一般虚拟机默认只有一块网卡,所以我们需要给路由器添加一块网卡。

虚拟机-->设置-->添加-->网络适配器-->完成

然后我们将router的网卡类型分别配置为hostonly(连接内网内的机器)和桥接模式(连接互联网)

2、IP地址配置

        先给client配置IP地址,配置IP地址时,需要注意与模式相匹配。因为不同的网卡类型对应着不同的网段,hostonly模式下IP地址对应着真实机器中虚拟出来的VMnet1的网段

在网络适配器中找到VMnet1,双击打开后查看详细信息就可以得到对应的网段。

例如,我这里是192.168.211.0网段配置时候需要注意。

现在开始在虚拟机内配置IP地址

输入vim /etc/sysconfig/network-scripts/ifcfg-ens33,其中ens33是我的网卡名字。如何知道自己的网卡名字可以输入ip a

输入vim /etc/sysconfig/network-scripts/ifcfg-ens33后进入编辑,分别配置网关、子网掩码、IP地址和DNS服务器(顺便将我们的动态分配IP地址关闭:BOOTPROTO=“none”)

其中的网关为我们接下来,router机器的内网口IP地址,保证我们的数据请求可以送到router机器。

配置完IP后保存退出后,输入systemctl restart network刷新网络服务,让刚刚的配置生效。

这时候,再输入ip a查看我们的IP地址是否配置成功

        现在我们给router机器配置IP地址,同样的操作,只是需要注意我们有两个网卡(输入nmcli c可以查看网卡名),我这里显示的两块网卡分别为ens33和ens36

但是我们进入/etc/sysconfig/network-scripts/目录下并没有ifcfg-ens36所以需要复制一份ifcfg-ens33到目录下改名为ifcfg-ens36并修改里面的配置。

其中,ens33不要配置网关和DNS服务器,因为它是router的内网卡。下面是ens33和ens36的配置

这里的ens36使用的是桥接模式,IP地址对应的网段和网关是跟真实机器一样的,所以我们去查看网络适配器查看真实机器的IP地址和网关,双击WLAN(因为我是笔记本电脑用的是无线网卡)

进入后点击详细信息查看IP地址和网关。

别忘了,ens33和ens36配置完成之后也要刷新网络服务。

IP地址配置完成之后,为了方便后面的操作,我这里启用了Xshell远程连接到虚拟机。(当然不使用Xshell,直接在虚拟机里面操作也是一样的)

3、配置SNAT规则

        接下来我们就要对router机器进行操作实现SNAT功能

        为了实验效果的直观和防止防火墙和selinux的干扰,我们先提前关闭防火墙和修改selinux状态。

输入:systemctl stop firewalld关闭防火墙;setenforce 0关闭selinux修改selinux状态为不限制进程访问文件。

        除此之外,我们还需要打开我们的路由转发功能,这样router才能帮助client机转发数据。

输入:echo 1 >/proc/sys/net/ipv4/ip_forward

接下来,配置SNAT规则,我们这里编写一个shell脚本来实现这个功能。

vim snat.sh

脚本内容如下:

这里打码的内容就是我们ens36的IP地址

bash snat.sh运行脚本,之后验证SNAT效果:在client机器上ping www.baidu.com如果能ping通说明SNAT能够正常运转。

2)DNAT简单模拟

        与配置SNAT类似,网卡类型和IP地址、网关、DNS服务器、子网掩码就不用再配置了。其他地方也是一样,唯一需要修改的就是DNAT规则,编写一个dnat.sh脚本,实现dnat功能。

vim dnat.sh内容如下:

除此之外,为了对外提供服务,我们还需要启动相应的进程。这里用httpd展示,输入yum install httpd -y下载安装http服务,输入systemctl start httpd启动http服务。此时,运行dnat.sh脚本后,如果能通过,ens36的IP地址(也就是外网口IP地址)访问到网页,即说明DNAT发布成功,如下所示。

到这里整个实验就已经完成了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值