防火墙 iptables(二)-------------SNAT与DNAT

一、SNAT

①SNAT 应用环境:

局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)

防火墙 iptables(二)-------------SNAT与DNAT_第1张图片

②SNAT原理:

源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射

数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP

当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP

③SNAT转换前提条件

  • 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
  • Linux网关开启IP路由转发

linxu系统本身是没有转发功能 只有路由发送数据

④实验

实验目的:

公司内有2台机器,但是只有一个公网ip,利用SNAT技术实现2台私网地址都可以访问公网。

实验拓朴图:

内网主机通过网关服务器的SNAT转换实现访问外网(公网)

防火墙 iptables(二)-------------SNAT与DNAT_第2张图片

内网部分 源ip是192.168.246.7 目的 ip 12.0.0.100

外网部分 源ip是 12.0.0.1 目的 ip 12.0.0.100

SNAT实验环境准备

三台服务器:PC1(centos7-1)客户端、PC2网关服务器(centos7-2)、PC3服务端(centos7-3)

硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡

实验步骤:

首先关闭三台机器的防火墙和防护
[root@centos1 ~]#systemctl stop firewalld
[root@centos1 ~]#setenforce 0

[root@centos2 ~]#systemctl stop firewalld
[root@centos2 ~]#setenforce 0

[root@centos3 ~]#systemctl stop firewalld
[root@centos3 ~]#setenforce 0
①网关服务器:
第一步:先设置网关服务器的ip地址,两张网卡,ens33设置为内网,ens37设置为外网
先添加网卡

防火墙 iptables(二)-------------SNAT与DNAT_第3张图片

[root@centos2 ~]#cd /etc/sysconfig/network-scripts/
[root@centos2 network-scripts]#ls
ifcfg-ens33  ifdown-ipv6    ifdown-TeamPort  ifup-ippp   ifup-routes       network-functions
ifcfg-lo     ifdown-isdn    ifdown-tunnel    ifup-ipv6   ifup-sit          network-functions-ipv6
ifdown       ifdown-post    ifup             ifup-isdn   ifup-Team
ifdown-bnep  ifdown-ppp     ifup-aliases     ifup-plip   ifup-TeamPort
ifdown-eth   ifdown-routes  ifup-bnep        ifup-plusb  ifup-tunnel
ifdown-ib    ifdown-sit     ifup-eth         ifup-post   ifup-wireless
ifdown-ippp  ifdown-Team    ifup-ib          ifup-ppp    init.ipv6-global
[root@centos2 network-scripts]#cp ifcfg-ens33 ifcfg-ens37
[root@centos2 network-scripts]#vim ifcfg-ens37
[root@centos2 network-scripts]#vim ifcfg-ens37
[root@centos2 network-scripts]#systemctl restart network
[root@centos2 network-scripts]#ip a

防火墙 iptables(二)-------------SNAT与DNAT_第4张图片

防火墙 iptables(二)-------------SNAT与DNAT_第5张图片

防火墙 iptables(二)-------------SNAT与DNAT_第6张图片

防火墙 iptables(二)-------------SNAT与DNAT_第7张图片

第二步:开启路由转发功能

防火墙 iptables(二)-------------SNAT与DNAT_第8张图片

防火墙 iptables(二)-------------SNAT与DNAT_第9张图片

防火墙 iptables(二)-------------SNAT与DNAT_第10张图片

[root@centos2 network-scripts]#sysctl -a|grep ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.ens37.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"
[root@centos2 network-scripts]#vim /etc/sysctl.conf
[root@centos2 network-scripts]#sysctl -p
net.ipv4.ip_forward = 1
[root@centos2 network-scripts]#sysctl -a|grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.ens37.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"
②内网客户端(192.168.246.7)
[root@centos1 ~]#rpm -q httpd
未安装软件包 httpd 
[root@centos1 ~]#yum install httpd -y
第一步:修改内网服务器的网关ip地址,为网关服务器的ip地址
防火墙 iptables(二)-------------SNAT与DNAT_第11张图片
[root@centos1 ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@centos1 ~]#systemctl restart network
防火墙 iptables(二)-------------SNAT与DNAT_第12张图片
第二步:开启本机httpd服务,并写上一个测试网页index.html内容为haha
[root@centos1 ~]#systemctl start httpd
[root@centos1 ~]#echo "haha" > /var/www/html/index.html
[root@centos1 ~]#

③外网服务器:
[root@centos1 ~]#rpm -q httpd
未安装软件包 httpd 
[root@centos1 ~]#yum install httpd -y
第一步:先修改外网服务器的ip地址和网关,都应该是12段的,ip地址是12.0.0.100,网关地址是12.0.0.1
[root@centos3 ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@centos3 ~]#systemctl restart network

防火墙 iptables(二)-------------SNAT与DNAT_第13张图片

防火墙 iptables(二)-------------SNAT与DNAT_第14张图片

会断,由于是不同网段

防火墙 iptables(二)-------------SNAT与DNAT_第15张图片

第二步:开启httpd服务
[root@centos3 ~]#systemctl start httpd
[root@centos3 ~]#echo "nihao" > /var/www/html/index.html
[root@centos3 ~]#tail -f /var/log/httpd/access_log 

防火墙 iptables(二)-------------SNAT与DNAT_第16张图片

检测PC1(centos1)、PC2(centos2)、PC3(centos3)三台机器之间是否互通(使用虚拟机做实验默认是互通的,是由于处在同一环境中,生产环境内网和外网没有SNAT的情况下是不通的)

进入xhell:

再进入虚拟机:

在PC1上curl 服务端ip,然后在服务端实时查看/var/log/httpd/access_log日志。可查看到源ip为PC1的ip,所以是未经过NAT的,生产环境中不可能直接curl通。

④再次进入网关服务器:
前两步骤参照上文
第三步:设置iptables的转换规则
[root@centos2 ~]#iptables -t nat  -A POSTROUTING -s 192.168.246.0/24 -o ens37 -j SNAT --to 12.0.0.1

##表示当内网192.168.246.0网段的主机访问外网的时候,网关服务器会通过SNAT转换源ip地址为网关服务器的公网ip12.0.0.1
方法一:已知公网地址

防火墙 iptables(二)-------------SNAT与DNAT_第17张图片

验证:

在xhell中用内网客户机(192.168.246.7)去访问外网ip地址

再去虚拟机外网服务器查看:centos3

防火墙 iptables(二)-------------SNAT与DNAT_第18张图片

总结

内网主机通过网关服务器的SNAT转换实现访问外网 

不经过nat的地址为PC1(centos1)自己的地址,使用虚拟机环境才会出现这种情况,市场环境是不通的。

经过nat之后的地址是公司的公网ip地址,由网关服务器iptables规则SNAT实现

方法二:未知公网地址

防火墙 iptables(二)-------------SNAT与DNAT_第19张图片

验证:

防火墙 iptables(二)-------------SNAT与DNAT_第20张图片

二、DNAT

①DNAT应用环境:

在Internet中发布位于局域网内的服务器

②DNAT原理:

目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映射。

③DNAT转换前提条件:

DNAT转换前提条件:
1.局域网的服务器能够访问Internet
2.网关的外网地址有正确的DNS解析记录                                                                                           3. Linux网关开启IP路由转发

④实验:

实验拓朴图:

外网主机访问网关服务器地址,通过DNAT实现访问内网服务器

防火墙 iptables(二)-------------SNAT与DNAT_第21张图片

外网访问内网访问12.0.0.1 相当与访问内网地址192.168.246.7

实验步骤:

前边步骤参照SNAT前3步
④再次进入网关服务器:

设置iptables的转换规则

[root@centos2 ~]#iptables -t nat -A PREROUTING -i ens37 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.246.7
[root@centos2 ~]#iptables -t nat  -vnL

防火墙 iptables(二)-------------SNAT与DNAT_第22张图片

进入外网服务器进行直接访问,会被拒绝 , 接下来需要设置防火墙规则(如上图)

防火墙 iptables(二)-------------SNAT与DNAT_第23张图片

防火墙 iptables(二)-------------SNAT与DNAT_第24张图片

进入内网服务器查看验证;

防火墙 iptables(二)-------------SNAT与DNAT_第25张图片

总结

内网主机通过网关服务器的SNAT转换实现访问外网

外网主机访问网关服务器地址,通过DNAT实现访问内网服务器

SNAT  让内网机器,可以访问外网机器(京东,淘宝)

DNAT  将内网服务器,映射在公网地址上,让外网(公网)客户可以访问

你可能感兴趣的:(服务器,网络,linux)