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的包肯定会丢失。
一些关于iptables的FAQ
http://www.chinaunix.net/index.php?uid=20809223&url=http://linux.chinaunix.net/bbs/viewthread.php?tid=812400
分享到:
相关推荐
iptables nat snat dnat 负载均衡
iptables、SNAT和DNAT实验
关于拿linux系统当路由器做NAT用的。
iptables的SNAT和DNAT地址转换配置.pdf 学习资料 复习资料 教学资源
Iptables之SNA与DNAT(三)《博雅运维Linux全套笔记》,如何配置snat,dnat,等等
本知识点详细介绍了iptables中的SNAT(源地址转换)和DNAT(目的地址转换)的高级应用,以及通过实战案例的形式展示它们的配置和应用。 首先,SNAT源地址转换的主要原理是在数据包通过路由器的POSTROUTING链时,将...
洞悉linux下的Netfilter&iptables;...内核中的ip_tables小觑、内核中的rule,match和target、包过滤子系统iptable_filter、如何理解连接跟踪机制、状态防火墙、DNAT、SNAT、iptables命令行工具源码解析
打开密码 www.clvn.com.cn
**SNAT(源网络地址转换)**是一种网络技术,用于在内部网络与外部网络之间进行通信时转换IP地址。在企业或组织网络中,当内部网络的设备想要访问外部网络(比如互联网)时,SNAT允许这些设备共享一个或多个公共IP...
- **nat表**:主要用于地址转换(NAT)操作,包括源地址转换(SNAT)、目的地址转换(DNAT)等。 - **mangle表**:主要用于数据包的标记和修改,用于特殊用途,如改变数据包的优先级或进行其他特殊处理。 每个表...
* -j 采取的动作,accept,drop,snat,dnat,masquerade * --sport 源端口 * --dport 目的端口,端口必须和协议一起来配合使用 注意:所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写 iptable 配置...
### iptables 1.1中文指南知识点概览 #### 一、iptables简介...以上是对 `iptables 1.1中文指南` 的主要内容和知识点的详细解析,希望能帮助读者更好地理解和掌握iptables的使用方法及其在网络安全管理中的重要作用。
2.3. 编译与安装 2.3.1. 编译 2.3.2. 在Red Hat 7.1上安装 3. 表和链 3.1. 概述 3.2. mangle 表 3.3. nat 表 3.4. Filter 表 4. 状态机制 4.1. 概述 4.2. conntrack记录 4.3. 数据包在用户空间的状态 4.4....
了解这一流程对于正确配置iptables至关重要,因为它有助于理解数据包是如何被处理、过滤或修改的。 - **以本地为目标的包**: - **步骤1**:数据包在线路上传输(例如互联网)。 - **步骤2**:数据包进入接口(如...
【iptables高级应用】主要涉及两种关键技术:SNAT(源地址转换)和DNAT(目的地址转换),它们在网络安全和服务器发布中起到至关重要的作用。 **一、SNAT源地址转换** 1. **原理**:SNAT是在iptables的`nat`表的`...
详细介绍了linux下的防火墙设计和原理,基于应用层的iptables和内核的Netfilter。重点讲了SNAT\DNAT\状态防火墙等,还有具体实例讲解
2. **nat表**(NAT):网络地址转换表,用于修改数据包的源或目标IP地址和端口,通常用于端口转发和SNAT(源NAT)/DNAT(目标NAT)操作。 3. **mangle表**:用于对数据包进行特殊标记或修改,如TOS字段的更改或QoS...
2.1. 哪里能取得iptables 2.2. 内核配置 2.3. 编译与安装 2.3.1. 编译 2.3.2. 在Red Hat 7.1上安装 3. 表和链 3.1. 概述 3.2. mangle 表 3.3. nat 表 3.4. Filter 表 4. 状态机制 4.1. 概述 4.2. ...
接下来,我们简要回顾一下**OSI七层模型**,以便更好地理解iptables如何在网络中发挥作用。 - **应用层**:如FTP、HTTPS等协议,用于提供应用程序之间的通信。 - **表示层**:处理数据格式化、加密等。 - **会话层*...
- **PREROUTING**: 位于`nat`表中,用于修改数据包的目的地址(DNAT)。 - **POSTROUTING**: 位于`nat`表中,用于修改数据包的源地址(SNAT)。 #### 四、iptables语法 文档详细介绍了iptables的语法结构,以便用户...