iptables防火墙(2)SNAT和DNAT的原理及应用

SNAT

SNAT的应用环境

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

SNAT原理

修改数据包的源地址

SNAT转换前提条件

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

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

有两种打开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                         #读取修改后的配置

SNAT转换

固定的公网IP地址

iptables -t nat -A POSTRORTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
                                   内网IP          出站 外网网卡                     外网IP或地址池

实验操作

在这里插入图片描述

安装httpd服务并开启
在这里插入图片描述
设置不同的网络,服务器centos5使用VMnet1,网关做两个网卡,客户端使用网络VMnet2
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用服务器访问下自己试试,可以访问
在这里插入图片描述

配置网关服务器
在这里插入图片描述
在这里插入图片描述
重启网卡,可以看到配置IP地址有了
在这里插入图片描述

因为网关服务器是centos4,所以服务器的网关需要改成centos4的IP地址
在这里插入图片描述
可以看到网关服务器也可以去访问服务器IP
在这里插入图片描述
配置客户端,设置IP
在这里插入图片描述
可以看到我们可以ping通网关服务器
在这里插入图片描述
我们去访问下服务器,结果访问不了
在这里插入图片描述
我们需要打开IP路由转发
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
做SNAT转换,先查看规则,把规则都干掉
在这里插入图片描述
在这里插入图片描述
进行SNAT转换
在这里插入图片描述
我们再去访问就可以访问了

在这里插入图片描述

非固定的公网IP地址(共享动态IP地址)

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -0 ens33 -j MASQUERADE

.

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

DNAT

DNAT应用环境

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

DNAT原理

修改数据包的目的地址。

DNAT转换前提条件

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

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

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

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

DNAT转换(1)

发布内网的Web服务

#把从ens33进来的要访问web服务的数据包目的地址转换为192. 168.80.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11

iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11
                            入站 外网网卡    外网IP                                             内网服务器IP
                            
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.80.11-192.168.80.20 

DNAT转换(2)

发布时修改目标端口

#发布局域网内部的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使用,才能实现响应数据包的正确返回

实验操作

实现DNAT转换客户端访问服务器
在这里插入图片描述
前面还是一样配置,服务器给VMnet1,客户端给VMnet2,网关配双网卡

第一步还是配置网卡,服务器网关改成网关IP
在这里插入图片描述
修改网关服务器客户端内网网卡和外网网卡
在这里插入图片描述
在这里插入图片描述
开启IP转发功能
在这里插入图片描述
在这里插入图片描述
配置客户端IP
在这里插入图片描述
配置好我们了可以ping通
在这里插入图片描述
但是做DNAT我们需要访问12.0.0.1,但是我们访问不了
在这里插入图片描述
这里我们需要做DNAT转换
在这里插入图片描述
可以看到,我们可以访问了
在这里插入图片描述

小知识扩展

主机型防火墙主要使用INPUTOUTPUT链,设置规则时一般要详细的指定到端口

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

防火墙规则的备份和还原

导出(备份)所有表的规则
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中的规则
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字节。加上-s0后可以抓到完整的数据包

(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)分析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值