发布时间:2020-04-27 20:36:07来源:阅读:
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地址转换。
activesync(电脑数据同步工具)v6.1 中文版
22.72MB
cdr x6(图形设计软件)V16.2.0 中文版
251.8M
ghost11(系统ghost工具箱)v11.0 中文版
15.8M
picture manager(图像处理软件)2010 中文版
19.46 MB
unlocker(密码解锁工具) v3.0.3.4 中文版
32.1M
vc2005(动态链接库)V0.3.2 中文版
6.63MB
winkawaks模拟器(街机游戏模拟器) V1.62 中文版
2M
ceb文件阅读器下载
42.6M
cs1.6下载
141MB
fireworks下载
88.4M
ftp上传工具下载
22.3M
gghost一键恢复下载
14.5M
h264播放器下载
11.2M
hwinfo32下载
10.1M
印象笔记下载
122.6M
2020-04-23
Windows系统目录下文件夹汇总
I921手机蓝牙耳机的型号及配对密码是多少?
Lenovo G470A 双显卡切换方法补充
B500一体机,在Windows XP系统下,声卡驱动下载及安装过程
热血传奇:盘点全服玩家都憎恶的玩家,最后一类土豪见到都要绕路
My Wifi无法共享网络的解决方案
Z61 XP SP2系统上安装摄像图驱动问题
CentOS 7安装MariaDB 10详解以及相关配置
centos7.3下配置LAMP部署WordPress博客