`
sunnylocus
  • 浏览: 869690 次
  • 性别: Icon_minigender_1
  • 来自: 美国图森
社区版块
存档分类
最新评论

iptables中DNAT与SNAT的理解

阅读更多

    DNAT(Destination Network Address Translation,目的地址转换) 通常被叫做目的映射。而SNAT(Source Network Address Translation,源地址转换)通常被叫做源映射。

这是我们在设置Linux网关或者防火墙时经常要用来的两种方式。以前对这两个都解释得不太清楚,现在我在这里解释一下。

    首先,我们要了解一下IP包的结构,如下图所示:

     在任何一个IP数据包中,都会有Source IP AddressDestination IP Address这两个字段,数据包所经过的路由器也是根据这两个字段是判定数据包是由什么地方发过来的,它要将数据包发到什么地方去。而iptablesDNATSNAT就是根据这个原理,对Source IP AddressDestination 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 address202.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-dnat详

    iptables nat snat dnat 负载均衡

    iptables之SNAT和DNAT

    iptables、SNAT和DNAT实验

    IPTABLES、SNAT、DNAT网关策略

    关于拿linux系统当路由器做NAT用的。

    Iptables之SNA与DNAT(三)《博雅运维Linux全套笔记》

    Iptables之SNA与DNAT(三)《博雅运维Linux全套笔记》,如何配置snat,dnat,等等

    iptables的SNAT和DNAT地址转换配置.pdf

    iptables的SNAT和DNAT地址转换配置.pdf 学习资料 复习资料 教学资源

    洞悉linux下的Netfilter&iptables;整理

    洞悉linux下的Netfilter&iptables;...内核中的ip_tables小觑、内核中的rule,match和target、包过滤子系统iptable_filter、如何理解连接跟踪机制、状态防火墙、DNAT、SNAT、iptables命令行工具源码解析

    使用SNAT、DNAT策略实现网关应用

    打开密码 www.clvn.com.cn

    Iptables 中文指南

    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. ...

    iptables指南1.1.19电子书

    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....

    洞悉linux下的Netfilter&iptables;

    详细介绍了linux下的防火墙设计和原理,基于应用层的iptables和内核的Netfilter。重点讲了SNAT\DNAT\状态防火墙等,还有具体实例讲解

    iptables高级应用实战案例

    一、SNAT源地址转换; 二、DNAT目的地址转换; 三、SNAT和DNAT实战案例;

    构筑Linux防火墙之IPtables的概念与用法

    实际的操作分为以下几类: <br>◆ DNAT <br>◆ SNAT <br>◆ MASQUERADE <br>DNAT操作主要用在这样一种情况,你有一个合法的IP地址,要把对防火墙的访问 重定向到其他的机子上(比如DMZ)。也就是说,...

    实用iptables 示例

    本文是我自己的一些学习iptables的心得,给大家...prerouting =>nat #修改目的地址(DNAT) postrouting =>nat #修改源地址(SNAT) iptables -t 要操作的表 操作命令 要操作的链 规则号码 匹配条件 -j 匹配到以后的命令

    Iptables 指南 1.1.19

    6.5.2. DNAT target 6.5.3. DROP target 6.5.4. LOG target 6.5.5. MARK target 6.5.6. MASQUERADE target 6.5.7. MIRROR target 6.5.8. QUEUE target 6.5.9. REDIRECT target 6.5.10. REJECT target 6.5.11. RETURN...

    第十九章:iptables高级应用1

    第十九章:iptables高级应用一、SNAT源地址转换;二、DNAT目的地址转换;一、SNAT源地址转换;1.原理:在路由后链POSTROUTING将内网主机

    docker-network-tools:Docker网络工具。 支持浮动IP,网络名称空间同步,OVS和linux网桥

    只是DNAT / SNAT到特定的容器。 您可以将docker与OVS(Open-V-Switch)以及具有低级别设置Linux桥一起使用。 较新的Docker无法使用LXC选项进行设置,因此我需要使用linux名称空间设置docker。 为什么要使用bash...

    PCX Firewall-开源

    PCX防火墙是一个perl脚本,可生成自定义的外壳脚本来启动,停止和重新启动基于IPTables的防火墙。 您可以构建多宿主系统或独立系统。 支持DNAT,SNAT,重定向,阻止等。

    企业级Linux服务攻略

    8.2.2 iptables的启动与停止 8.3 防火墙配置 8.3.1 iptables的基本语法 8.3.2 设置默认策略 8.3.3 查看iptables规则 8.3.4 添加、删除、修改规则 8.3.5 保存规则与恢复 8.3.6 常用实例及技巧分析 8.3.7 使用日志...

    linux 网络命令 介绍

    network layers unicast, multicast, broadcast, anycast lan-wan-man internet - intranet - extranet ...packet forwarding packet filtering nat pat snat dnat Samba ping6 ipv4 mapped ipv6 address

    家庭服务器

    sudo iptables -t nat -A PREROUTING -d 192.168.16.198 -p tcp --dport 80 -j DNAT --to-destination 192.168.16.1:80 sudo iptables -t nat -A POSTROUTING -d 192.168.16.1 -p tcp- -dport 80 -j SNAT-至192.168....

Global site tag (gtag.js) - Google Analytics