文档章节

IPtables中SNAT和MASQUERADE的区别

完美世界
 完美世界
发布于 2014/06/05 17:14
字数 992
阅读 35
收藏 1
点赞 0
评论 0

IPtables中SNAT和MASQUERADE的区别

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

网络地址转换主要有两种:SNAT和DNAT

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


注:

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


© 著作权归作者所有

共有 人打赏支持
完美世界
粉丝 10
博文 149
码字总数 134011
作品 0
西城
高级程序员
Iptables中SNAT和MASQUERADE的区别

Iptables中可以灵活的做各种网络地址转换(NAT); 网络地址转换主要有两种:SNAT和DNAT. SNAT是source network address translation的缩写即源地址目标转换 比如,多个PC机使用ADSL路由器共享...

水幕青辰
2016/12/21
0
0
iptables中SNAT、DNAT和MASQUERADE的含义

转自 https://blog.csdn.net/jk110333/article/details/8229828 IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT。 SNAT是source networkaddress trans...

知者不言
06/26
0
0
linux防火墙与nat

之前上学那会老师说网络设备的操作系统是基于linux开发的,当时没有概念但是当学习了linux之后体会越发的明显,特别是linux防火墙与网络设备防火墙、nat之间的关系。 在进入设备时做dnat,再...

gaofengqiang
2015/02/05
0
0
iptables 实现简单的网关服务器

首先要打开 IP 转发功能——在 文件中追加或修改一行: 使用如下命令使其立即生效: 假设本机外网 IP 为 100.100.100.100,外网段 0.0.0.0/32,内网 IP 为 192.168.1.1,内网段 192.168.1.0/...

傅易
2016/11/10
46
0
Centos 6.5安装配置KVM

1 egrep --color=auto 'vmx|svm' /proc/cpuinfo 2 yum install kvm qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools virt-viewer 3 modprobe -a kvm kvm_in......

net881004
2017/12/21
0
0
ebtables之BROUTING和PREROUTING的redirect的区别

ebtables和iptables实用工具都使用了Netfilter框架,这是它们一致的一方面,然而对于这两者还真有一些需要联动的地方。很多人不明白ebtales的broute表的redirect和nat表PREROUTING的redirec...

晨曦之光
2012/04/10
2.7K
0
IPtables防火墙配置教程

IPtables防火墙配置教程 防火墙服务器 修改IP三块网卡1.外网IP地址 11.23.0.32.内网IP地址 192.168.2.13.DMZ 192.168.3.1Alt text 安装IPtables软件包[root@server01 ~]# yum install -y ipt...

新网学会
2017/12/13
0
0
linux防火墙iptables常用规则(屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链)

一、iptables:从这里开始 删除现有规则 iptables -F (OR) iptables --flush 设置默认链策略 iptables的filter表中有三种链:INPUT, FORWARD和OUTPUT。默认的链策略是ACCEPT,你可以将它们设...

Linux_woniu
2017/09/14
0
0
iptables命令结构之目标

所有的目标都是内置的,不存在用户定义目标。本节列出了iptables可用的一些目标。 ACCEPT:继续处理分组。 DNAT:DNAT(Destination Network Address Translation,目标网络地址转换),改写...

柳哥
2014/11/27
0
0
Linux系统Iptables规则执行顺序详细讲解

1。The first is the mangle table which is responsible for the alteration of quality of service bits in the TCP header.2。The second table is the filter queue which is responsib......

红薯
2009/05/07
995
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

sklearn学习笔记之简单线性回归

简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项。线性回归的思想其实就是解一组方程,得到...

wangxuwei
6分钟前
0
0
feign之动态interceptor(二)

背景 上文提到了按照不同的feignClient可以根据多个不同的key来进行多个不同的bean的配置 那么我们如何完成多个interceptor的配置呢? 分析 我们刚提到多个配置的玄机就在FeignClientProper...

Mr_Qi
8分钟前
1
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

问题终结者
32分钟前
0
0
Apache配置时.htaccess失效不起作用的原因分析

.htaccess 失效的原因 1. 重写规则有问题,检查自己的重写规则 2.Apache配置问题,配置中没有配置启用 rewrite a2enmod rewrite 3.网站配置文件没有启用配置需要配置 000-default.conf <Dire...

TU-DESGIN
52分钟前
1
0
两个求最大公约数C/C++算法实现

#include<stdio.h> #include<time.h> #include <iostream>using namespace std;//求最大公约数 LCD(Largest Common Division)//短除法 //m=8251, n=6105; int LCD_ShortDiv(int m, ......

失落的艺术
58分钟前
1
0
QueryPerformanceCounter

windows的Sleep函数,睡眠线程指定毫秒数,可以用来做毫秒延时。 对于微秒延时,没有一个现成的函数,但是可以通过 QueryPerformanceFrequency QueryPerformanceCounter 来间接实现。原理就是...

开飞色
今天
1
0
log4j2使用AsyncRoot不显示行号问题处理

<AsyncRoot level="info" includeLocation="true"> <AppenderRef ref="File"/></AsyncRoot><!--1.异步logger,还需要在pom.xml中添加disruptor的依赖。2.includeLocation结合异......

小翔
今天
3
0
安卓手机上 K 歌,声音延迟怎么解决?

这篇文章可以为你提供一个解决录音和播放同步问题的思路,而且解决了声音从手机传输到耳机上有延时的问题。 初识音频 在开始之前,我先简单介绍一下音频相关的基础知识,方便下文理解。 我们...

编辑部的故事
今天
2
0
使用token实现在有效期内APP自动登录功能

使用token实现在有效期内APP自动登录功能 http://sevennight.cc/2016/07/19/auto_login_impl.html

风云海滩
今天
3
0
Spring Boot集成RabbitMQ发送接收JSON

默认情况下RabbitMQ发送的消息是转换为字节码,这里介绍一下如何发送JSON数据。 ObjectMapper 最简单发送JSON数据的方式是把对象使用ObjectMapper等JSON工具类把对象转换为JSON格式,然后发送...

小致dad
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部