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)
上一篇 2022年6月15日 下午3:16
下一篇 2022年6月15日 下午3:16


相关推荐

  • html下拉框设置默认值_html下拉框怎么设置默认值

    html下拉框设置默认值_html下拉框怎么设置默认值匿名用户 1 级 2016 11 16 回答第一种通过的属性来设置选中项 此方法可以在动态语言如 php 在后台根据需要控制输出结果 selectid sel optionvalue 1 1option gt optionvalue 2 selected selected 2option gt amp l optionvalue 2 selected selected optionvalue 1 selectid sel

    2026年3月18日
    1
  • Monit监控软件安装

    Monit监控软件安装Monit 是一款功能非常丰富的进程 文件 目录和设备的监测软件 适用于 Linux Unix 平台 官网地址 https mmonit com 在 CentOS6 4 上配置 Monit 的步骤 我们以服务器 IP 地址 10 153 126 189 为例进行配置 监控 10 153 110 12 10 153 75 78 这两台服务器 一 安装 Monit yuminstallmo

    2026年3月17日
    2
  • idea配置tomcat的方法(详细图文步骤)

    idea配置tomcat的方法(详细图文步骤)1 打开 idea 在项目运行列表下拉选择 editConfigur 2 在打开的界面 点击 再选择下面的 TomcatServer 下的 local3 在打开的界面 第一行 Name 中填入 tomcat 的名称然后点击 Configure 在 ApplicationS 界面 点击 在 TomcatServer 配置界面选择要添加的 tomcat

    2026年3月16日
    16
  • typescript 中文手册

    typescript 中文手册typescript 中文手册或者 TypeScript 手册中文版

    2026年3月20日
    2
  • 小程序开发文档

    小程序开发文档

    2021年11月5日
    57
  • Linux下如何挂载磁盘[通俗易懂]

    Linux下如何挂载磁盘[通俗易懂]使用虚拟机时发现磁盘空间不够了,需要挂载一个磁盘以供继续使用,但是磁盘不是添加就可以使用的,还需要进行挂载。一、添加磁盘添加加新硬盘重启服务器添加完之后就可以重启机器了,如果你机器是开启的,进入系统并不能看见你刚添加的那块磁盘,只有等系统重启,重新加载之后才会显示安装的那块磁盘二、进入系统使用root用户进入系统三、查看硬盘信息[root@localhost~]#fdi

    2022年6月19日
    38

发表回复

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

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