shell编程之SNAT与DNAT的应用

news2024/11/15 10:33:24

SNAT与DNAT的应用

  • 一、SNAT的介绍
    • 1.SNAT概述
    • 2.SNAT源地址转换过程
    • 二、SNAT转换
  • 三、DNAT的介绍
    • 1.DNAT概述
    • 2.DNAT转换前提条件
  • 四、DNAT的转换
  • 五、防火墙规则的备份和还原
  • 六、tcpdump抓包工具的运用

一、SNAT的介绍

SNAT(SNAT)一般指源地址转换

1.SNAT概述

  • 源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。
  • SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有不能早Internet中正常路由)
  • SNAT原理:修改数据包的源地址。
  • 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 

2.SNAT源地址转换过程

1.数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP。
2.当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP。
3.当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分。

二、SNAT转换

固定的公网IP地址:
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10

非固定的公网IP地址(共享动态IP地址):
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens33 -j MASQUERADE

三、DNAT的介绍

DNAT 的全称为Destination Network Address Translation目的地址转换,常用于防火墙中

1.DNAT概述

  • DNAT:目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。通常来说,合法地址的数量比起本地内部的地址数量来要少得多。
    私网地址只能作为源地址来访问公网IP,而无法作为目标地址被其他主机访问
    所以DNAT将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问
  • DNAT 应用环境:在Internet中发布位于局域网内的服务器
  • DNAT原理:修改数据包的目的地址。

2.DNAT转换前提条件

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

四、DNAT的转换

  1. DNAT转换1:发布内网的Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.30.10
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.30.10
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.30.10                            	

  1. DNAT转换2:发布时修改目标端口
#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.10:22

#在外网环境中使用SSH测试
ssh -p 250 root@12.0.0.1

注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回
主机型防火墙 主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口
网络型防火墙 主要使用 FORWARD 链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可

五、防火墙规则的备份和还原

`导出(备份)所有表的规则`
iptables-save > /opt/ipt.txt

`导入(还原)规则`
iptables-restore < /opt/ipt.txt

`将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则`
iptables-save > /etc/sysconfig/iptables  
systemctl stop iptables			##停止iptables服务会清空掉所有表的规则
systemctl start iptables		##启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则

在这里插入图片描述

六、tcpdump抓包工具的运用

  • tcpdump是Linux系统中自带抓包工具
    tcpdump tcp -i ens32 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.30.0/24 -w ./target.cap

常用选项

项目Value
tcpip、icmp、arp、rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。
-i ens33只抓经过接口ens33的包。
-t不显示时间戳
-s0抓取数据包时默认抓取长度为68字节。加上"-s 0"后可以抓到完整的数据包。
-c 100只抓取100个数据包。
dst port ! 22不抓取目标端口是22的数据包。
src net 192.168.1.0/24数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机。
-w ./target.cap保存成cap文件,方便用ethereal (即wireshark)分析。

在这里插入图片描述

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

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

相关文章

VMware安装Centos7图形化GUI系统全过程

1、打开vmware&#xff0c;点击文件然后新建虚拟机 2、然后自定义直接下一步 3、下一步 4、这里我们稍后安装操作系统&#xff0c;继续下一步 5、随后选择Centos7 64位&#xff0c;继续下一步 6、选择你所需要安装的虚拟机存放的位置&#xff0c;虚拟机名字看自己来设置&#x…

docker-安装minio集群

目录 1.服务器列表 2.NTP时间同步 1.服务端 minio_01配置 2.客户端配置-minio_02、minio_03、minio_04配置 3.Minio集群 1.在对应的主机执行对应的语句 2.创建文件夹 3.创建容器 4.访问 5.查看集群 4.nginx代理集群192.168.1.3 1.nginx安装 2.访问代理 1.服务器列…

[web]关于过滤器Filter

前言 为了避免在没有登录的情况下也可以通过路径访问到所有页面&#xff0c; 如果在每一个需要请求的资源里面都通过Session去判断有没有登录的用户对象就需要书写大量的判断代码&#xff0c;此时就可以用到Filter过滤器 作用 让请求的某些资源在之前或之后经过过滤器&#xff…

uni-app路由配置使用和页面跳转传参

uni-app路由配置使用和页面跳转传参 uni-app路由配置使用和页面跳转传参 文章目录 uni-app路由配置使用和页面跳转传参前言一、组件式路由跳转传参二、函数式路由跳转传参总结 前言 UNI-APP学习系列之路由配置使用和页面跳转传参 一、组件式路由跳转传参 组件式路由跳转 示例…

Java设计模式(一)

系列文章目录 单一职责原则 接口隔离原则 依赖倒转原则 文章目录 系列文章目录前言一、单一职责原则1.单一职责原则注意事项和细节 二、接口隔离原则1.接口隔离原则基本介绍(Interface Segregation Principle)2.应传统方法的问题和使用接口隔离原则改进 三、依赖倒转原则1.依赖…

【Linux】——调试器-gdb的使用

序言&#xff1a; 本期&#xff0c;我将带领大家学习的关于linux下的调试器gdb的使用&#xff0c;废话不多说跟着我一起去看看吧&#xff01;&#xff01; 目录 前言 &#xff08;一&#xff09;背景介绍 1、debug模式和release模式 2、为什么Release不能调试但DeBug可以调…

nDreams CEO:是时候打破市场对VR游戏的错误认知了

自Quest系列头显问世以来&#xff0c;VR游戏市场仿佛被注入了一剂强心针&#xff0c;发展速度远超Rift时代。从Quest 1到现在&#xff0c;已经过去4年左右&#xff0c;现在VR游戏市场又走到了哪呢&#xff1f;在GDC 2023上&#xff0c;资深VR游戏工作室和发行商nDreams公布了一…

django-vue-admin-pro 使用

地址&#xff1a; GitHub - dvadmin-pro/django-vue-admin-pro 一、准备工作 Python > 3.8.0 (推荐3.9版本) nodejs > 14.0 (推荐最新) Mysql > 5.7.0 (可选&#xff0c;默认数据库sqlite3&#xff0c;推荐8.0版本) Redis(可选&#xff0c;最新版)项目运行及部署 |…

Android crash 流程详解(一):JE

源码基于&#xff1a;Android R 0. 前言 App crash(全称为 Application crash)&#xff0c;又分 java crash 和 native crash&#xff0c;又称 java layer exception(JE) 和 native layer exception(NE)。对于 crash 在开发过程中或多或少都会遇到&#xff0c;本文将整理总结 …

Shell脚本攻略:shell函数应用

目录 一、理论 1.shell函数 2.函数传参 3.函数变量的作用范围 4.递归 5.函数位置变量与脚本位置变量区别 6.创建库 二、实验 1.实验一 一、理论 1.shell函数 &#xff08;1&#xff09;概念 将命令序列按格式写在一起&#xff0c;可方便重复使用命令序列。 ① 避免…

JetBrains的Java集成开发环境IntelliJ 2023版本在Win10系统的下载与安装配置教程

目录 前言一、IntelliJ 安装二、使用配置总结 前言 IntelliJ IDEA Ultimate是一款功能强大的Java集成开发环境&#xff08;IDE&#xff09;。它提供了丰富的功能和工具&#xff0c;可以帮助开发人员更高效地编写、调试和部署Java应用程序。 IntelliJ IDEA Ultimate的主要特点…

Benewake(北醒) 快速实现TFmini-Plus-IIC与电脑通信的操作说明

目录 1. 概述2. 测试准备2.1 工具准备2.2通讯协议转换 3. IIC通讯测试3.1 引脚说明3.2 测试步骤3.2.1 TFmini-Plus-IIC 与 PC 建立连接3.2.2 获取测距值3.2.3 更改 slave 地址 1. 概述 通过本文档的概述&#xff0c;能够让初次使用测试者快速了解测试 IIC 通信协议需要的工具以…

48. 旋转图像

48. 旋转图像 C代码&#xff1a; void rotate(int** matrix, int matrixSize, int* matrixColSize){int m matrixSize;int n matrixColSize[0];int arr[m*n];int arrTop 0;memset(arr, 0, sizeof(int) * m * n);for (int i 0; i < m; i) {for (int j 0; j < n; j) …

【Springcloud】分布式搜索elasticsearch

文章目录 1、ElasticSearch 1、ElasticSearch 先看下翻译&#xff1a; elasticsearch是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 项目在运行的时候会产生海量的日志信息&#xff0c;而elasticsearch结合kibana、Logstash、Beats&am…

2023免费的苹果手机备份app软件iMazing

苹果备份APP怎么备份&#xff1f;一般情况下&#xff0c;苹果手机备份照片、短信等可以使用iCloud备份。虽然App也可以使用iCloud备份&#xff0c;但是App数据一般较多&#xff0c;需要较大的iCloud存储空间&#xff0c;而免费的iCloud存储空间只有5GB&#xff0c;很多人都不想…

[C++] 继承和多态

Be water my friend. 一.关于继承(inheritance) 基础知识&#xff1a; 继承的定义格式&#xff1a; 继承方式的比较&#xff1a; 继承中的作用域&#xff1a; 基类和派生类对象赋值转换 : 派生类的默认成员函数 关于继承的补充 如何防止继承的发生(final关键字…

ThreeJS教程:CSS3批量标注多个标签

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 CSS3批量标注多个标签 下面下工厂为例&#xff0c;使用CSS3DRenderer批量渲染多个HTML元素标签。 CSS3渲染器基本代码 CSS3渲染器代码和上节课内容一样设置即可。 // 引入CSS3渲…

掌握哪些测试技术才能说自己已经学成了?

一、过硬的基础能力 其实所有的测试大佬都是从底层基础开始的&#xff0c;随着时间&#xff0c;经验的积累慢慢变成大佬。要想稳扎稳打在测试行业深耕&#xff0c;成为测试大牛&#xff0c;首当其冲的肯定就是拥有过硬的基础&#xff0c;所有的基础都是根基&#xff0c;后期所…

Docker利用DockerFile创建部署NVIDIA+PyTorch容器

Docker利用DockerFile创建部署NVIDIAPyTorch容器 1、创建 Dockerfile2、在 Dockerfile 中添加关键字和命令3、使用 Docker Build 命令构建镜像4、验证和测试 Docker 映像 1、创建 Dockerfile 首先在用户的主目录下创建一个名为 mycode 的文件夹&#xff0c;然后创建 Dockerfil…

马斯克:我是 Rust 粉丝,但为了性能我会毫不犹豫选择 C/C++

作为一个几乎时刻处于风口浪尖上的“网络红人”&#xff0c;特斯拉 CEO 埃隆马斯克(Elon Musk)被外界评价为“致力于从人工智能手中拯救人类”的钢铁侠。近期&#xff0c;这位大佬又因不少“出格”言论而在社交媒体上引发热议 —— 在一家 AI 公司谈论编程“error messages”的…