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

Linux防火墙之--SNAT和DNAT

1.SNAT是什么

SNAT又称源地址转换。源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。

真实环境运用中私网可以通过路由转发,将数据包传送给公网IP地址的服务器,而公网地址无法将相应的数据包回还给私网地址的用户。此时二者之间需要一个媒介,就是一个建立在私网和公网之间的网关服务器,对其之间的数据包进行相应的处理。来完成私网IP与公网IP之间的建立联系 
 

2.DNAT是什么

 DNAT:目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。通常来说,合法地址的数量比起本地内部的地址数量来要少得多。

私网地址只能作为源地址来访问公网IP,而无法作为目标地址被其他主机访问

所以DNAT将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问

简单来说:

SNAT是对源地址转换

DNAT是对目的地址转换

SNAT的典型应用场景

SNAT策略的工作原理

SNAT源地址转换过程:

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

 

如何用iptables实现地址转换

准备任务:

1.准备三台虚拟机

2.给网关服务器添加一张虚拟网卡

3.拓扑:

test1:20.0.0.10 内网

test2:ens33: 20.0.0.254

ens36:12.0.0.254

做SNAT的地址转换

test3:12.0.0.100 外网

过程

关闭防火墙

编辑网卡信息

首先ifconfig查看网卡名称(我这里是ens36)

cd /etc/sysconfig/network-scripts
#进入该路径
cp ifcfg-ens33 ifcfg-ens36
#创建新网卡信息

TYPE=Ethernet
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.254
NETMASK=255.255.255.0
#GATEWAY=20.0.0.2
#DNS1=8.8.8.8

此处不用设置网关,因为要充当内网网关

TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.254
NETMASK=255.255.255.0
#GATEWAY=20.0.0.2
#DNS1=8.8.8.8

客户机配置

TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.10
NETMASK=255.255.255.0
GATEWAY=20.0.0.254
#DNS1=218.2.135.1

web配置

TYPE=Ethernet
DEIVCE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254
#DNS1=8.8.8.8

网卡配置结束后,要通过iptables命令添加

iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10

-t:指定表名

nat:地址转换的表名

-A:添加一条规则,在行尾追加

POSTROUTING:在出本机的时候添加一个地址转换的规则

-s:192.168.233.0/24 指定源IP地址

-j SNAT:指定控制类型

--to 10.0.0.10 所有源IP属于233.0这个网段,只要你是从ens36出来,都会把它们IP地址转换为10.0.0.10

完成之后,  iptables -t nat -vnL查看

最后,网关服务器要同意转发

vim /etc/sysctl.conf

sysctl -p

立即启动

客户端链接web端(内网链接外网)测试

DNAT地址转换

iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80

web端连接客户端测试

实验结束

Linux抓包技术--tcpdump

tcpdump为Linux自带的抓包工具

wireshark只适用于Windows

抓包方式:

1.指定抓包数量

2.动态抓包,一致会获取包,除非人工停止

tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and net 20.0.0.0/24 -w ./target.cap

tcpdump:抓包命令,固定开头

tcp:抓包的协议

-i:经过,只抓经过ens33的数据包

-t:不显示时间戳

-s0:抓完整的数据包

-c:指定抓包的个数

dst port:80 访问的是httpd的80端口

src net:192.168.233.0/24

-w:抓包的数据,保存位置。

firewalld技术

firewalld:centos7自带的,和iptables一样,也是包过滤防火墙

firewalld过滤,通过区域来进行配置

iptables 静态防火墙

firewalld 动态防火墙

firewalld 分为以下几个区域:

  1. trusted :信任区,所有流量都可以传入

  2. public :公共区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,也是firewalld的默认区域。

  3. external:外部区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,默认通过此区域转发的ipv4流量地址,可以进行伪装

  4. home 家庭区域:允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝

  5. internal:内部区域,默认值与home区域的作用相同

  6. work 工作区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝

  7. DMZ 隔离区 非军事区:允许ssh,其他的预定义好配置,其他的全部拒绝

  8. block:限制区,拒绝所有流量

  9. drop:丢弃区域,所有流量都会丢弃

firewalld相关命令

firewall-cmd --list-service

查看区域内允许通过的服务

firewall-cmd --add-service=http --zone=public

添加,浏览器20.0.0.10即可看到是否成功

firewall-cmd --remove-service=http --zone=public

删除

firewall-cmd --add-service=http --add-service=ftp --zone=pubilc

添加多个服务

firewall-cmd --list-services

查看

firewall-cmd --add-service={ftp,http}

添加多个的不同方法

firewall-cmd --add-service={ftp,http} --zone=public --permanent

永久生效

firewall-cmd --remove-service=http --zone=public --permanent

删除永久生效的项

firewall-cmd --zone=public --add-port=80/tcp

根据端口添加

firewall-cmd --zone=public --remove-port=80/tcp

移除

firewall-cmd --zone=指定区域

firewall-cmd --zone=public -add-port={3306,80,21}/tcp

添加多个端口

firewall-cmd --zone=public -add-port=30-35/tcp

添加端口的范围

firewall-cmd --list-all 查看

相关文章:

Linux防火墙之--SNAT和DNAT

1.SNAT是什么 SNAT又称源地址转换。源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多…...

Bean注入方式:@Autowired、@Resource的区别

Autowired 和 Resource 的区别是什么? Autowired 属于 Spring 内置的注解,默认的注入方式为 byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口的实现类)。 这会有…...

软件设计原则 1小时系列 (C++版)

文章目录 前言基本概念 Design Principles⭐单一职责原则(SRP) Single Responsibility PrincipleCode ⭐里氏替换原则(LSP) Liskov Substitution PrincipleCode ⭐开闭原则(OCP) Open Closed PrincipleCode ⭐依赖倒置原则(DIP) Dependency Inversion PrincipleCode ⭐接口隔离…...

数据结构--》解锁数据结构中树与二叉树的奥秘(一)

数据结构中的树与二叉树,是在建立非线性数据结构方面极为重要的两个概念。它们不仅能够模拟出生活中各种实际问题的复杂关系,还常被用于实现搜索、排序、查找等算法,甚至成为一些大型软件和系统中的基础设施。 无论你是初学者还是进阶者&…...

23.4 Bootstrap 框架5

1. 背景颜色 1.1 背景颜色样式 在Bootstrap 5中, 可以使用以下类来设置背景颜色: * 1. .bg-primary: 设置为主要的背景颜色(#007bff, 深蓝色). * 2. .bg-secondary: 设置为次要的背景颜色(#6c757d, 灰色). * 3. .bg-success: 设置为成功的背景颜色(#28a745, 绿色). * 4. …...

Spring源码解析——IOC属性填充

正文 doCreateBean() 主要用于完成 bean 的创建和初始化工作,我们可以将其分为四个过程: 最全面的Java面试网站 createBeanInstance() 实例化 beanpopulateBean() 属性填充循环依赖的处理initializeBean() 初始化 bean 第一个过程实例化 bean在前面一篇…...

寒露到了,冬天还会远吗?

寒露惊秋晚,朝看菊渐黄。 日复一日间,光影如梭,我们便很快将告别了秋高气爽,白日将变得幽晦, 天寒夜长,风气萧索,雾结烟愁。 还没好好体会秋高气爽,寒露就到了。 今天晚上9点多,我们…...

科普②| 大数据有什么用?大数据技术的应用领域有哪些?

1、提供个性服务很多人觉得大数据好像离我们很远,其实我们在日常所使用的智能设备,就需要大数据的帮助。比如说我们运动时候戴的运动手表或者是运动手环,就可以在我们平时运动的时候,帮助我们采集运动数据及热量消耗情况。进入睡眠…...

golang的切片使用总结二

如果没看golang切片的第一篇总结博客 golang的切片使用总结一-CSDN博客 ,请浏览之 举例9:make([]int, a, b)后访问下标a的元素 s : make([]int, 10, 12) v : s[10] fmt.Printf("v:%v", v) 打印结果: panic: runtime error: index …...

tailscale自建headscale和derp中继

tailscale derp中继服务简介 tailscale是一个基于WireGuard的零配置软件,它可以轻松地在多台设备之间建立点对点加密连接。 derp服务器是tailscale网络的重要组成部分。它作为tailscale客户端之间的中继,帮助客户端找到并连接到其他客户端设备。 但Tailscale 官方…...

布隆过滤器的使用

布隆过滤器简介 Bloom Filter(布隆过滤器)是一种多哈希函数映射的快速查找算法。它是一种空间高效的概率型数据结构,通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 布隆过滤器的优势在于,利用很少的空…...

Web开发-单例模式

目录 单例模式介绍代码实现单例模式 单例模式介绍 单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。单例模式可以通过private属性实现。通过将类的构造函数设为private,可以防止类在外部被实例化。单例模式通…...

MySQL:温备份和恢复-mysqldump (4)

介绍 温备:同样是在数据库运行的时候进行备份的,但对当前数据库的操作会产生影响。(只可以读操作,不可以写操作) 温备份的优点: 1.可在表空间或数据文件级备份,备份时间短。 2.备份时数据库依然…...

【力扣每日一题】2023.10.8 股票价格波动

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 这道题是程序设计题,要我们实现一个类,一共是四个功能,第一个是给一个时间戳和价格,表示该…...

Linux隐藏文件或文件夹

在Linux中,以点(.)开头的文件或文件夹是隐藏文件或隐藏文件夹。要创建一个隐藏文件或文件夹,可以使用以下命令: 创建隐藏文件: touch .filename这将在当前目录下创建一个名为 “.filename” 的隐藏文件。…...

leetcode - 365周赛

一&#xff0c;2873.有序三元组中的最大值 I ​ 该题的数据范围小&#xff0c;直接遍历&#xff1a; class Solution {public long maximumTripletValue(int[] nums) {int n nums.length;long ans 0;for(int i0; i<n-2; i){for(int ji1; j<n-1; j){for(int kj1; k<…...

为什么mac上有的软件删除不掉?

对于Mac用户来说&#xff0c;软件卸载通常是一个相对简单的过程。然而&#xff0c;有时你可能会发现某些软件似乎“顽固不化”&#xff0c;即使按照常规方式尝试卸载&#xff0c;也依然存在于你的电脑上。这到底是为什么呢&#xff1f;本文将探讨这一问题的可能原因。 1.卸载失…...

【vue3】wacth监听,监听ref定义的数据,监听reactive定义的数据,详解踩坑点

假期第二篇&#xff0c;对于基础的知识点&#xff0c;我感觉自己还是很薄弱的。 趁着假期&#xff0c;再去复习一遍 之前已经记录了一篇【vue3基础知识点-computed和watch】 今天在学习的过程中发现&#xff0c;之前记录的这一篇果然是很基础的&#xff0c;很多东西都讲的不够…...

跨境电商如何通过软文建立品牌形象?

在全球产业链结构重塑后的今天&#xff0c;越来越多的企业意识到想要可持续发展&#xff0c;就需要在建立品牌形象&#xff0c;在用户心中留下深刻印象&#xff0c;那么应该如何有效建立品牌形象呢&#xff1f;可以利用软文来打造品牌形象&#xff0c;接下来媒介盒子就告诉大家…...

我做了一个简易P图(参数图)分析软件

P图(即参数图&#xff0c;Parameter Diagram)&#xff0c;是一个结构化的工具&#xff0c;帮助大家对产品更好地进行分析。 典型P图格式 P图最好是和FMEA软件联动起来&#xff0c;如国可工软的FMEA软件有P图分析这个功能。 单纯的P图分析软件很少&#xff0c;为了方便做P图分…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...