Linux防火墙——iptables之SNAT与DNAT详细讲解

每日分享:
世界会向那些有目标和远见的人让路。



一、SNAT原理与应用

1、应用环境

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

2、原理

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

3、SNAT转换前提:

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

  • Linux网关开启IP路由转发

4、SNAT打开方式

4.1、临时打开

方法一
echo 1 > /proc/sys/net/ipv4/ip_forward
方法二
sysctl -W net.ipv4.ip_forward=1

4.2、永久打开

vim /etc/sysct1.conf
net.ipv4.ip_forward =1   ##将此行写入配置文件
然后保存退出
sysctl -p   ##将取修改后的配置

5、SNAT转换

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

5.1、SNAT转换1:固定的公网IP地址


#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为12.0.0.1
方法一
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 12.0.0.1
方法二
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
                                     内网ip出站       外网网卡                      外网IP或地址池

5.2、SNAT转换2:非固定的公网IP地址(共享动态IP地址)

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

二、DNAT原理与应用

1、应用环境

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

2、原理

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

3、DNAT转换前提条件

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

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

  • Linux网关开启IP路由转发

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
保存退出
sysctl -p

4、DNAT转换

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

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

#把从ens37进来的要访问web服务的数据包目的地址转换为192.168.100.20
方法一
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.20
或                                入站     公网IP                                  内网服务器IP
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.20
                              入站          公网IP                 端口                            内网服务器IP

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

#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens37 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.100.20:22
						入站外网网卡        外网IP           外网远程端口			 内网IP和远程端口号

三、实验

1、实验要求:
两台Linux虚拟机:
一台是网关服务器,内网ens33的IP地址为192.168.100.10(nat1);外网ens36的IP地址为12.0.0.254(nat2)
一台web服务器,IP地址为192.168.100.20(nat1)
一台Windows虚拟机(客户端)(nat2)

2、实验准备:
关闭三台机子的防火墙
在web服务器中安装httpd服务

3、开始实验
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

网关服务器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

web服务器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Windows客户端
在这里插入图片描述
在这里插入图片描述

网关服务器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

web服务器
在这里插入图片描述

Windows客户端
在这里插入图片描述

网关服务器
在这里插入图片描述

Windows客户端
在这里插入图片描述


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

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

iptables-save > /opt/ipt.txt

导入(还原)规则

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中的规则

五、Linux抓包工具——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

(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。Net:网段,host:主机
(8)-w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值