iptables 防火墙中的SNAT和DNAT

目录

前言

一、SNAT策略

1.1 SNAT应用环境

1.2 SNAT原理

1.3 SNAT转换前提条件

1.4 SNAT转换流程

1.4 SNAT 应用

1.4.1 临时打开

1.4.2 永久打开

1.4.3 SNAT转换方法

 二、DNAT 策略

 2.1  应用场景

2.2 DNAT的原理

2.3  DNAT转换前提条件

2.4  DNAT 转换流程

​编辑2.5 DNAT  应用 

2.5.1  Linux网关开启IP路由转发

2.5.2  DNAT转换1:发布内网的Web服务

2.5.3 DNAT转换2:发布时修改目标端口

 三、  防火墙规则的备份和还原

四、抓包

五、总结


前言

通过上一章的学习,我们认识了防火墙的表、链结构,并学会了简单的编写防火墙的规则。Linux 防火墙在很多的时候承担着连接企业内、外网的重任,除了提供数据包过滤以外,还提供一些基本的网关应用。下面我们将了解防火墙中的SNAT 和DNAT策略。

一、SNAT策略

1.1 SNAT应用环境

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

1.2 SNAT原理

源地址转换(Source Network Address Translation),根据指定的条件修改数据包的源IP地址,通常被叫做源映射。

客户端往网关服务器发数据包,通过网关服务器不进行转发,发送至需要访问的服务器,访问后,数据包回来的时候还是私网IP,原来的源IP作为目的IP进行传送,私网IP作为目的地址在互联网中会被丢弃,所以我们需要将IP进行转换,这样就能以公网IP的身份返回

1.3 SNAT转换前提条件

1. 局域网各主机已正确设置IP地址、子网掩码、默认网关地址

2. Linux网关开启IP路由转发

1.4 SNAT转换流程

iptables 防火墙中的SNAT和DNAT_第1张图片

注:SNAT的转换流程是从私网到公网,源IP地址改变,目标IP地址不变。 

1.4 SNAT 应用

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

1.4.1 临时打开

echo 1 > /proc/sys/net/ipv4/ip_forward

sysctl -w net.ipv4.ip_forward=1

iptables 防火墙中的SNAT和DNAT_第2张图片

1.4.2 永久打开

 vim /etc/sysctl.conf

net.ipv4.ip_forward  =  1    #将此行写入配置文件  (注意要有空格)
sysctl -p       #读取修改后的配置

iptables 防火墙中的SNAT和DNAT_第3张图片

1.4.3 SNAT转换方法

SNAT转换1:     固定的公网IP地址:
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to 12.0.0.1

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to-source 12.0.0.1-12.0.0.10

SNAT转换2:      非固定的公网IP地址(共享动态IP地址):
iptables -t nat -A POSTROUTING -s 192. 168.80.0/24 -o ens36 -j MASQUERADE

扩展: 一个IP地址做SNAT转换,一般可以让内网100到200台主机实现上网。

案例:

网关服务器内网网卡(VMnet1)    192.168.100.100

网关服务器外网网卡  (VMnet2)   10.0.0.2

Linux Web服务器  (VMnet2) 10.0.0.12

局域网(windows)(VMnet1)   192.168.100.120

iptables 防火墙中的SNAT和DNAT_第4张图片

1. 修改网关服务器的网卡

iptables 防火墙中的SNAT和DNAT_第5张图片

 修改内网网卡

iptables 防火墙中的SNAT和DNAT_第6张图片

 修改外网网卡

iptables 防火墙中的SNAT和DNAT_第7张图片

重启网卡,查看是否设置成功

iptables 防火墙中的SNAT和DNAT_第8张图片

2. 修改web服务器的网卡

iptables 防火墙中的SNAT和DNAT_第9张图片

iptables 防火墙中的SNAT和DNAT_第10张图片

修改web服务器的网络配饰器,设置为主机模式

iptables 防火墙中的SNAT和DNAT_第11张图片

3.修改局域网的网卡

iptables 防火墙中的SNAT和DNAT_第12张图片

iptables 防火墙中的SNAT和DNAT_第13张图片

 4.在web服务器安装httpd服务

iptables 防火墙中的SNAT和DNAT_第14张图片

iptables 防火墙中的SNAT和DNAT_第15张图片

关闭防火墙,并查看它的状态

iptables 防火墙中的SNAT和DNAT_第16张图片

 5. 网关服务器,清空nat规则,设置SNAT

iptables 防火墙中的SNAT和DNAT_第17张图片

6.  在windows上面验证

iptables 防火墙中的SNAT和DNAT_第18张图片

 在 Linux Web服务器 查看登录日志

iptables 防火墙中的SNAT和DNAT_第19张图片

 二、DNAT 策略

 2.1  应用场景

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

2.2 DNAT的原理

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

2.3  DNAT转换前提条件

局域网的web服务器能够访问Internet

网关的外网IP地址有正确的DNS解析记录

Linux网关支持IP路由转换

2.4  DNAT 转换流程

iptables 防火墙中的SNAT和DNAT_第20张图片2.5 DNAT  应用 

2.5.1  Linux网关开启IP路由转发

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -P

iptables 防火墙中的SNAT和DNAT_第21张图片

2.5.2  DNAT转换1:发布内网的Web服务

把从ens37进来的要访问web服务的数据包目的地址转换为192.168.100.100
iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.2 -p tcp --dport 80 -j DNAT --to 192.168.100.100

iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.2 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.100                                                                          ##80 是端口,

 - i:入站外网网卡 
10.0.0.2: 外网IP
192.168.100.100: 内网服务器IP

回包:

iptables -t nat -A POSTROUTING -s 192.168.100.100 -o ens33 -j SNAT --to 10.0.0.2

2.5.3 DNAT转换2:发布时修改目标端口

发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.12 -p tcp --dport 250 -j DNAT --to 192.168.100.100:22

在外网环境中使用SSH测试
ssh -p 250 [email protected]

yum -y install net-tools    #####若没有ifconfig 命令可提前使用yum 进行安装
ifconfig ens33

注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

案例:

网关服务器内网网卡(VMnet1)    192.168.100.100

网关服务器外网网卡  (VMnet2)   10.0.0.2

Linux Web服务器  (VMnet1) 192.168.100.120

客户端(windows)(VMnet12)   10.0.0.12

1. 修改网关服务器双网卡

iptables 防火墙中的SNAT和DNAT_第22张图片

iptables 防火墙中的SNAT和DNAT_第23张图片

iptables 防火墙中的SNAT和DNAT_第24张图片

iptables 防火墙中的SNAT和DNAT_第25张图片

2. 修改Linux Web服务器的网卡

iptables 防火墙中的SNAT和DNAT_第26张图片

重启网卡,查看是否修改成功

iptables 防火墙中的SNAT和DNAT_第27张图片

iptables 防火墙中的SNAT和DNAT_第28张图片  安装httpd服务,并开启服务

iptables 防火墙中的SNAT和DNAT_第29张图片

iptables 防火墙中的SNAT和DNAT_第30张图片

 关闭防火墙

iptables 防火墙中的SNAT和DNAT_第31张图片

 3.  修改客户端(windows)的网卡

iptables 防火墙中的SNAT和DNAT_第32张图片

iptables 防火墙中的SNAT和DNAT_第33张图片

 4. 在网关服务 器上添加DNAT规则

iptables 防火墙中的SNAT和DNAT_第34张图片5. 在客户端 windows上面验证

iptables 防火墙中的SNAT和DNAT_第35张图片iptables 防火墙中的SNAT和DNAT_第36张图片

 三、  防火墙规则的备份和还原

 导出(备份)所有表的规则
iptables-save > /opt/ipt.txt

iptables 防火墙中的SNAT和DNAT_第37张图片
导入(还原)规则
iptables-restore < /opt/ipt.txt
将iptables规则文件保存在/etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfig/iptables
systemctl stop iptables      停止iptables服务会清空掉所有表的规则
systemctl start iptables     启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则

iptables 防火墙中的SNAT和DNAT_第38张图片

四、抓包

tcpdump tcp -i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

1. tcp: ip icmp arp rarp和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据包的类型
2. -i ens33:只抓经过接口ens33的包
3.  -t:不显示时间戳
4.  -s 0:抓取数据包时默认抓取长度为68字节。加上-s 0后可以抓到完整的数据包
5.  -c 100:只抓取100个数据包
6.  dst port ! 22:不抓取目标端口是22的数据包
7.  src net 192.168.1.0/24:数据包的源网络地址为192.168.1.0/24
8.  -w ./target.cap:保存成cap文件,方住用ethereal (即wireshark)分析

五、总结

PREROUTING: 位于 nat 表,用于修改目的地址(DNAT)(上一节说的是数据包作路由选择前应用此链中的规则 记住!所有的数据包进来的时侯都先由这个链处理)

POSTROUTING:位于 nat 表,用于修改源地址 (SNAT)(上一节说的是对数据包作路由选择后应用此链中的规则,所有的数据包出来的时侯都先由这个链处理)

SNAT(针对客户端)

源地址转换数据包从内网发送至公网时,SNAT会把数据包的源IP由私网IP转换成公网IP。当响应的数据包从公网发送内容时,会把数据包的目的IP由公网IP转为私网IP
DNAT(针对服务器端) 将公网IP映射为局域网内对应的私网IP的服务器

你可能感兴趣的:(服务器,linux,运维)