• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • bios
  • 系统安装
  • 系统进程
  • Windows
  • LINUX
  • RedHat/Centos
  • Ubuntu/Debian
  • Fedora
  • Solaris
  • 麒麟系统
  • 红旗Linux
  • 苹果MAC
  • 注册表
  • 其它系统
您的位置:首页 > 操作系统 >LINUX > 详解Linux下iptables中的DNAT与SNAT设置

详解Linux下iptables中的DNAT与SNAT设置

作者:phoenix007 字体:[增加 减小] 来源:互联网 时间:2017-05-12

phoenix007 通过本文向大家介绍了iptables dnat,snat dnat,iptables snat,iptables详解,linux iptables详解等相关知识,希望对您有所帮助,也希望大家多多支持linkedu.com

DNAT(Destination Network Address Translation,目的地址转换) 通常被叫做目的映谢。而SNAT(Source Network Address Translation,源地址转换)通常被叫做源映谢。
这是我们在设置Linux网关或者防火墙时经常要用来的两种方式。以前对这两个都解释得不太清楚,现在我在这里解释一下。
首先,我们要了解一下IP包的结构,如下图所示:
20151123120626845.gif (616×278)

在任何一个IP数据包中,都会有Source IP Address与Destination IP Address这两个字段,数据包所经过的路由器也是根据这两个字段是判定数据包是由什么地方发过来的,它要将数据包发到什么地方去。而iptables的DNAT与SNAT就是根据这个原理,对Source IP Address与Destination IP Address进行修改。
然后,我们再看看数据包在iptables中要经过的链(chain):
20151123120648524.png (501×258)

图中正菱形的区域是对数据包进行判定转发的地方。在这里,系统会根据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的包肯定会丢失。

注意,DNAT target只能用在nat表的PREOUTING 和 OUTPUT 链中,或者是被这两条链调用的链里。但还要注意的是,包含DNAT target的连不能被除此之外的其他链调用,如POSTROUTING。

    比较好的解决办法是为你的LAN在内网建立一台单独的DNS服务器(译者注:这样,内网客户使用网站名访问HTTP服务器时,DNS就可以把他解析成内网地址。客户机就可以直接去访

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解Linux下iptables中的DNAT与SNAT设置

相关文章

  • 2017-05-12Puppet使用方法总结
  • 2017-05-12Linux下垃圾文件的详解
  • 2017-05-12在Linux上如何管理加密密钥?管理加密密钥的最佳体验
  • 2017-05-12Linux Kernel 4.5在3月15日发布最终版
  • 2017-05-12redhat linux swap分区扩展的三种方法详解
  • 2017-05-12Linux系统下修改IP地址、网关、DNS的基本方法
  • 2017-05-12Linux系统开机黑屏提示kernel panic该怎么办?
  • 2017-05-12Linux中DNS服务器地址查询命令nslookup使用教程
  • 2017-05-12Linux Mint设置面板位置以及添加面板元素的方法
  • 2017-05-12Linux下Varnish缓存服务器的安装与配置教程

文章分类

  • bios
  • 系统安装
  • 系统进程
  • Windows
  • LINUX
  • RedHat/Centos
  • Ubuntu/Debian
  • Fedora
  • Solaris
  • 麒麟系统
  • 红旗Linux
  • 苹果MAC
  • 注册表
  • 其它系统

最近更新的内容

    • 简单讲解Linux的文件系统及相关的挂载命令
    • Linux上超酷的命令行扩展工具Oh My Zsh
    • Puppet 安装配置方法
    • Linux下多线程下载工具MWget和Axel使用介绍
    • Linux基金会官网公布最佳Linux发行版名单详解
    • Linux常用文件与网络操作命令速记指南
    • Linux系统中怎么设置java环境变量?
    • Linux中文件的压缩与解压缩命令操作示例集锦
    • 简介Linux系统的etc目录及其下的passwd文件
    • linux系统配置vsftpd服务后启动失败该怎么办?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有