iptables之NAT实现

nat的优点:
      防护内网中的主机,保护主机的安全
      解决c类地址短缺的情况

SNAT和DNAT的区分是根据请求的源地址转换还是目标地址转换而决定的

以下实验中,内网的主机,将网关指向192.168.100.1这个地址

SNAT:源地址转换

拓扑:

过程解析:

报文的源地址为192.168.100.2,目标地址为外面主机地址211.70.160.16

但是到达nat服务器的eth0后,将报文的源地址改变成eth0的地址211.70.160.1

这个地址是一个公网地址

外网的web服务器接收到报文时,发现报文的目标地址是自己,然后就接收了报文

之后,web服务器对请求进行响应,根据来源的地址为211.70.160.1响应

web服务器构建响应报文,报文的源地址为自己,即211.70.160.16,报文的目标

地址为211.70.160.1,是我们这个内网所拥有的外网地址

返回报文到达nat服务器后,发现报文的目标地址是自己,然后接收报文,在路由决策

之前,将报文的目标地址改成发起请求的内网的主机的地址,目标地址仍是web服务器的

地址,因为内网主机请求的地址就是web服务器的地址

snat的过程中,只有前半段被转换,后半段由服务器自动完成

由于nat服务器在内存中维护着一张追踪表,(由nf_conntrack模块完成)

在nat服务器上操作

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -p tcp –dport 80 -j SNAT

–to-source 211.70.160.1

表示内网内的任意主机访问外面的web服务时,都转换成211.70.160.1这个地址

对于ADSL拨号的状况:MARSUEREAD(地址伪装)

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -p tcp –dport 80 -j MARSUERADE

SNAT的应用场景,主要是代理内网客户端访问互联网

实验过程:

现在web主机上启动web服务,并为其提供主页,内容如下:

<h1> This is a internet web : 211.70.160.16</h1>

此时,我们在内部的主机上,是无法访问这台web主机的,

须在nat服务器上开启源地址转换功能

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -p tcp –dport 80 -j SNAT

–to-sourece 211..70.160.1

重要的一步,要打开网络转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

然后在内网主机,访问外网的web服务器

curl http://211.70.160.16

效果如图所示

在我们的外网web服务器上,查看我们的访问日志

tail /var/log/httpd/access_log

效果如图所示

可以看出,访问web时,内网主机的地址被转换成外网的211.70.160.1这个地址了

效率较低,只有在动态获取地址的时候才会使用

################################################################################

DNAT:目标地址转换

拓扑:

一般,情况下,例如学校,他们会有一个到两个公网地址,但是为了安全,会把服务器放在

自己的内网中,但是,如何能放外面的用户访问呢,这就用到了目标转换

学校这种机构,会把自己的网站解析成自己所拥有的公网的ip地址

过程解析:

当外面的用户来访问学校的主页时,通过DNS解析,得到了公网地址,比如,211.70.160.1

然后,他就向这台服务器发送请求报文,报文的目标地址为211.170.160.1,源地址为211.70.160.16

当报文到达到nat服务器时,即上面eth0网卡,到达路由决策之前,nat服务器将报文的目标地址进行了

转换,改为192.168.100.2,源地址不变

内部的web服务器收到报文后,发现报文的目标地址是自己,是一个请求报文

对这个请求报文进行响应,发送响应报文,报文的源地址为192.168.100.2,目标地址为

211.70.160.16

当这个响应报文快要离开内网时,经由nat服务器的eth0,在路由决策之前,将报文的源地址

改为211.70.160.1,目标地址仍然为211.70.160.16

外面的请求主机接收到响应报文时,发现目标地址是自己的,而源地址是211.70.160.1,是自己

发送请求报文的目标地址,就接收了这个响应报文

snat的过程中,只有前半段被转换,后半段由服务器自动完成

内网的服务器上的日志显示的请求者仍为外网主机的地址

iptables -t nat -A PREROUTING -d 211.70.160.1 -p tcp –dport 80 -j DNAT –to-destination

192.168.100.2

实验过程:

在内网的web服务器上提供主页,如下内容,并重启web服务

<h1>This is local area network 192.168.100.2</h1>

然后再到我们的nat服务器上,将原来的SNAT删除,开启目标地址转换功能

iptables -t nat -D POSTROUTING 1

iptables -t nat -A PREROUTING -d 211.70.160.1 -p tcp –dport 80 -j DNAT  –to-destination

192.168.100.2

首先,我们先到外网的主机上,对局域网所有的公网地址发起web请求,如下

然后,回到我们的内网web服务器上,查看访问日志,如下

可以看出,访问的就是内网的主机的web页面,web主机记录的源ip也为外网请求主机的ip

#########################################################

NAT:端口转换,只与DNAT有关

以目标地址转换继续

假设,www.365lsy.com这个网站对外宣称监听在80端口,但是,它的web服务器在内网中,

监听在8800这个端口,但是,外部的用户访问时,如何才能访问到正确的web服务器呢,这里

就用到了端口转换的概念

过程解析

外网的主机向这个机构宣称的网站对应的ip地址的80端口发起请求报文,报文的目标地址为

211.70.160.1,端口为80,源地址为211.70.160.16,端口为任意一个端口

当请求报文到nat服务器时,在进行路由决策之前,将报文进行转换,源地址和源端口都不变

目标地址改为192.168.100.2,端口改为8800

内网的web服务器收到请求报文后,进行响应,响应报文的目标地址为请求服务的主机的地址,即

211.70.160.16,端口为请求时的端口,源地址为192.168.100.2,端口为8800

响应报文无法到达外网,当报文将要离开网卡时,路由决策之前,将源地址改变成211.70.160.1,

端口改变成80,目标地址端口不变

请求的主机接收到web服务器发送的响应报文

这个过程用到了目标地址转换,端口地址转换,内网的web主机被隐藏,加强了安全

###########################################################

FULL NAT:全转换,源、目标都转换

在DNAT的基础上,在路由决策之前,改变报文信息

将报文中的目标地址改为192.168.100.2,不同的是,将源地址改变成192.168.100.1

即内网的网关的网卡地址

假设,请求内网的web主机和192.168.100/24不在一个网段时使用,内网中跨局域网

总结:nat转换的过程,要弄清楚的是,报文从哪一端到哪一端,而且,还有了解,在源地址转换和目标地址转换时,发生在哪条链上,搞清楚后才能很好的将规则写出来

时间: 2024-10-12 23:20:23

iptables之NAT实现的相关文章

iptables配置——NAT地址转换

iptables nat 原理同filter表一样,nat表也有三条缺省的"链"(chains): PREROUTING:目的DNAT规则 把从外来的访问重定向到其他的机子上,比如内部SERVER,或者DMZ.           因为路由时只检查数据包的目的ip地址,所以必须在路由之前就进行目的PREROUTING DNAT;          系统先PREROUTING DNAT翻译——>再过滤(FORWARD)——>最后路由.           路由和过滤(FORW

IPtables(5)NAT

nat:NetworkAddress Translation,安全性,网络层+传输层 SNAT(只修改请求报文的原地址;),DNAT(只修改请求报文的目标地址,端口映射,任何做一个DNAT需要对应一个SNAT) proxy:代理,应用层 DNAT\SNAT 核心转发.路由,不修改头部报文 修改源地址,NAT,修改头部报文,最初设计目标是为了安全性 nat表 PREROUTING(DNAT) OUTPUT POSTROUTING(SNAT) 源地址转换:iptables -t nat -A POS

Linux服务--iptables之nat转发和构建简单的DMZ防火墙

iptables之nat转发和构建简单的DMZ防火墙 一.NAT iptables 中的nat表: nat:Network Address Translation:NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机. nat有三种实现方式:SNAT,DNAT和端口多路复用OverLoad 在了解Nat工作原理之前先了解一下私网IP和公网IP.私网IP地址是指局域网内部网络或主机的IP地址,公网地址是指在因特尔网上全球唯一的IP地址. 私有

linyux iptables SNAt NAT 【原创】

rpm -ql iptables 查看安装的模块 iptables -t filter -L –n iptables -L –n这两个命令的效果是一样的 iptables -t nat -L –n查nat表 iptables -t mangle -L –n查mangle表 ============================================== [[email protected] ~]# iptables -help Usage: iptables -[AD] chain 

Linux主机上通过iptables实现NAT功能

实验:如下模型,node1为内网主机,IP地址为192.168.10.2:node3为外网主机,IP地址为10.72.37.177(假设此地址为公网地址),node3上提供web server和FTP Server的功能:内网主机node2主机有2块网卡,地址分别为eth0:192.168.10.1和eth2:10.72.37.91(假设此地址为公网地址): 现要求在node2上通过iptables配置实现SNAT功能,并做如下限制: 1.node1可以访问node3提供的web服务和ftp服务

iptables之nat

网络结构如下: NAT,即网络地址转换.如上图中三台机器,C服务器配置内网IP,B服务器可以正常上网同时打开了核心转发功能,B.C之间可以互相通信.但C无法访问外网,原因是当192.168.2.10访问192.168.1.10时(即内网访问外网),C的数据包可以正常发送给A,但是C是内网地址,服务器A的响应包是无法发送C的,所以需要进行地址转换.步骤如下: 1.服务器B打开核心转发功能(略): 2.在服务器B的防火墙上配置NAT,我们要让C可以正常访问外网,防火墙配置如下: # iptables

iptables 的NAT使用实验

+----------------------+                  +--------------------------+                +------------------+|  192.168.1.12 |   <-------->    |  192.168.1.11   |   <-------->  |  10.1.1.2    ||                         |                  |    10.

iptables之nat转发

主要分为路由前转发PREROUTING,和路由后转发POSTROUTING. 何为路由前?也就是从外部传入数据,在到达主机网卡,还未进入网卡的瞬间. 何为路由后?也就是从外部传入数据,进入并经过主机某个网卡后,向外传出数据的瞬间. 一个简单的模型如下: 外部数据------>主机网卡(如eth0.eth1等)------>目的地 路由前                           路由后 首先把转发策略打开 [[email protected]~]# vi /etc/sysctl.co

can&#39;t initialize iptables table `nat&#39;: Table does not exist

第一种 如果说nat名字是大写的NAT 试试iptables -tnat -L 原因是如果使用命令iptables -tNAT -L 是没有NAT表的也会出现这个错误 第二种:该错误完整应该是这样的: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded. 首先 [[email

iptables 之 NAT 中的DNAT 介

iptables 有地址转换的NAT功能 1 常用在  SNAT 将私有地址转换为公有地址 进行私有内的地址可以顺利访问外网 2 DNAT呢? 假设一个这样的场景,私有网络有两个服务器很繁忙,并且没有使用公网地址,现在需要对外提供服务!此时如何让外网的Client 访问到内网的WEB服务和FTP等服务? 答案: iptables 的DNAT功能,进行目标地址转换 模拟网络场景 192.168.100.0/24 私有 192.168.204.0/24 公网 web 服务器 192.168.100.