Linux系统之iptables应用SNAT与DNAT

目录

一、SNAT

1、SNAT的应用环境

2、SNAT的原理

3、SNAT转换前提条件

二、开启SNAT

1、临时打开

2、永久打开

3、SNAT的转换

①固定的公网IP地址

三、SNAT实验

1、实验目的

2、SNAT实验环境准备

3、实验开始

①关闭三台机器的防火墙和selinux

②配置pc3服务端,安装httpd服务修改网卡ip为12.0.0.100/24--网关为12.0.0.254,然后重启网卡

③配置pc1客户端,修改网卡ip为192.168.111/24--网关192.168.170.12,然后重启网卡

④配置pc2网关服务器,首先配置ens33和ens36网卡的ip地址

注意:删除ens36的uuid并且修改name跟device选项的名称

⑤开启pc2网关服务器的路由转发功能,重启网卡

⑥检测pc1 pc2 pc3三台机器之间是否互通(使用虚拟机做实验默认是互通的,是由于处于同一环境中,生产环境内网和外网没有SNAT的情况下是不同的)

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

⑧在pc2中添加防火墙规则使得来源于192.168.170.0/24网段的所有从ens36网卡流出数据的IP全部nat为12.0.0.254.然后再使用pc1去curl服务端实时查看日志。

4、实验结果

四、DNAT

1、DNAT实验目的

2、DNAT实验环境准备

3、实验拓扑

4、实验步骤

①先给三台机器做SNAT,因为做DNAT之后内网的pc1需要通过SNAT给公网的用户返回数据包。

②在内网pc1上安装一个httpd服务并开启,作为内网的业务服务器

③pc2网关服务器上配置DNAT规则

④然后实时查看pc1的/var/log/httpd/access_log日志,使用pc3公网网址直接curlpc1,可以看见日志中的源地址。

⑤实验结果


一、SNAT

1、SNAT的应用环境

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

2、SNAT的原理

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

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

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

3、SNAT转换前提条件

①局域网各个主机已正常设置ip地址,子网掩码,默认网关地址

②Linux网关开启IP路由转发

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

二、开启SNAT

1、临时打开

echo 1 >/proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip forward=1

2、永久打开

vim /etc/ sysctl. conf
net. ipv4.ip_ forward = 1				#将此行写入配置文件
 
sysctl -P			                	#读取修改后的配置

3、SNAT的转换

①固定的公网IP地址
#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为10.0.0.1
 
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1
                                    可换成单独IP   出站外网网卡            外网IP
 
 
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10
                                     内网IP   出站外网网卡                    外网IP或地址池

三、SNAT实验

1、实验目的

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

2、SNAT实验环境准备

①三台服务器:pc1 pc2 pc3

②硬件要求:pc1 和pc3只需要一个网卡,pc2需要两个网卡

③网络模式要求:pc1 为nat模式,pc2中作为pc1网关的网卡为nat模式

④IP地址的要求:pc1为192.168.170.111网关为192.168.170.113,pc2的网关的ens33网卡地址为192.168.170.0/24网关为192.168.170.0 ens36为12.0.0.1/24不需要网关,pc3为12.0.0.100/24网关为12.0.0.1

3、实验开始

①关闭三台机器的防火墙和selinux
三台机器全部执行:
systemctl stop firewalld
setenforce 0

②配置pc3服务端,安装httpd服务修改网卡ip为12.0.0.100/24--网关为12.0.0.254,然后重启网卡

PC3执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254

③配置pc1客户端,修改网卡ip为192.168.111/24--网关192.168.170.12,然后重启网卡
PC1执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=192.168.170.11
NETMASK=255.255.255.0
GATEWAY=192.168.170.12

④配置pc2网关服务器,首先配置ens33和ens36网卡的ip地址
PC2执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=192.168.170.12
NETMASK=255.255.255.0
GATEWAY=192.168.170.12
 
cp /etc/sysconfig/network-script/ifcfg-ens33  /etc/sysconfig/network-script/ifcfg-ens36
#复制ens33配置文件给ens36网卡,新增网卡不会有配置文件
ens36配置文件修改:将UUID此行删除,修改ip和网关
IPADDR=12.0.0.254
NETMASK=255.255.255.0

注意:删除ens36的uuid并且修改name跟device选项的名称

⑤开启pc2网关服务器的路由转发功能,重启网卡

⑥检测pc1 pc2 pc3三台机器之间是否互通(使用虚拟机做实验默认是互通的,是由于处于同一环境中,生产环境内网和外网没有SNAT的情况下是不同的)
⑦在pc1上curl服务端IP,然后在服务端实时查看/var/log/httpd/access_log日志。可查看到源ip为pc1的ip,所以是未经过nat的,生产环境中不可能直接curl通

⑧在pc2中添加防火墙规则使得来源于192.168.170.0/24网段的所有从ens36网卡流出数据的IP全部nat为12.0.0.254.然后再使用pc1去curl服务端实时查看日志。
PC2执行:
iptables -t nat  -A POSTROUTING -s 192.168.30.0/24 -o ens36 -j SNAT --to 12.0.0.254
# -t nat 指定使用nat表
# -A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
# -s 指定源ip
# -o 指定输出网卡为ens36时
# -j 指定跳转到SNAT处理
# --to 指定SNAT nat为12.0.0.254这个地址

4、实验结果

不经过nat的地址为pc1自己的地址,使用虚拟机环境才会出现这种情况,生成环境是不通的。经过nat之后的地址才是公司的公网ip地址,由网关服务器iptables规则SNAT实现。

四、DNAT

1、DNAT实验目的

为了保护公司业务服务器安全,业务服务器在私网中,从公网访问的用户只能通过nat为服务器的私网网关地址才可访问。

2、DNAT实验环境准备

 

①三台服务器:PC1客户端、PC2网关、PC3服务端。

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

③网络模式要求:三台主机都为NAT模式

④IP地址要求:PC1为192.168.170.111/--网关为192.168.170.113、PC2网关的ens33网卡地址为192.168.170.113/24--网关为192.168.170.113、ens36为12.0.0.1/24--不需要网关、PC3为12.0.0.100/24--网关为12.0.0.1

3、实验拓扑

4、实验步骤

①先给三台机器做SNAT,因为做DNAT之后内网的pc1需要通过SNAT给公网的用户返回数据包。
②在内网pc1上安装一个httpd服务并开启,作为内网的业务服务器
③pc2网关服务器上配置DNAT规则
PC2执行:
iptables -t nat  -A PREROUTING -d 12.0.0.1 -i ens36 -p tcp  --dport 80 -j DNAT --to 192.168.170.113
# 从ens36网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.170.113
# -t nat 指定使用nat表
# -A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
# -d 指定目的ip
# -i 指定输出网卡为ens36时
# -p 指定协议为tcp协议
# --dport 指定目的端口为80
# -j 指定跳转到DNAT处理
# --to 指定DNAT nat到192.168.30.12这个地址
④然后实时查看pc1的/var/log/httpd/access_log日志,使用pc3公网网址直接curlpc1,可以看见日志中的源地址。

⑤实验结果

经过DNAT之后的用户访问公网的网关即会跳转到内网的httpd服务中。pc1内网日志会显示访问的源公网IP

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值