iptables之SNAT与DNAT

本文详细解读了SNAT(源地址转换)和DNAT(目的地址转换)原理、应用环境、命令配置,通过实例演示了如何配置SNAT实现私网共享公网IP,以及DNAT在互联网发布服务中的作用。还包括防火墙规则备份与还原,以及Linux抓包工具tcpdump的使用。
摘要由CSDN通过智能技术生成

一、SNAT策略及应用

1、SNAT策略概述

1.1 SNAT应用环境

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

1.2 SNAT策略的原理

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

1.3 SNAT转换前提条件

局域网各主机已正确设置IP地址、子网掩码、默认路由发送数据

Linux网关开启IP路由转发

2、开启SNAT命令

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

临时开启

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				#读取修改后的配置

SNAT转换1:固定的公网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转换2:非固定的公网IP地址(共享动态IP地址)

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

3、SNAT案例

实验需求
配置SNAT(源地址转换)能够实现外网客户端机器访问内网区域web服务

服务环境说明
内网客户端:用于访问外网服务器。IP:192.168.100.120

外网服务器:提供httpd服务 IP:10.0.0.12 开启httpd、服务关闭防火墙和selinux

网关服务器:用一台虚拟机开启核心转发功能来模拟,用于实现SNAT功能

VMware的虚拟网络编辑器中Vmnet1模式网段:192.168.100.0,Vmnet3模式网段:12.0.0.0

1、给两台服务器安装httpd以及iptables服务并启动
在这里插入图片描述
2、打开虚拟机,点击虚拟机设置,添加一张网卡ens37,网络适配器改成自定义(VMnet1),网络适配器2改成(VMnet3)
在这里插入图片描述
3、打开虚拟网络编辑器,查看VMnet1和VMnet3的网段。设置ens33的网段为192.168.100.0,ens37的网段为10.0.0.0.
在这里插入图片描述
4、修改两张网卡信息并重启
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、永久开启IP路由转发,开启SNAT
在这里插入图片描述
在这里插入图片描述
6、SNAT转换,固定的公网IP地址
在这里插入图片描述
7、修改主机2的网卡并重启
在这里插入图片描述
在这里插入图片描述
8、修改主机2网络适配器选择VMnet3,选择10.0.0.0网段
在这里插入图片描述
9、修改windows网络设置
在这里插入图片描述
在这里插入图片描述
10、验证结果
在这里插入图片描述

二、DNAT原理与应用

1、DNAT概述

1.1 DNAT 应用环境

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

1.2 DNAT原理

修改数据包的目的地址

1.3 DNAT转换前提条件

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

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

Linux网关开启IP路由转发

2、开启DNAT命令

打开DNAT

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

3、DNAT转换

把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.80.11
 
iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.118
或者
iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.118
 
iptables -t nat -A PREROUTING -i ens37 -p tcp --dport 80 -j DNAT --to 192.168.100.13-192.168.100.20

4、临时修改目标端口

#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.11:22
 
#在外网环境中使用SSH测试
ssh -p 250 root@12.0.0.1
yum -y install net-tools 若没有 ifconfig 命令可提前使用 yum 进行安装
ifconfig ens33
 
注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

5、DNAT案例

1、修改win10网络配置
在这里插入图片描述
在这里插入图片描述
2、修改主机2的网卡并重启
在这里插入图片描述
在这里插入图片描述
3、修改主机2的网络配置
在这里插入图片描述
4、设置DNAT转换
在这里插入图片描述
5、验证结果
在这里插入图片描述

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

1、导出(备份)所有表的规则

#导出(备份)所有表的规则
[root@ly ~]# iptables-save > /opt/iptables.txt
[root@ly ~]# cat /opt/iptables.txt 

在这里插入图片描述

2、导入(还原)规则

iptables-restore < /opt/iptables.txt备份好的文件进行还原
 
将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
 
iptables-save > /etc/sysconfig/iptables
 
systemctl stop iptables停止iptables服务会清空掉所有表的规则
 
systemctl start iptables启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则

四、tcpdump—Linux抓包

tcp∶ ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型

-i ens33 ∶只抓经过接口ens33的包

-t ∶不显示时间戳

-s 0 ∶ 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包

-c 100 ∶只抓取100个数据包

dst port ! 22 ∶不抓取目标端口是22的数据包

src net 192.168.1.0/24 ∶数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机

-w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析

五、总结

本篇内容主要描述了SNAT和DNAT的原理以及实验案例,SNAT是源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射。DNAT是修改数据包的目的地址,通常被叫做目的映射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风雪一更ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值