ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Linux系统之iptables应用SNAT与DNAT

Linux系统之iptables应用SNAT与DNAT

一、SNAT:

1.应用环境

局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)

2.SNAT原理

  • 源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映谢
  • 数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP
  • 当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP

3.SNAT转换前提条件

局域网各主机已正确设置IP地址、子网掩码、默认网关地址
Linux网关开启IP路由转发
linxu系统本身是没有转发功能,只有路由发送数据

 4.开启SNAT:

1.临时打开:

echo 1 >/proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip forward=1

2.永久打开

vim /etc/ sysctl. conf
net. ipv4.ip_ forward = 1				#将此行写入配置文件sysctl -P			                	#读取修改后的配置

5.SNAT的转换:

1.固定的公网IP地址

#配置SNAT策略,实现snat功能,将所有192.168.37.0这个网段的ip的源ip改为10.0.0.1iptables -t nat -A POSTROUTING -s 192.168.37.0/24 -o ens33 -j SNAT --to 10.0.0.1可换成单独IP   出站外网网卡            外网IPiptables -t nat -A POSTROUTING -s 192.168.37.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10内网IP   出站外网网卡                    外网IP或地址池

2.非固定的公网IP地址(共享动态IP地址)

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADEiptables -t nat -A POSTROUTING -s 12.0.0.0/24 -d 192.168.100.0/24 -j MASQUERADE一个IP地址做SNAT转换,一般可以让内网 100到200 台主机实现上网

6.SNAT实验:

运用SNAT策略将局域网中的客户机IP封装为网关服务器的外网IP,访问web服务器的http服务

 

添加网卡

cd /etc/sysconfig/network-scripts/  切换绝对路径

cp ifcfg-ens33 ifcfg-ens36  复制模板

配置网卡ens36

重启网卡检验

vim /etc/sysctl.conf

0——》1开启路由转发功能

配置生效

配置防火墙策略: 

[root@localhost network-scripts]#iptables -t nat -A POSTROUTING -s 192.168.91.0/24 -o ens36 -j SNAT --to 12.0.0.1#在出口的地方加  指定 POSTROUTING #指定源网段 192.168.91.0/24#出口网卡  ens36#将内网地址通过ens36网口,都转为12.0.0.1的外网地址

配置策略: 

 

配置

 

测试: 

 

内网访问外网 

源内网地址转为源外网地址

二.DNAT:

1.DNAT定义:

DNAT 将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问

2.DNAT原理

  • 目标地址转换
  • 修改数据包的目标地址

3.DNAT转换前提条件

  • 局域网的服务器能够访问Internet
  • 网关的外网地址有正确的DNS解析记录
  • Linux网关开启IP路由转发
vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1 
sysct1 -p

4.DNAT源地址转换过程:

  • 数据包从外网发送到内网时,DNAT会把数据包的目标地址由公网IP转换成私网IP。
  • 当相应的数据包从内网发送到公网时,会把数据包的源地址由私网IP转换为公网IP。

5.实验:

 通过DNAT将web服务器的提供的httpd服务映射到网关服务器ens36网卡,且端口为80上面

DNAT 防火墙策略: 

[root@localhost network-scripts]#iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80  -j DNAT --to 192.168.91.4#把从ens36进来的要访问web服务的数据包目的地址转换为192.168.91.4#指定目的地址为网关服务器的ens36外网网卡的IP地址,将web服务器的私网地址映射到网关服务器的外网IP
#指定目的端口为html:80  这里可以修改映射为其它端口,加强安全性

内网开启httpd服务:

测试:

三.SNAT和DNAT的区别

从定义上讲,SNAT是原地址转换,DNAT是目标地址转换。区分这两个功能可以简单的由服务的发起者是谁来区分,内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换成公有ip。

 

返回列表