DNAT(Destination Network Address Translation,目的地址转换) 通常被叫做目的映谢。而SNAT(Source Network Address Translation,源地址转换)通常被叫做源映谢。

这是我们在设置Linux网关或者防火墙时经常要用来的两种方式。以前对这两个都解释得不太清楚,现在我在这里解释一下。首先,我们要了解一下IP包的结构,如下图所示:

在任何一个IP数据包中,都会有Source IP Address与Destination IP Address这两个字段,数据包所经过的路由器也是根据这两个字段是判定数据包是由什么地方发过来的,它要将数据包发到什么地方去。而iptables的DNAT与SNAT就是根据这个原理,对Source IP Address与Destination IP Address进行修改。然后,我们再看看数据包在iptables中要经过的链(chain):

图中正菱形的区域是对数据包进行判定转发的地方。在这里,系统会根据IP数据包中的destination ip address中的IP地址对数据包进行分发。如果destination ip adress是本机地址,数据将会被转交给INPUT链。如果不是本机地址,则交给FORWARD链检测。

这也就是说,我们要做的DNAT要在进入这个菱形转发区域之前,也就是在PREROUTING链中做,比如我们要把访问202.103.96.112的访问转发到192.168.0.112上:

iptables -t nat -A PREROUTING -d 202.103.96.112 -j DNAT --to-destination 192.168.0.112

这个转换过程当中,其实就是将已经达到这台Linux网关(防火墙)上的数据包上的destination ip address从202.103.96.112修改为192.168.0.112然后交给系统路由进行转发。

而SNAT自然是要在数据包流出这台机器之前的最后一个链也就是POSTROUTING链来进行操作

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 58.20.51.66

这个语句就是告诉系统把即将要流出本机的数据的source ip address修改成为58.20.51.66。这样,数据包在达到目的机器以后,目的机器会将包返回到58.20.51.66也就是本机。如果不做这个操作,那么你的数据包在传递的过程中,reply的包肯定会丢失。

假如当前系统用的是ADSL/3G/4G动态拨号方式,那么每次拨号,出口IP都会改变,SNAT就会有局限性。

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

重点在那个『 MASQUERADE 』!这个设定值就是『IP伪装成为封包出去(-o)的那块装置上的IP』!不管现在eth0的出口获得了怎样的动态ip,MASQUERADE会自动读取eth0现在的ip地址然后做SNAT出去,这样就实现了很好的动态SNAT地址转换。

iptables限制syn速度

原理,每5s内tcp三次握手大于20次的属于不正常访问。

  1. iptables -A INPUT -s ! 192.168.0.0/255.255.255.0 -d 192.168.0.101 -p tcp -m tcp --dport 80 -m state --state NEW -m recent --set --name httpuser --rsource
  2. iptables -A INPUT -m recent --update --seconds 5 --hitcount 20 --name httpuser --rsource -j DROP

其中192.168.0.0/255.255.255.0 为不受限制的网段, 192.168.0.101  为本机IP。
该iptables策略,可有效预防syn攻击,也可以有效防止机器人发垃圾帖。

转载于:https://my.oschina.net/u/3992081/blog/2878430

iptables中DNAT、SNAT和MASQUERADE的理解及限速syn相关推荐

  1. iptables中DNAT、SNAT和MASQUERADE的理解

    IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT SNAT是source network address translation的缩写,即源地址目标 ...

  2. iptables中的snat与dnat配置技术文档

    文章目录 一.SNAT实验: 二.DNAT实验 首先需要弄清楚snat与dnat的区别: 从定义来讲它们一个是源地址转换(snat),一个是目的地址转换(dnat).都是地址转换的功能,将私有地址转换 ...

  3. iptables中SNAT, DNAT, MASQUERADE

    文章出处:http://server.zdnet.com.cn/server/2008/0317/772069.shtml iptables中可以灵活的做各种网络地址转换(NAT) 网络地址转换主要有 ...

  4. iptables 防火墙中的SNAT和DNAT

    目录 前言 一.SNAT策略 1.1 SNAT应用环境 1.2 SNAT原理 1.3 SNAT转换前提条件 1.4 SNAT转换流程 1.4 SNAT 应用 1.4.1 临时打开 1.4.2 永久打开 ...

  5. Linux系统的iptables防火墙、SNAT、DNAT原理与设置规则

    Linux的iptables防火墙.SNAT.DNAT 一.iptables概述 1.netfilter/iptables关系 2.四表五链 四表 五链 规则表之间的优先顺序 规则链之间的匹配顺序 二 ...

  6. NAT转换技术(SNAT、MASQUERADE、DNAT策略)及代理服务(squid服务)

    NAT地址转换技术 一.NAT网络拓扑图 二.实验环境 本次实验均是在 RHEL6.5 虚拟机上进行的. WEB-内网(Client)IP地址:192.168.10.150 (VMnet1) 网关   ...

  7. iptables防火墙之SNAT、DNAT策略及应用

    目录 一.SNAT原理及应用 1.1 SNAT应用环境 1.2 SNAT原理 1.3 SNAT转换前提条件 1.4 实现方法 1.4.1 编写SNAT转换规则 1.4.2 路由转发开启方式 SNAT转 ...

  8. iptables防火墙之SNAT与DNAT

    目录 一.SNAT策略及应用 1.1 SNAT策略概述 1.1.1 SNAT 应用环境 1.1.2 SNAT 原理 1.1.3 SNAT 转换前提条件 1.2 开启SNAT的命令 1.2.1 临时打开 ...

  9. iptables的基础知识-iptables中的状态检测

    2019独角兽企业重金招聘Python工程师标准>>> iptables的基础知识-iptables中的状态检测:iptabels被认为是Linux中实现包过滤功能的第四代应用程序. ...

  10. Java中关于进程和线程的理解

    进程:进程是操作系统的基础结构,是一次程序的执行,是一个程序及其数据在处理机上顺序执行所发生的的活动,是程序在数据集合上运行的过程,它是操作系统进行资源调度和分配的一个  独            立 ...

最新文章

  1. 习题1.8 二分查找 (20 分)
  2. C指针原理(22)-C指针基础-att汇编-快速排序
  3. Sharepoint 2010新体验之一-----基于Claims的全新验证机制
  4. Java加密解密快速入门上篇【包括MD5、BASE64、DES、RSA等算法】
  5. 为什么我喜欢单独编程
  6. html在线发布ipa文件在哪里,打包ipa文件
  7. Azure database
  8. 打包的时候不把配置文件加进去_苹果软件打包签名原理
  9. 手推RNN BPTT(back propagation through time)反向传播
  10. confluence 制作流程图_怎么利用软件绘制结构示意图 软件流程图绘制
  11. 清除Mac电脑缓存的方法,非常实用哦
  12. 基于深度强化学习的完全AI自动的俄罗斯方块游戏
  13. 运用三角不等式加速Kmeans聚类算法
  14. 【Java+JSP+MySql】12306购票系统(五)购买车票
  15. 2020算法面经问题汇总
  16. Java使用GZIP进行压缩和解压缩(GZIPOutputStream,GZIPInputStream)
  17. keil 4c语言读写寄存器,【STM32单片机学习】第四课:GPIO控制LED(用寄存器编程)
  18. c++ 实现雷霆战机可视化小游戏
  19. android 彩信,android 彩信接收到附件的下载原理分析
  20. 普林斯顿教授:中国学生的功利心妨碍了他们的长远发展

热门文章

  1. python给图片加边框,照片加边框,照片加描边,图片加描边,批量给图片加描边
  2. 工作缺点和不足及措施_个人工作问题不足20条以及改进措施
  3. (websocket)协议中Ping Pong,Socket通讯ping pong(长连接),心跳包
  4. iphone或者ipad上安装自己打包的ipa文件
  5. linux看门狗定时器例子,看门狗定时器特殊功能寄存器及实例软件设计
  6. 今日金融词汇---股价复权,是什么?
  7. 小程序将页面转为图片--Wxml2Canvas
  8. 常用应用服务器——Tomcat的常用小技巧
  9. Java JNI调用kaldi动态链接库(Linux版本)
  10. 在微型计算机中ega,在微机系统中,常有VGA、EGA等说法,它们的含义是什么