问题

  iptablessnat和MASQUERADE的区别

  解决方案

  iptables中可以灵活的做各种网络地址转换(NAT)

  网络地址转换主要有两种:snatDNAT

  snat是source network address translation的缩写

  即源地址目标转换

  比如,多个PC机使用ADSL路由器共享上网

  每个PC机都配置了内网IP

  PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip

  当外部网络的服务器比如网站web服务器接到访问请求的时候

  他的日志记录下来的是路由器的ip地址,而不是PC机的内网ip

  这是因为,这个服务器收到的数据包的报头里边的“源地址”,已经被替换了

  所以叫做snat,基于源地址的地址转换

  DNAT是destination network address translation的缩写

  即目标网络地址转换

  典型的应用是,有个web服务器放在内网配置内网ip,前端有个防火墙配置公网ip

  互联网上的访问者使用公网ip来访问这个网站

  当访问的时候,客户端发出一个数据包

  这个数据包的报头里边,目标地址写的是防火墙的公网ip

  防火墙会把这个数据包的报头改写一次,将目标地址改写成web服务器的内网ip

  然后再把这个数据包发送到内网的web服务器

  这样,数据包就穿透了防火墙,并从公网ip变成了一个对内网地址的访问了

  即DNAT,基于目标的网络地址转换

  MASQUERADE,地址伪装,在iptables中有着和snat相近的效果,但也有一些区别

  但使用snat的时候,出口ip的地址范围可以是一个,也可以是多个,例如:

  如下命令表示把所有10.8.0.0网段的数据包snat成192.168.5.3的ip然后发出去

  iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j snat --to-source 192.168.5.3

  如下命令表示把所有10.8.0.0网段的数据包snat成192.168.5.3/192.168.5.4/192.168.5.5等几个ip然后发出去

  iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j snat --to-source 192.168.5.3-192.168.5.5

  这就是snat的使用方法,即可以NAT成一个地址,也可以NAT成多个地址

  但是,对于snat,不管是几个地址,必须明确的指定要snat的ip

  假如当前系统用的是ADSL动态拨号方式,那么每次拨号,出口ip192.168.5.3都会改变

  而且改变的幅度很大,不一定是192.168.5.3到192.168.5.5范围内的地址

  这个时候如果按照现在的方式来配置iptables就会出现问题了

  因为每次拨号后,服务器地址都会变化,而iptables规则内的ip是不会随着自动变化的

  每次地址变化后都必须手工修改一次iptables,把规则里边的固定ip改成新的ip

  这样是非常不好用的

  MASQUERADE就是针对这种场景而设计的,他的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT

  比如下边的命令:

  iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE

  如此配置的话,不用指定snat的目标ip了

  不管现在eth0的出口获得了怎样的动态ip,MASQUERADE会自动读取eth0现在的ip地址然后做snat出去

  这样就实现了很好的动态snat地址转换

IPtables中SNAT和MASQUERADE的区别的更多相关文章

  1. [转]IPTABLES中SNAT和MASQUERADE的区别

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

  2. Iptables 下 SNAT、DNAT和MASQUERADE三者之间的区别

    Iptables 中可以灵活的做各种网络地址转换(NAT,Network Address Translation) 网络地址转换(NAT)主要有两种:SNAT 和 DNAT,但是也有一种特例 MASQ ...

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

    转:http://blog.csdn.net/yu_xiang/article/details/9212543 DNAT(Destination Network Address Translation ...

  4. iptables 中的SNAT 和MASQUWERADE

    NAT 是 network address translation 的缩写 网络地址转换 网络地址转换主要有两种:SNAT和DNAT,即源地址转换和目标地址转换 SNAT:源地址转换 eg:多台pc机 ...

  5. iptables中实现内外网互访,SNAT和DNAT

    目录 一.SNAT原理与应用 二.DNAT原理与应用 DNAT转换:发布内网web服务 DNAT转换:发布时修改目标端口 三.防火墙规则的备份和还原 四.linux抓包 一.SNAT原理与应用 ① S ...

  6. 详解Linux下iptables中的DNAT与SNAT设置(转)

    详解Linux下iptables中的DNAT与SNAT设置 这篇文章主要介绍了Linux下iptables中的DNAT与SNAT设置,是Linux网络配置中的基础知识,需要的朋友可以参考下   原文连 ...

  7. 10.Linux防火墙iptables之SNAT与DNAT

    Linux防火墙iptables之SNAT与DNAT 目录 Linux防火墙iptables之SNAT与DNAT SNAT策略及应用 SNAT策略概述 SNAT策略典型应用环境 SNAT策略原理 SN ...

  8. SNAT和DNAT的区别

    SNAT: Source Network Address Translation,是修改网络包源ip地址的.DNAT: Destination Network Address Translation, ...

  9. 阿里云ECS linux通过iptables 配置SNAT代理网关,实现局域网上网

    场景说明: 本文将介绍如何通过为VPC中Linux系统的ECS实例配置SNAT,实现无公网ECS通过有EIP的服务器代理访问公网. 步骤: 1.使用SSH的方法登陆一个已经绑定EIP外网的ECS实例. ...

随机推荐

  1. 集合之六:Map接口

    Map接口概述 Map接口中的集合和Collection接口中的集合在存储数据的格式上有很大的不同,Map接口下的内容是以<K , V> ,键值对的形式存储的,我们查询API,Map接口的 ...

  2. 【Alpha】任务分解与分配

    Alpha阶段总体任务规划 Alpha阶段我们的任务主要是恢复原先项目的代码运行,并增加一部分物理实验(二)的内容以及完善之前项目未完成的功能,例如后台管理及用户管理界面.在恢复项目部分的主要工作是将 ...

  3. Openerp 添加修改报表

    Report Designer 模块在生成新报表的时候是有BUG的不建议直接使用,不过我们也可以通过该插件再写简单的代码来实现新添加报表,插件安装成功后我们可以按照下列方法来添加报表 OpenERP ...

  4. WCF系列教程之WCF客户端调用服务

    1.创建WCF客户端应用程序需要执行下列步骤 (1).获取服务终结点的服务协定.绑定以及地址信息 (2).使用该信息创建WCF客户端 (3).调用操作 (4).关闭WCF客户端对象 二.操作实例 1. ...

  5. java io 处理流,BufferdInputStream、BufferedWriter、BufferedReader

    BufferdInputStream:读取helloworld.java helloworld.java: package io; public class HelloWorld { public s ...

  6. hibernate配置hbm2ddl.auto的四个参数

    <!-- Drop and re-create the database schema on startup --> <!-- hbm(hibernatemapping) ,ddl( ...

  7. IDEA里如何多种方式打jar包,然后上传到集群

    关于IDEA里如何多种方式打jar包,然后上传到集群的问题? 前期准备,就是在,IDEA里,maven来创建项目.这里不多赘述. 1)用maven项目来打包,我推荐这个. (强烈推荐,简单又快速) S ...

  8. springboot-21-maven多环境打包

    前几天项目需要用到分环境打包, 于是研究了下, 由于项目基于springboot的, 所以分两个情况进行说明: 1), springboot的多环境配置 2), maven-springboot的多环 ...

  9. InnoDB的B+树索引使用

    何时使用索引 并不是在所有的查询条件下出现的列都需要添加索引.对于什么时候添加B+树索引,我的经验是访问表中很少一部分行时,使用B+树索引才有意义.对于性别字段.地区字段.类型字段,它们可取值的范围很 ...

  10. Spring AMQP

    Spring AMQP 是基于 Spring 框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的 POJO的消息监听等,很大方便我们使用RabbitMQ程序的相关开发. ...