iptables之SNAT与DNAT(一)

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: iptables之SNAT与DNAT

前言

Linux 防火墙在很多的时候承担着连接企业内、外网的重任,除了提供数据包过滤以外,还提供一些基本的网关应用。下面我们将了解防火墙中的SNAT 和DNAT策略。


一、SNAT策略及应用


1.1SNAT策略概述

SNAT 应用环境


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


SNAT原理


源地址转换(根据指定的条件修改数据包的源IP地址,通常被叫做源映射。)


修改数据包的源地址


客户端往网关服务器发数据包,通过网关服务器不进行转发,发送至需要访问的服务器,访问后,数据包回来的时候还是私网IP,原来的源IP作为目的IP进行传送,私网IP作为目的地址在互联网中会被丢弃,所以我们需要将IP进行转换,这样就能以公网IP的身份返回


SNAT转换前提条件


局域网各主机已正确设置IP地址、子网掩码

局域网各主机已正确设置默认网关地址

Linux网关开启IP路由转发

1.2开启SNAT的命令

1.2.1临时打开

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

1.2.2永久打开

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

1.3SNAT转换1:固定的公网IP地址

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



1.3.1命令名词解释

iptables 的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理;为了更加方便的组织和管理防火墙规则,iptables采用了表和链的分层结构,所以它会对请求的数据包的包头数据进行分析,根据我们预先设定的规则进行匹配来决定是否可以进入主机;其中,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,在每个表容器内又包括不同的规则链,根据处理数据包的不同时机划分为五种链。

总结: 表里有链,链里有规则


1.3.2基本语法

 iptables     [-t 表名]     管理选项     [链名]    [匹配条件]   [-j控制类型]

其中:表名、链名用来指定iptables 命令操作的表和链,未指定表名时将默认使用filter 表

指定表:-t

四表中的nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口

**-A:**在指定链的末尾追加(–append)一条新的规则

五链中的POSTROUTING:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网

五链中的PREROUTING:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上


通用匹配:可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。

协议匹配:-p协议名

地址匹配:-s源地址、-d目的地址

#可以是IP、网段、域名、空(任何地址)

接口匹配:-i入站网卡、-o出站网卡

控制类型:-j

SNAT :修改数据包的源地址

DNAT :修改数据包的目的地址


1.4SNAT转换2:非固定的公网IP地址(共享动态IP地址)

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

MASQUERADE:伪装成一个非固定公网IP地址。


二、SNAT实验

首先准备一台web服务器和一台win10的机器还有一台SNAT服务器

在操作前一定要先安装好所需程序httpd、iptables


2.1给两台服务器安装httpd以及iptables服务并启动


2.2打开虚拟网络编辑器,查看VMnet1和VMnet3的网段。设置ens33的网段为192.168.100.0,ens37的网段为10.0.0.0


2.3打开虚拟机,点击虚拟机设置,添加一张网卡ens37,网络适配器改成自定义(VMnet1),网络适配器2改成(VMnet3)


2.4修改两张网卡信息并重启

2.4.1修改内网网卡

注释掉网关地址(因为他本身就是网关),注释掉DNS1,网卡名也为ens33


2.4.2修改外网网卡

因为ens37网卡配置是复制ens33的,所以要把uuid给删掉防止冲突

2.4.3重启网卡查看是否设置成功(systemctl restart network)


2.5永久开启IP路由转发,开启SNAT

在etc/sysctl.conf中添加一条永久开启ip路由转发




第一台SNAT服务器准备工作结束

2.6 修改web服务器的网卡


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
4月前
|
负载均衡 安全 网络安全
|
7月前
内网和外联单位互访,看大佬是如何通过SNAT+DNAT实现的?
内网和外联单位互访,看大佬是如何通过SNAT+DNAT实现的?
|
7月前
|
负载均衡 Linux 网络虚拟化
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
|
7月前
|
安全 网络安全 网络架构
【揭秘】大佬如何玩转内网与外联单位互访?SNAT+DNAT实战揭秘,让你的网络畅通无阻!
【8月更文挑战第19天】内网与外联单位间的访问是企业网络的关键需求。通过SNAT和DNAT技术可巧妙解决此问题。SNAT修改源IP地址,隐藏内网真实身份;DNAT改变目的IP地址,实现外部对内网服务器的访问。
175 0
|
9月前
|
Linux 网络安全
NAT 技术与 Linux iptables
NAT 技术与 Linux iptables
162 0
|
10月前
|
网络协议 开发工具 Docker
iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9999 -j DNAT --to-destination 172.17.0.2:80 !
iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9999 -j DNAT --to-destination 172.17.0.2:80 !
198 1
|
10月前
|
安全 网络安全 网络架构
计算机网络地址转换(NAT)
网络地址转换(NAT)允许多个主机共享一个或一组公共IP地址,同时保护内部网络的隐私和安全。NAT通常由路由器或防火墙设备执行,它充当内部网络和外部网络之间的中间人,将内部主机的私有IP地址映射到一个或多个公共IP地址上。
140 0
|
4月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
271 2
|
4月前
|
运维 负载均衡 安全
|
5月前
|
网络协议 安全 网络安全
Cisco-网络端口地址转换NAPT配置
Cisco-网络端口地址转换NAPT配置
110 1