SNAT与DNAT的应用

目录

一、SNAT概述

1.SNAT应用环境——局域网共享上网

2. SNAT工作原理

2.1未作SNAT转换时

2.2进行SNAT转换后

二、配置SNAT策略

1.开启IP路由转发

2.SNAT转换

3.模拟实验

3.1服务端

3.2网关服务器

3.3网关服务器设置iptables规则

 3.4客户端

 3.5实验结果

三、DNAT概述

1.DNAT策略应用环境——外网访问在局域网中的服务器

 2.DNAT工作原理

 四、配置DNAT策略

 1.DNAT转换

2.模拟实验

3.1服务端

 3.2客户端

 3.3网关服务器

3.4配置DNAT策略

3.5实验结果

五、tcpdump抓包

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


一、SNAT概述

SNAT原理:修改数据包的源地址

1.SNAT应用环境——局域网共享上网

将局域网中的IP地址映射到 dns 网关服务器上,将私网IP地址转换成公网IP地址,从而访问位于公网的服务器。

2. SNAT工作原理

2.1未作SNAT转换时

源主机发送数据包给目的主机,目的主机可以收到数据包,但目的主机发送回包时,数据包无法发送给源主机。

2.2进行SNAT转换后

工作原理:

  1. 将从内网发到外网的数据包的源IP由私网IP转换成公网IP
  2. 将从外网服务器响应返回到内网的数据包的目的IP由公网IP转换成私网IP

二、配置SNAT策略

SNAT转换前条件

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

1.开启IP路由转发

临时打开
echo 1 > /proc/sys/net/ipv4/ip_forward  
或
sysctl -w net.ipv4.ip_forward=1

永久打开
vim /etc/sysctl.conf
net.ipv4.ip_forward=1    #将其添加进配置文件

sysctl -p                #读取修改后的配置

2.SNAT转换

转换为固定的公网IP地址:
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j SNAT 
--to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j SNAT 
--to-source 12.0.0.1-12.0.0.10

转换为非固定的公网IP地址(共享动态IP地址):
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j MASQUERADE

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

3.模拟实验

3.1服务端

服务器位于公网,IP地址为12.0.0.100/24。开启http服务。

vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.50

systemctl restart network

yum -y install httpd
#进入http服务的网页目录
cd /var/www/html
#在其中写入一个文件
echo 'hello world!' > test.html
#开启服务
systemctl start httpd

3.2网关服务器

进行SNAT转换,ens33作为私网IP地址,ens35作为公网IP地址。首先,在虚拟机中设置两张网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens35
NAME=ens35
DEVICE=ens35
ONBOOT=yes
IPADDR=12.0.0.50
NETMASK=255.255.255.0

vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.40
NETMASK=255.255.255.0

systemctl restart network

3.3网关服务器设置iptables规则

#安装iptables服务
yum -y install iptables*
#删除iptables规则及nat表中规则
iptables -F && iptables -F -t nat
#查看iptables规则
iptables -nL

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

sysctl -p   

#允许192.168.88.0网段进入网关服务器转发
iptables -t filter -A FORWARD -s 192.168.88.0/24 -j ACCEPT
#指定出站网卡ens35,将192.168.88.0网段IP地址转换为12.0.0.50
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens35 -j SNAT 
--to 12.0.0.50

 3.4客户端

vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.20
NETMASK=255.255.255.0
GATEWAY=192.168.88.40

systemctl restart network

 3.5实验结果

在客户端浏览器登录 http://12.0.0.100/test.html

服务端

cd /var/log/httpd
grep 'test.html' access_log

   

三、DNAT概述

DNAT原理:修改数据包的目的地址

1.DNAT策略应用环境——外网访问在局域网中的服务器

 2.DNAT工作原理

工作原理:

  1. 将外网发来的数据包的目的地址由公网IP或端口转换成私网IP或端口;网关服务器将私网IP转发给内网服务器
  2. 将内网服务器发来的应答响应数据包的源地址由私网IP或端口转换成公网IP或端口

 四、配置DNAT策略

DNAT转换前提条件:

  • 局域网的服务器能够访问Internet
  • 网关的外网地址有正确的DNS解析记录
  • Linux网关开启IP路由转发

 1.DNAT转换

发布内网的web服务
把从ens35进来的要访问web服务的数据包目的地址转换为 192.168.88.40
iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.50 -p tcp --dport 80 
-j DNAT --to 192.168.88.40
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.50 -p tcp --dport 80 
-j DNAT --to-destination 192.168.88.40

发布时修改目标端口
发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 
-j DNAT --to 192.168.80.10:22

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

小知识扩展:

  • 主机型防火墙 主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口
  • 网络型防火墙 主要使用 FORWARD 链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可
     

2.模拟实验

3.1服务端

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.30
NETMASK=255.255.255.0
GATEWAY=192.168.88.2

systemctl restart network

yum -y install httpd
#进入http服务的网页目录
cd /var/www/html
#在其中写入一个文件
echo 'hello world!' > test.html
#开启服务
systemctl start httpd

 3.2客户端

vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.200
NETMASK=255.255.255.0
GATEWAY=12.0.0.2

systemctl restart network

 3.3网关服务器

vim /etc/sysconfig/network-scripts/ifcfg-ens35
NAME=ens35
DEVICE=ens35
ONBOOT=yes
IPADDR=12.0.0.2
NETMASK=255.255.255.0

vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.2
NETMASK=255.255.255.0

systemctl restart network

3.4配置DNAT策略

#外网主机访问发送数据包允许通过
iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.2 -p tcp --dport 8080 
-j DNAT --to 192.168.88.30:80

#服务器的回包发送给访问主机
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens35 -j SNAT 
--to 12.0.0.2

3.5实验结果

客户端访问服务器

五、tcpdump抓包

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

-i ens33:只抓经过接口ens33的包
-t:不显示时间戳
-s 0:抓取完整数据包,否则默认抓取长度为68字节
-c 100:只抓取100个包
dst port !22 :不抓取目标端口是22的数据包
src net:数据包的源地址
-w:保存为cap文件,方便wireshark分析

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

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


将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfig/iptables

停止iptables服务会清空掉所有表的规则
systemctl stop iptables						

启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则
systemctl start iptables					

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值