目录
一.NAT
二.SNAT
三.DNAT
一.NAT
NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链
请求报文:修改源/目标IP,
响应报文:修改源/目标IP,根据跟踪机制自动实现
NAT的实现分为下面几种类型:
SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP
DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP
PNAT: port nat,端口和IP都进行修改
二.SNAT
SNAT:基于nat表的target,适用于固定的公网IP
SNAT选项:
to-source ipaddr[-ipaddr]]
random
MASQUERADE:基于nat表的target,适用于动态的公网IP,如:拨号网络
MASQUERADE选项:
to-ports port[-port]
random
(1)SNAT实验目的
公司内有2台机器,但是只有一个公网ip,利用SNAT技术实现2台私网地址都可以访问公网。
(2)SNAT实操环境准备
环境:
centos7-1(内网服务器) IP地址 192.168.47.100
centos7-2(网关服务器) ens33IP地址(nat):192.168.47.3 ens36IP地址(仅主机):12.0.0.1
centos7-3(外网服务器) ens33IP地址(仅主机):12.0.0.12目的:内网服务器能够ping通外网服务器
步骤:
①网关服务器添加网卡
②设置外网服务器的网卡模式
③修改外网服务器的IP地址,并重启network服务
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ifconfig ens33
把ip改成12.0.0.12,子网掩码为255.255.255.0
④修改内网服务器的网关,并重启network服务
[root@zrsb ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@zrsb ~]# systemctl restart network
[root@zrsb ~]# route -n
⑤为网关服务器的外网网卡配置IP地址,并重启network服务
#复制ens33配置文件给ens36网卡,新增网卡不会有配置文件
[root@xzq ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
ens36配置文件修改:将UUID此行删除,修改ip
⑥使用内网服务器ping外网服务器地址,作为SNAT配之前的参照
⑦在网关服务器上配置SNAT
⑨网关服务器开启路由转发功能,编辑/etc/sysctl.conf文件
vim /etc/sysctl.conf
⑨使用内网服务器ping外网服务器,测试连通性
实验结果:
不经过nat的地址为内网服务器的地址,使用虚拟机环境才会出现这种情况,生成环境是不通的。经过nat之后的地址是公司的公网ip地址,由网关服务器iptables规则SNAT实现。
三.DNAT
DNAT原理与应用:
DNAT应用环境:在Internet中发布位于局域网内的服务器
DNAT原理:目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映谢。
DNAT转换前提条件:
1.局域网的服务器能够访问Internet
2.网关的外网地址有正确的DNS解析记录
3. Linux网关开启IP路由转发
DNAT实际操作:
步骤思路:
①首先给三台机器做一个SNAT,原因是做DNAT之后内网服务器(7-1)需要通过SNAT给公网的用户返回数据包。
②在内网服务器(7-1)上安装一个httpd服务并开启,作为内网的业务服务器。
③网关服务器(7-2)上配置DNAT规则。
(1)在内网服务器上搭建httpd服务,并撰写index.html初始网页,然后启动httpd服务
[root@zrsb ~]# vim /var/www/html/index.html
[root@zrsb ~]# systemctl start httpd.service
[root@zrsb ~]# systemctl status httpd.service
(2)在网关服务器上设置DNAT规则
(3)使用外网服务器访问内网的httpd服务