iptables防火墙SNAT和DNAT

news2024/11/28 11:48:27

iptables防火墙SNAT和DNAT

    • 一、SNAT原理和应用
      • 1、SNAT原理
      • 2、SNAT应用环境
      • 3、SNAT转换前提条件
    • 二、SNAT案列
      • 1、实验需求
      • 2、实验环境
      • 3、实验目的
    • 三、DNAT原理和应用
      • 1、DNAT原理
      • 2、DNAT 应用环境
      • 3、DNAT转换的前提条件
    • 四、DNAT案列
    • 总结

一、SNAT原理和应用

1、SNAT原理

  • SNAT原理:源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射。

2、SNAT应用环境

  • SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)。

3、SNAT转换前提条件

  • 局域网各主机已正确设置IP地址、子网掩码、默认网关地址,Linux网关开启IP路由转发。

临时开启

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

永久开启

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

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

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

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

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

二、SNAT案列

1、实验需求

配置SNAT(源地址转换)能够实现外网客户端机器访问内网区域web服务。

2、实验环境

7-0 作为内网服务器 IP地址 192.168.10.130  网卡nat模式
7-1 作为网关服务器,添加网卡 仅主机模式 
IP地址 内网192.168.10.132    
外网ens37 12.0.0.254 网卡是仅主机模式
7-2 作为外网服务器    IP地址 ens33 仅主机模式  安装httpd服务

3、实验目的

通过SNAT技术去访问外网

1、在网关服务器需要添加一块网卡,并且是仅主机模式
在这里插入图片描述
在这里插入图片描述
2、进到网卡配置文件的位置,进行对新添加的网卡配置进行修改

[root@localhost ~]# cd /etc/sysconfig/network-scripts/      ##进入到配置网卡的文件目录下
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37     ##复制
[root@localhost network-scripts]# vi ifcfg-ens37    ##进入修改文件
[root@localhost network-scripts]# systemctl restart network    ##重启网卡
[root@localhost network-scripts]# ip a    ##查看

在这里插入图片描述
在这里插入图片描述
3、修改内网服务器的网关,完了查看是否改成功。
在这里插入图片描述
在这里插入图片描述
4、首先要修改外网服务器的网卡模式,需要装httpd服务,再修改网卡配置

[root@localhost ~]#setenforce 0          ##关闭核心防护
[root@localhost ~]#systemctl stop firewalld.service   ##关闭防火墙
[root@localhost ~]#systemctl start httpd.service      ##启动httpd服务
[root@localhost ~]#ping 12.0.0.254

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5、网关服务器,需要开启路由转发功能

[root@localhost network-scripts]# vim /etc/sysctl.conf 
[root@localhost network-scripts]# sysctl -p   ##读取修改后的配置
net.ipv4.ip_forward = 1      ##永久开启ip路由转发

在这里插入图片描述
在这里插入图片描述
6、在内网服务器验证,如下图。

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens37 -j SNAT --to 12.0.0.254   
-t nat 指定使用nat表
-A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
-s 指定源ip
-o 指定输出网卡为ens37时
-j 指定跳转到SNAT处理
--to 指定SNAT nat为12.0.0.254这个地址

在这里插入图片描述
在这里插入图片描述

三、DNAT原理和应用

1、DNAT原理

DNAT原理:目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映射。

2、DNAT 应用环境

在Internet中发布位于局域网内的服务器。

3、DNAT转换的前提条件

局域网的服务器能够访问Internet

网关的外网地址有正确的DNS解析记录

Linux网关开启IP路由转发

四、DNAT案列

1、在SNAT的基础上做

2、在内网服务器上需要安装httpd服务

3、在网关服务器上配置DNAT规则

iptables -t nat  -A PREROUTING -d 12.0.0.254 -i ens37 -p tcp  --dport 80 -j DNAT --to 192.168.10.130
从ens37网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.10.130
-t nat 指定使用nat表
-A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
-d 指定目的ip
-i 指定输出网卡为ens37时
-p 指定协议为tcp协议
--dport 指定目的端口为80
-j 指定跳转到DNAT处理
--to 指定DNAT nat到192.168.10.130这个地址

在这里插入图片描述

总结

文章主要描述了SNAT和DNAT的原理以及实验案例,SNAT是源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射。DNAT是修改数据包的目的地址,通常被叫做目的映射。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/335706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

365天深度学习训练营 第P6周:好莱坞明星识别

🍨 本文为🔗365天深度学习训练营 内部限免文章(版权归 K同学啊 所有)🍦 参考文章地址: 🔗第P6周:好莱坞明星识别 | 365天深度学习训练营🍖 作者:K同学啊 | 接…

扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码

文章目录1. 去噪扩散概率模型2. 前向扩散3. 反向采样3. 图像条件扩散模型4. 可以考虑改进的点5. 实现代码1. 去噪扩散概率模型 扩散模型是一类生成模型, 和生成对抗网络GAN 、变分自动编码器VAE和标准化流模型NFM等生成网络不同的是, 扩散模型在前向扩散过程中对图像逐步施加噪…

如何为自己的应用选择数据库?有这些考虑因素

节选翻译自 Michal Toiba 的博客 微软前不久宣布推出分布式关系数据库 Azure Cosmos DB for PostgreSQL,使 Azure 成为第一个在单一数据库服务中同时支持关系和 NoSQL(非关系)数据的云平台。这意味着 Azure Cosmos DB 开发者在构建云原生应用…

只需三步,完成ChatGPT微信机器人搭建

大家好,我是可乐。 这两天 Chatgpt 又爆火了,去年12月份刚出来的时候,我写了两篇文章: ①、如何注册Chatgpt? ②、如何将 chatgpt接入微信? 然后沉寂了一个月,没想现在到又火了。本篇文章我…

计算机组成与体系结构 性能设计 William Stallings 第2章 性能问题

2.1 优化性能设计例如,当前需要微处理器强大功能的桌面应用程序包括:图像处理、三维渲染、语音识别、视频会议、多媒体创作、文件的声音和视频注释、仿真建模从计算机组成与体系结构的角度来看,一方面,现代计算机的基本组成与50多…

强大的ChatGpt为企业营销推广提供了全方位的加持

chatgpt,一个火出圈的“聊天机器人”。从写作文,到写代码,似乎没有什么是它干不了的。 ChatGpt在工业中的应用场景有哪些? 在工业领域,它可以用于提高生产效率,缩短生产周期,并帮助工人解决生产过程中的问…

优先级队列(PriorityQueue 和 Top-K问题)

一、PriorityQueue java中提供了两种优先级队列:PriorityQueue 和 PriorityBlockingQueue。其中 PriorityQueue 是线程不安全的,PriorityBolckingQueue 是线程安全的。 PriorityQueue 使用的是堆,且默认情况下是小堆——每次获取到的元素都是…

LeetCode刷题------字符串

LeetCode:344.反转字符串 定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。 var reverseString function(s) {let l -1, r s.len…

Windows下LuaBridge2.8的环境配置及简单应用

Windows下LuaBridge2.8的环境配置及简单应用 LuaBridge2.8下载链接: https://github.com/vinniefalco/LuaBridge/tags 关于Lua的环境配置可参考以下链接(这里不做简述): https://ufgnix0802.blog.csdn.net/article/details/125341…

什么是抗压能力?抗压能力的重要性及提高方法

在现实生活中每个人都面临着或大或小的压力。不论是学习还是工作,没有压力就没有进步和提升,压力可以转化为动力,而扛不住压力那就会导致躺平的结果。在职业的道路上,压力一直都存在,尤其是站在企业人力资源管理的角度…

开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试

开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试如何组织一场微信线上答题考试在线考试是一种非常节约成本的考试方式,考生通过微信扫码即可参加培训考试,不受时间、空间的限制,近几年越来越受企事业单位以及…

Navicat远程连接mysql教程及Navicat报错10061解决办法

文章目录想要远程连接的前提是数据库要配置密码,配置密码参考如下进入要连接的数据库看一下原有的配置,host 和 user修改配置授权root用户进行远程登录配置修改完成后,打开navicat,新建连接点击测试链接,显示连接后点击…

10个自动化测试框架,测试工程师用起来

软件行业正迈向自主、快速、高效的未来。为了跟上这个高速前进的生态系统的步伐,必须加快应用程序的交付时间,但不能以牺牲质量为代价。快速实现质量是必要的,因此质量保证得到了很多关注。为了满足卓越的质量和更快的上市时间的需求&#xf…

ThinkPad笔记本如何拆卸及安装电池

注意:外置电池可以自行拆卸,内置电池如需拆卸建议联系服务商,由工程师协助操作。 外置电池的拆卸方法: 方式一.部分机型只有一个锁扣,将锁扣移动到解锁状态,然后将电池向机身外侧抽出(以T420为例&#xf…

用Qt开发的ffmpeg流媒体播放器,支持截图、录像,支持音视频播放,支持本地文件播放、网络流播放

前言 本工程qt用的版本是5.8-32位,ffmpeg用的版本是较新的5.1版本。它支持TCP或UDP方式拉取实时流,实时流我采用的是监控摄像头的RTSP流。音频播放采用的是QAudioOutput,视频经ffmpeg解码并由YUV转RGB后是在QOpenGLWidget下进行渲染显示。本…

如何使用ModelScope训练自有的远场语音唤醒模型?

就像人和人交流时先会喊对方的名字一样,关键词就好比智能设备的"名字",而关键词检测模块则相当于交互流程的触发开关。 本文介绍魔搭社区中远场语音增强与唤醒一体化的语音唤醒模型的构成、体验方式,以及如何基于开发者自有数据进…

MySQL数据库07——高级条件查询

前面一章介绍了基础的一个条件的查询,如果多条件,涉及到逻辑运算,and or 之类的。就是高级一点的条件查询。本章来介绍复杂的条件搜索表达式。 AND运算符 AND运算符只有当两边操作数均为True时,最后结果才为True。人们使用AND描述…

高性能IO模型:为什么单线程Redis能那么快?

我们通常说Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的。这也是Redis对外提供键值存储服务的主要流程。 但redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。 Redis为什么用单线…

探讨MySQL事务特性和实现原理

一、概念 事务 一般指的是逻辑上的一组操作,或者作为单个逻辑单元执行的一系列操作,一个事务中的所有操作会被封装成一个不可分割的执行单元,这个单元的所有操作要么全部执行成功,要么全部执行失败,只要其中任意一个操…

《Terraform 101 从入门到实践》 第四章 States状态管理

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。 军书十二卷,卷卷有爷名。 为什么需要状态管理 Terraform的主要作用是管理云平台上的资源&#xff…