Linux——SNAT与DNAT的应用

news2025/1/12 6:09:11

一、SNAT的介绍

1,SNAT概述

SNAT(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在转换时会自动分配端口,不同内网主机会通过端口号进行区分。

 

3,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

3,DNAT的转换

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                            	

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

字段说明 

字段说明
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/561208.html

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

相关文章

2024考研《数据结构》复习笔记总览(文末有彩蛋)

前言 数据结构是是计算机专业的必修课&#xff0c;也是计算机考研的必学书目。 随着科技的飞速发展&#xff0c;数据结构的基础性地位不仅没有动摇&#xff0c;反而由于近年来算法工程师的高薪火爆&#xff0c;使得数据结构的重视程序空前高涨。 索引目录 数据结构考研笔记第…

电动力学专题:天线阵简介

电动力学专题&#xff1a;天线阵天线阵是指由多个天线按一定方式组合而成的一个系统&#xff0c;用于接收或发射无线电信号。天线阵可用于雷达、通信、导航和定位等领域&#xff0c;能够大幅度提高系统的灵敏度和方向性&#xff0c;同时也能提高系统的抗干扰能力和分辨率。在实…

fastposter v2.15.0 从繁琐到简单,简洁好用的海报生成器

fastposter v2.15.0 从繁琐到简单&#xff0c;简洁好用的海报生成器 从繁琐到简单&#xff0c;简洁好用的海报生成器 我很高兴向大家推荐一款令人兴奋的工具——Fastposter海报生成器。作为一名开发者&#xff0c;我们深知在项目中创建专业级海报的重要性&#xff0c;但常常面…

MATLAB仿真建模:Simulink和Stateflow的应用和模型设计

第一章&#xff1a;引言 在当今的科学研究和工程领域中&#xff0c;仿真建模是一项非常重要的技术。通过仿真建模&#xff0c;我们可以在计算机上创建模拟真实系统行为的模型&#xff0c;并通过模型的分析和测试来优化系统设计。MATLAB是一种广泛应用于科学和工程领域的强大工…

FPGA——HLS入门-LED闪烁仿真

系列文章目录 文章目录 系列文章目录一、HLS介绍1、什么是HLS2、与VHDL/Verilog有什么关系?3、关键技术局限性 二、Vivado HLS - LED闪烁仿真1、项目配置2、C仿真3、联合仿真 三、总结 一、HLS介绍 1、什么是HLS HLS就是高综合&#xff08;High level Synthesis&#xff09;…

如何开发微信小程序,后端,前端,小程序端,如何部署到腾讯云托管

开发微信小程序是一项非常有趣的任务&#xff0c;它涉及到前端、后端和小程序端的开发。在本文中&#xff0c;我们将介绍如何开发微信小程序&#xff0c;并将其部署到腾讯云托管。 一、前端开发 前端开发是微信小程序开发的第一步。在这一步中&#xff0c;我们需要使用微信小程…

分享几个网内可用的免费的ChatGPT网页版

Chatgpt: 与AI聊天的新体验 随着数字生活的普及和人工智能技术的快速发展&#xff0c;越来越多人希望与机器进行真挚的交流&#xff0c;体验身临其境的感觉。基于这个想法&#xff0c;我们推出了Chatgpt&#xff0c;一款基于自然语言处理技术和深度学习算法的智能聊天机器人&a…

Spark基础学习笔记----RDD检查点与共享变量

零、本讲学习目标 了解RDD容错机制理解RDD检查点机制的特点与用处理解共享变量的类别、特点与使用 一、RDD容错机制 当Spark集群中的某一个节点由于宕机导致数据丢失&#xff0c;则可以通过Spark中的RDD进行容错恢复已经丢失的数据。RDD提供了两种故障恢复的方式&#xff0c…

Linux防火墙之firewalld基础

一、firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具&#xff0c;取代了之前的iptables防火墙&#xff0c;也是工作在网络层&#xff0c;属于包过滤防火墙。 firewalld和iptables都是用来管理防火墙的工具&#xff08;属于用户态&#xff09;来定义防火墙的…

数据结构 之 二叉搜索树 结构

二叉树搜索树的基本属性&#xff1a; 如图所示&#xff1a;二叉搜索树有四个最基本的属性&#xff1a;指向节点的根&#xff08;root&#xff09;&#xff0c;节点中的键&#xff08;key&#xff09;、左指针&#xff08;right&#xff09;、右指针&#xff08;right&#xff…

DELL PowerVault MD3600f存储维修 控制器更换 电池更换

MD3600f 系列存储阵列介绍 MD3600f 系列是采用 2U 机架固定的外部独立磁盘冗余阵列 (RAID) 存储阵列&#xff0c;可容纳多达 12 个 3.5 英寸或 24 个 2.5 英寸的 6.0-Gbps 串行连接SCSI (SAS) 磁盘。 MD3600f 系列存储阵列可以使用 MD1200 系列扩展机柜以菊花链式连接&#xff…

解决:在 Router 中父级未引入单文件组件而且 children 中的单文件组件不能在页面展示的问题

1、问题展示&#xff1a; 其一、问题描述&#xff1a; 在 router 中父级未引入单文件组件&#xff0c;而只是写了其它配置&#xff0c;但在其 children 中写了配置且引入了单文件组件而未能在页面中展示&#xff1b; 其二、代码&#xff1a; // 某一块的静态路由管理 {path…

2021下半年

2021下半年 a d a c b 阶码是纯整数&#xff0c;尾数是纯小数 对于阶码&#xff1a; 对于尾数&#xff1a; 选b c c a c b c b 归属于受委托方 a b c a 前向传播 反向传播&#xff0c;求关键路径 b b 关键路径上的活动松弛时间为0 c 中缀式&#xff1a;需…

chatgpt赋能Python-python_namedtuple

Python中的namedtuple 在Python中&#xff0c;namedtuple是一个方便且易于使用的数据结构&#xff0c;可以有效地处理元组数据。 它是Python标准库collections中一个实用的类&#xff0c;可以创建一个具有命名属性的元组&#xff0c;类似于一个简单的类对象。namedtuple的属性…

Linux防火墙iptables(下)

一、通用匹配 1&#xff0c;协议匹配 2&#xff0c;地址匹配 3&#xff0c;接口匹配 二、隐含匹配 1.端口匹配 2&#xff0c;TCP标志位匹配 3&#xff0c;ICMP类型匹配 ICMP类型可以是字符串、数字代码 ICMP类型含义Echo-Request &#xff08;代码为8&#xff09;表示请求…

设计模式之规约模式

设计模式之规约模式 引言规约模式案例改造 参考 引言 规约模式的英文是Specification Pattern&#xff0c;Specification直译过来是要求、技术说明、明确的意思。光看名字估计大家都是一脸懵逼&#xff0c;根本不知道这个设计模式大概会是一个什么样子。这也是设计模式的一个通…

33.Mybatis-Plus

一、Mybatis-Plus。 &#xff08;1&#xff09;简介。 &#xff08;2&#xff09;快速开始_准备工作。 对于Mybatis整合MP有常常有三种用法&#xff0c;分别是MybatisMP、SpringMybatisMP、Spring BootMybatisMP。 &#xff08;2.1&#xff09;创建数据库以及表。 1.创建数…

chatgpt赋能Python-python_lanbda函数

Python Lambda函数&#xff1a;快速、灵活的编程利器 Python是当前最流行的编程语言之一&#xff0c;而在Python中&#xff0c;Lambda函数是一项十分强大的功能&#xff0c;它可以帮助开发者在编写代码时更快地完成任务&#xff0c;提高代码的灵活性和可读性。本文将介绍Pytho…

【Linux】Linux小程序(进度条)、git命令行的使用及gdb的使用

&#x1f601;作者&#xff1a;日出等日落 &#x1f514;专栏&#xff1a;Linux 辛勤的蜜蜂永没有时间悲哀。 ——布莱克 目录 \r和\n的区别&#xff1a; 进度条小程序 git 命令行 Linux调试器&#xff1a;…

Linux-模拟一个简单的shell

什么是shell外壳&#xff1f;就是操作系统给我们的一个命令行解释器&#xff0c;在Linux系统中&#xff0c;它的shell叫做bash。 那么bash本质是什么呢&#xff1f; 本质就是一个文件&#xff0c;一个进程。 万物皆文件 每个操作系统的shell都是很复杂的&#xff0c;想要…