当前位置: 首页 > news >正文

Linux系统安全:NAT(SNAT、DNAT)

目录

一.NAT

二.SNAT

三.DNAT


一.NAT

NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链

请求报文:修改源/目标IP,

响应报文:修改源/目标IP,根据跟踪机制自动实现

NAT的实现分为下面几种类型:

SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP

DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP

PNAT: port nat,端口和IP都进行修改

二.SNAT

SNAT:基于nat表的target,适用于固定的公网IP

SNAT选项:

    to-source ipaddr[-ipaddr]]

    random

MASQUERADE:基于nat表的target,适用于动态的公网IP,如:拨号网络

MASQUERADE选项:

    to-ports port[-port]

    random

(1)SNAT实验目的

公司内有2台机器,但是只有一个公网ip,利用SNAT技术实现2台私网地址都可以访问公网。

(2)SNAT实操环境准备

环境:

centos7-1(内网服务器)  IP地址 192.168.47.100
centos7-2(网关服务器)  ens33IP地址(nat):192.168.47.3   ens36IP地址(仅主机):12.0.0.1
centos7-3(外网服务器)  ens33IP地址(仅主机):12.0.0.12

目的:内网服务器能够ping通外网服务器

步骤:

①网关服务器添加网卡

②设置外网服务器的网卡模式

③修改外网服务器的IP地址,并重启network服务

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@localhost ~]# systemctl restart network

[root@localhost ~]# ifconfig ens33

把ip改成12.0.0.12,子网掩码为255.255.255.0

④修改内网服务器的网关,并重启network服务

[root@zrsb ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33


[root@zrsb ~]# systemctl restart network

[root@zrsb ~]# route -n

⑤为网关服务器的外网网卡配置IP地址,并重启network服务

#复制ens33配置文件给ens36网卡,新增网卡不会有配置文件

[root@xzq ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36

ens36配置文件修改:将UUID此行删除,修改ip

⑥使用内网服务器ping外网服务器地址,作为SNAT配之前的参照

⑦在网关服务器上配置SNAT

⑨网关服务器开启路由转发功能,编辑/etc/sysctl.conf文件

vim /etc/sysctl.conf

 

⑨使用内网服务器ping外网服务器,测试连通性

实验结果:

不经过nat的地址为内网服务器的地址,使用虚拟机环境才会出现这种情况,生成环境是不通的。经过nat之后的地址是公司的公网ip地址,由网关服务器iptables规则SNAT实现。

三.DNAT

DNAT原理与应用:
DNAT应用环境:在Internet中发布位于局域网内的服务器
DNAT原理:目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映谢。

DNAT转换前提条件:
1.局域网的服务器能够访问Internet
2.网关的外网地址有正确的DNS解析记录
3. Linux网关开启IP路由转发
 

DNAT实际操作:

步骤思路:

①首先给三台机器做一个SNAT,原因是做DNAT之后内网服务器(7-1)需要通过SNAT给公网的用户返回数据包。

②在内网服务器(7-1)上安装一个httpd服务并开启,作为内网的业务服务器。

③网关服务器(7-2)上配置DNAT规则。

(1)在内网服务器上搭建httpd服务,并撰写index.html初始网页,然后启动httpd服务

[root@zrsb ~]# vim /var/www/html/index.html
[root@zrsb ~]# systemctl start httpd.service
[root@zrsb ~]# systemctl status httpd.service

(2)在网关服务器上设置DNAT规则

(3)使用外网服务器访问内网的httpd服务

 

相关文章:

Linux系统安全:NAT(SNAT、DNAT)

目录 一.NAT 二.SNAT 三.DNAT 一.NAT NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链 请求报文:修改源/目标IP, 响应报文:修改源/目标IP,根据…...

【数据库】MySQL存储过程:提升数据库性能和操作效率的利器

在数据库管理系统中,存储过程是一种重要的数据库对象,它允许将一组复杂的SQL语句组合起来,形成一个独立的单元进行重复使用。存储过程可以极大地提高数据库的性能和操作效率,降低网络流量,减轻系统负载。本文将深入探讨…...

rust写一个多线程和协程的例子

当涉及到多线程和协程时,Rust提供了一些非常强大的工具,其中最常用的库之一是tokio,它用于异步编程和协程。下面我将为你展示一个简单的Rust程序,演示如何使用多线程和协程。 首先,你需要在你的项目的Cargo.toml文件中…...

react18+antd5.x(1):Notification组件的二次封装

antdesign已经给我们提供了很好的组件使用体验,但是我们还需要根据自己的项目业务进行更好的封装,减少我们的代码量,提升开发体验 效果展示 开起来和官网的使用没什么区别,但是我们在使用的时候,进行了二次封装,更利于我们进行开发 MyNotification.jsx,是我们的业务页面…...

jenkins运行pytest测试用例脚本报错:没有权限,无法写日志PermissionError:[Error 13]Permission denied

报错信息: PermissionError:[Error 13]Permission denied:‘/var/jenkins_home/workspace/deleverySystem/Delivery_System/out_files/logs/waimai_20230823.log’ 解决方法: 在jenkins容器内部输入 chmod -R 777 /var/jenkins_home/works…...

数据结构 day1

1>x.mind 2>间接定义结构体数组,进行4种方式的定义和初始化 3>定义结构体存储10辆车(车的信息:品牌、单价、颜色) 1.定义函数,实现循环输入 2.定义函数,实现排序 3.定义函数,计算红色车…...

湖北咸宁农业三维扫描数字化农业3d打印制造应用-CASAIM中科广电

农业是人类衣食之源、生存之本,是一切生产的首要条件,CASAIM在农业三维扫描和3d打印应用上有丰富经验。 1.三维扫描技术在农业领域的应用 CASAIM三维扫描是集光学、机电和计算机技术于一体的高新无损检测技术,能够对实物的空间外形、结构乃…...

Jenkins的定时任务配置

jenkins配置定时任务位置(点击日程表的问好可查看语法配置) jenkins的定时任务的参数 # 定时任务参数(每个参数之间使用tab键或空格分隔)MINUTE HOUR DOM MONTH DOW 参数解释取值范围 MINUTE 分钟0-59HOUR小时0-23DOM一月的天数1-31MONTH月份1-12DOW 一周的天数0…...

THINKPHP 微联云投票系统源码独立版 + 支持刷礼物

THINKPHP 微联云投票系统源码独立版 支持刷礼物 nginxphp7.2以上 mysql5.6以上 简单测试后台基本没什么问题,暂时发现H5前端有bug,自行修复。...

Mongodb两种启动方法

一、命令行启动 1.修改存放数据库的位置 说明:E:\data\mongodb;我在E盘创建的文件夹mongodb mongod --dbpathE:\data\mongodb 2.成功启动 说明:默认端口27017,代表已经启动成功 ,并在mongodb自动创建文件 二、配置项…...

Python:列表的浅拷贝与深拷贝

在python语言中,因为其面向对象的特性,在进行列表拷贝时可能会出现一些意想不到的结果,涉及到列表的浅拷贝和深拷贝相关问题,本文将对其进行总结。 首先我们来看以下代码。 my_list [1, 2, 3] your_list my_list your_list[0] …...

OnePlus Open可折叠手机:规格、价格、发布日期等详细信息汇总!

我们知道OnePlus可折叠手机即将问世,无论它是否被命名为OnePlus Open。我们迫不及待地想让它到来,为该公司再添一根弦,为最好的可折叠手机增添一个新的竞争对手。 OnePlus以前没有生产过任何可折叠产品,但它确实拥有合作伙伴公司Oppo的丰富知识,并可以向三星、摩托罗拉和…...

SQL 数据库

安装配置 【1】 MySQL安装配置教程(超级详细、保姆级) 【2】 MySQLNavicat安装配置教程(超级详细、保姆级) 学习资料 【戴师兄】SQL入门免费教程 刷题链接:https://share.mubu.com/doc/4BHMMbbvIMb 学习笔记&#xf…...

【算法系列篇】滑动窗口

文章目录 前言什么是滑动窗口1.长度最小的子数组1.1 题目要求1.2 做题思路 1.3 Java代码实现2.无重复字符的最长子串2.1 题目要求2.2 做题思路2.3 Java代码实现 3.最大连续1的个数 III3.1 题目要求3.2 做题思路3.3 Java代码实现 4.将x减到0的最小操作数4.1 题目要求4.2 做题思路…...

多维时序 | MATLAB实现BiTCN-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现BiTCN-BiGRU-Attention多变量时间序列预测。 模型描…...

Docker容器与虚拟化技术:Docker compose部署LNMP

目录 一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.准备Nginx镜像 4.准备MySQL容器 5.准备PHP镜像 6.上传wordpress软件包 7.编写docker-compose.yml 8.构建与运行docker-compose 9.启动 wordpress 服务 10.浏览器访问 11.将运行中的 docker容器保存为 doc…...

高性能服务器Nodejs操作Mysql数据库

目录 1 Node 操作 mysql1.2 操作 mysql 数据库 2 Web 开发模式2.1 服务端渲染2.2 前后端分离2.3 如何选择 3 身份认证3.1 Session 认证机制3.2 JWT 认证机制 1 Node 操作 mysql 数据库和身份认证 配置 mysql 模块 安装 mysql 模块 npm install mysql建立连接 const mysql …...

ffmpeg将rtsp流转成mp4

命令行版本 ffmpeg -y -i "rtsp://你的rtsp地址" -vcodec copy -f mp4 d:/1.mp4中间的rtsp网址一定要加上双引号,避免出现url有特殊字符的问题 java代码版本 如果不支持tcp协议,去掉下面两个参数即可,加上这两个参数是因为ffmpeg默认使用ud…...

第十四天|层序遍历、226.翻转二叉树 (优先掌握递归)、101. 对称二叉树 (优先掌握递归)

层序遍历 题目链接:102. 二叉树的层序遍历 - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(n…...

如何使用装rancher安装k8s集群(k8s集群图形化管理工具)

前言 kubernetes集群的图形化管理工具主要有以下几种: 1、 Kubernetes Dashborad: Kubernetes 官方提供的图形化工具 2、 Rancher: 目前比较主流的企业级kubernetes可视化管理工具 3、各个云厂商Kubernetes集成的管理器 4、 Kuboard: 国产开源Kubernetes可视化管理…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

【位运算】消失的两个数字(hard)

消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

day36-多路IO复用

一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...