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,DNAT,MASQUERADE都是NAT,MASQUERADE是SNAT的一个特例。
SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机。

MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE。

DNAT,就是指数据包从网卡发送出去的时候,修改数据包中的目的IP,表现为如果你想访问A,可是因为网关做了DNAT,把所有访问A的数据包的目的IP全部修改为B,那么,你实际上访问的是B。

因为,路由是按照目的地址来选择的,因此,DNAT是在PREROUTING链上来进行的,而SNAT是在数据包发送出去的时候才进行,因此是在POSTROUTING链上进行的

但使用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地址转换

注:
对于MASQUERADE,只是计算机的负荷稍微多一点。因为对每个匹配的包,MASQUERADE都要查找可用的IP地址,而不象SNAT用的IP地址是配置好的。当然,这也有好处,就是我们可以使用通过PPP、 PPPOE、SLIP等拨号得到的地址,这些地址可是由ISP的DHCP随机分配的。

NAT MASQUERADE相关推荐

  1. iptables实现NAT

    1.1 什么是NAT 在传统的标准的TCP/IP通信过程中,所有的路由器仅仅是充当一个中间人的角色,也就是通常所说的存储转发,路由器并不会对转发的数据包进行修改, 更为确切的说,除了将源MAC地址换成 ...

  2. Linux的NAT如何处理ICMP这类带外信息

    清远鸡,不好吃.         关于Linux的nf_conntrack的详细细节,我不再赘述,由于我之前写的文章几乎没有编排目录,我也只能通过谷歌baidu搜索几篇相关列如下,以后我也会注意自己文 ...

  3. linux nat 博客,linux NAT的划分

    1. NAT 的划分 RFC3489 中将 NAT 的实现分为四大类: 1. Full Cone NAT 完全锥形 NAT 2. Restricted Cone NAT 限制锥形 NAT (可以理解为 ...

  4. 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务

    使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务 一.基于于NAT的LVS的安装与配置. 1. 硬件需求和网络拓扑                       ...

  5. SNAT和DNAT的区别

    文章出处:http://sxj007.blog.51cto.com/521729/110924 SNAT, DNAT, MASQUERADE都是NAT MASQUERADE是SNAT的一个特例 SNA ...

  6. linux centos7开启IP转发、路由转发解决docker 端口映射 及外部无法访问问题

    1.临时开启,(写入内存,在内存中开启)echo "1" > /proc/sys/net/ipv4/ip_forward2.永久开启,(写入内核)在 vim /etc/sys ...

  7. iptables的应用

    摘要:本文介绍linux2.4.x内核中的防火墙工具--iptables的原理与配置,同时还给出了实际运用的例子,在文章的最后归纳了iptables与ipchains的区别. 一. 概述 从1.1内核 ...

  8. linux l7filter命令行,iptables--L7-filter实现高级管理

    l7-filter是一个定义在应用层上的来过滤数据包的.它可以按照不同的应用进行过滤,比如过滤聊天工具QQ.MSN.eDonkey等应用. 接下来讲述l7-filter的编译安装和使用: 1.准备工作 ...

  9. Openwrt修改防火墙规则

    本文翻译自 OpenWrt WIKI 目录 防火墙配置 /etc/config/firewall 管理 WebUI CLI 配置部分 Defaults Includes Redirects Zones ...

  10. linux l7filter命令行,centos 6 上安装l7 filter尝试过滤xunlei

    平台:Centos 6 x86_64,默认内核版本2.6.34 1,准备 yum update -y yum install -y ncurses-devel gcc make bc wget pat ...

最新文章

  1. Java项目:银行管理系统+文档Java基础Gui(java+Gui)
  2. response的content-type以及详细列表
  3. 疯了吧!面试官 5 连问一个 TCP 连接可以发多少个 HTTP 请求?
  4. layout布局_Android ConstraintLayout 降低布局层次,布局优化首选
  5. css3蒙版运动,纯CSS3制作逼真的汽车运动动画
  6. Vasya and Multisets CodeForces - 1051C 模拟|分类讨论
  7. 论文浅尝 | XQA:一个跨语言开放域问答数据集
  8. bzoj1237 [SCOI2008]配对 贪心结论+插数dp
  9. 洛谷P1141 01迷宫
  10. 每日一题[LeetCode 689]三个无重叠子数组的最大和
  11. Qt中QScrollArea控件区域与滑动条的颜色不一致设置
  12. 开箱即用的SSH攻击字典收集工具
  13. GPS开发、定位修改
  14. [OCCT] OCC官方示例介绍
  15. 红外编解码模块YS-NEC使用
  16. python:爬dfcf笔记
  17. ThinkPHP 模板变量输出
  18. 青岛科技大学和青岛大学计算机专业,青岛科技大学和青岛大学哪个好呢?优势的专业分别是什么?...
  19. javaFX实现登录界面并跳转
  20. 二叉排序树、平衡二叉树、红黑树、B树、B+树

热门文章

  1. 小米airdots老是滴滴响_小米 MIUI 11 体验:更好看、更好用,还能一键屏蔽所有广告...
  2. js如何删除数组第一个和最后一个元素
  3. linux虚拟内存设置为多少合适,虚拟内存怎么设置最好_虚拟内存设置多少合适
  4. iOS活体人脸识别的Demo和一些思路
  5. thinkphp 2.x 任意代码执行
  6. 免费无损高品质音乐下载器V3.5
  7. 坦然面对:应对前端疲劳
  8. 交换技术三种重要的交换
  9. 从气电到光伏 新加坡如何走好清洁能源之路?
  10. 虚拟机共享服务器设置,虚拟机共享网络设置教程