iptables 中的SNAT 和MASQUWERADE
NAT 是 network address translation 的缩写 网络地址转换
网络地址转换主要有两种:SNAT和DNAT,即源地址转换和目标地址转换
SNAT:源地址转换
eg:多台pc机使用ADSL路由器共享上网
每个pc都配置了内网IP,当pc机要访问外部网络的时候,路由器将数据包的包头的源地址替换成器的ip
解释:当外部网络的服务器比如网站web服务器接到访问请求的时候,
他的日志记录下来的是路由器的ip地址,而不是pc机的内网ip,这是因为,这个服务器收到的数据包的报头里边的“源地址”,已经被替换了所以叫做SNAT,基于源地址的地址转换。
DNAT是destination network address translation的 ,即目标网络地址转换
eg:典型的应用是,有个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 和MASQUWERADE的更多相关文章
- [转]IPTABLES中SNAT和MASQUERADE的区别
IPtables中可以灵活的做各种网络地址转换(NAT)网络地址转换主要有两种:SNAT和DNAT SNAT是source network address translation的缩写即源地址目标转换 ...
- iptables中DNAT、SNAT和MASQUERADE的理解
转:http://blog.csdn.net/yu_xiang/article/details/9212543 DNAT(Destination Network Address Translation ...
- 详解Linux下iptables中的DNAT与SNAT设置(转)
详解Linux下iptables中的DNAT与SNAT设置 这篇文章主要介绍了Linux下iptables中的DNAT与SNAT设置,是Linux网络配置中的基础知识,需要的朋友可以参考下 原文连 ...
- IPtables中SNAT和MASQUERADE的区别
问题 iptables中snat和MASQUERADE的区别 解决方案 iptables中可以灵活的做各种网络地址转换(NAT) 网络地址转换主要有两种:snat和DNAT snat是source n ...
- iptables中实现内外网互访,SNAT和DNAT
目录 一.SNAT原理与应用 二.DNAT原理与应用 DNAT转换:发布内网web服务 DNAT转换:发布时修改目标端口 三.防火墙规则的备份和还原 四.linux抓包 一.SNAT原理与应用 ① S ...
- Iptables防火墙(SNAT和DNAT)
1.SNAT:源地址转换 实现内网访问外网,修改IP地址,使用POSTROUTING 命令:iptables -t nat -A POSTROUTING -s 192.168.1.10/2 ...
- ubuntu 中DNAT SNAT配置实验.
1. 目的 图1 如图1所示,有A,B两台计算机,其中A配置成普通PC,B是网关.实现由A向一个不存在的IP 发起tcp连接,并能向这个不存在的ip发送数据. 同时响应这个tcp连接的是B中 ...
- vsftp在iptables中的配置
在 /etc/vsftpd/vsftpd.conf 文件末添加以下几行 pasv_enable=YESpasv_min_port=20000pasv_max_port=20010 在 iptables ...
- NFS 配置文件及在iptables中的配置
yum 安装nfs即可 ( yum install nfs-utils ) cat /etc/exports /data/nfsdata 10.10.10.194(rw,no_root_squash) ...
随机推荐
- airTest 实战之 -- 【征途】自动打怪回城卖物品
airTest是一个跨平台的.基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows.Android和iOS 官方文档: http://airtest.netease.com/ ...
- P3531 [POI2012]LIT-Letters
题目描述 Little Johnny has a very long surname. Yet he is not the only such person in his milieu. As it ...
- [poj] 3057 Evacuation
原题 题目大意 墙壁"X",空区域(都是人)".", 门"D". 人向门移动通过时视为逃脱,门每秒能出去一个人,人可以上下左右移动,墙阻止移 ...
- spring in action 学习笔记十:用@PropertySource避免注入外部属性的值硬代码化
@PropertySource的写法为:@PropertySource("classpath:某个.properties文件的类路径") 首先来看一下这个案例的目录结构,重点看带红 ...
- MySQL基本管理和应用
# yum install mysql-server # /etc/init.d/mysqld startInitializing MySQL database: Installing MySQL s ...
- hdu 6114 百度之星复赛B T1
Chess Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子. 一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中 ...
- 关于math头文件
math.h是c语言里的 cmath是c++里的 fabs是对小数求绝对值 abs是对整数绝对值 用math.h里的abs对小数不能求绝对值- - fabs对小数取绝对值 abs是对整数 现在要对一个 ...
- ie下,jquery为动态添加的节点添加事件,用live
jQuery向动态生成的内容添加事件响应 jQuery live() 方法详解 [收藏] 发布时间:2013-07-24 点击次数:176 来源:www.daimajiayuan.com jQuery ...
- CodeVS1611_APIO2009_抢掠计划_C++
题目:http://codevs.cn/problem/1611/ 关于题解请戳这里:http://www.cnblogs.com/hadilo/p/5892765.html 下面给一个可以A的代码, ...
- C++的Json解析库:jsoncpp和boost(转)
原文转自 http://blog.csdn.net/hzyong_c/article/details/7163589 JSON(JavaScript Object Notation)跟xml一样也是一 ...