IPtables中SNAT、DNAT和MASQUERADE的含义

IPtables中SNAT、DNAT和MASQUERADE的含义IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT。SNAT是sourcenetworkaddresstranslation的缩写,即源地址目标转换。比如,多个PC机使用ADSL路由器共享上网,每个PC机都配置了内网IP,PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip,当外部网络的服务器比如网站web服务器接到访

大家好,又见面了,我是你们的朋友全栈君。

IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNATDNAT

SNATsource networkaddress translation的缩写,即源地址目标转换。比如,多个PC机使用ADSL路由器共享上网,每个PC机都配置了内网IPPC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip,当外部网络的服务器比如网站web服务器接到访问请求的时候,他的日志记录下来的是路由器的ip地址,而不是pc机的内网ip,这是因为,这个服务器收到的数据包的报头里边的“源地址”,已经被替换了,所以叫做SNAT基于源地址的地址转换

DNATdestination networkaddress translation的缩写,即目标网络地址转换,典型的应用是,有个web服务器放在内网配置内网ip,前端有个防火墙配置公网ip,互联网上的访问者使用公网ip来访问这个网站,当访问的时候,客户端发出一个数据包,这个数据包的报头里边,目标地址写的是防火墙的公网ip,防火墙会把这个数据包的报头改写一次,将目标地址改写成web服务器的内网ip,然后再把这个数据包发送到内网的web服务器上,这样,数据包就穿透了防火墙,并从公网ip变成了一个对内网地址的访问了,即DNAT基于目标的网络地址转换

MASQUERADE,地址伪装,算是snat中的一种特例,可以实现自动化的snat。

在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-source192.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-source192.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地址转换。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148098.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MATLAB中griddata和griddatan插值函数简单说明

    MATLAB中griddata和griddatan插值函数简单说明MATLAB中griddata和griddatan插值函数简单说明前言本文会用容易理解的话解释下griddata和griddatan的用法,不会追求严谨,目的是抛砖引玉,帮助需要用到这两个插值函数的同学尽快理解使用。一、griddata函数是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):importnumpyasnpimportpandasaspdimportmatplotlib.pyp

    2022年5月9日
    137
  • STM32F103C8T6芯片的引脚分布,及注意事项(用于芯片选型)「建议收藏」

    STM32F103C8T6芯片的引脚分布,及注意事项(用于芯片选型)「建议收藏」STM32F103C8T6这款芯片,是我们使用单片机做项目常用到的一款芯片。它具有价格便宜、性能强大、资源齐全等各种优点。我常常使用的是黑金的c8t6核心板,如下:以下将介绍他的资源配置该款芯片各个管脚的功能分配如下(注意:凡是引脚标注有ADC功能的,该引脚都是3.3V耐压,不可接5V信号,否则会使该引脚烧毁或者芯片烧毁)附件为:1.官方c8t6的数据手册(中英文)2….

    2022年10月15日
    2
  • android sdk manager安装,Android SDK Manager安装过程

    android sdk manager安装,Android SDK Manager安装过程1、首先要下载安装JavaJDK,下载地址:http://pan.baidu.com/share/link?shareid=7368&uk=2148507123然后在下载最新的AndroidSDK4.1文件,下载地址:http://dl.google.com/android/android-sdk_r20-windows.zip或:http://pan.baidu.com/share…

    2022年7月21日
    21
  • 电子签名的制作和使用方法_如何使用电子签名

    电子签名的制作和使用方法_如何使用电子签名电子签名的制作和使用一、在Word文档中插入手写签名生成电子签名1、准备好签名图片。2、用Word打开需要签名的文件,点菜单中的“插入>插图>图片”来选择已经写好的签名图片,插入后可以调整图片大小。3、点击菜单“格式>颜色>黑白”。4、点击菜单“格式>颜色>重新着色>设置透明色”,鼠标变成一支笔后,点图片中白色部分,这样就自动把白底抠除了,设置图片格式为“浮于文字上方”,最后拖动图片到签字处,调整大小即可。相关链接一、在Word文档中插入手写签名生成电子签名1、

    2022年10月16日
    2
  • Pycharm 中的 全局搜索(ctrl+shift+f) 功能无法使用的原因

    Pycharm 中的 全局搜索(ctrl+shift+f) 功能无法使用的原因原因是Pycharm和搜狗输入法的快捷键冲突

    2022年8月29日
    3
  • Ubuntun下tree命令的安装[通俗易懂]

    Ubuntun下tree命令的安装[通俗易懂]tree命令是可以把指定文件夹的所以文件用树状罗列出来,呈现目录形式的一个命令。没有安装之前,tree命令默认不能直接使用。虽然很多人说一条命令可以解决yum-yinstalltree可是发现yum命令也需要安装。在网上找了安装yum命令的教程发现又要安装rpm命令(我的内心是拒绝的)很麻烦,但是还是要继续如果对linux不是很熟悉的话建议还是需要什么安装什么,不要

    2022年7月24日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号