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

iptablese防火墙【SNAT和DNAT】

目录

1.SNAT策略及应用

1.1SNAT原理与应用

1.2 SNAT策略的工作原理

1.3 实验操练

2.DNAT策略

2.1 DNAT策略的概述

2.2 DNAT原理与应用

2.3 实验操练

1.SNAT策略及应用

1.1SNAT原理与应用

SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由)
SNAT原理:修改数据包的源地址

SNAT转换前提条件:
1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址
2.Linux网关开启I

1.2 SNAT策略的工作原理

未作SNAT转换时的情况 

 进行SNAT转换后的情况 

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

ptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to-source 12.0.0.1-12.0.0.10内网IP	     出站 外网网卡                 外网IP或地址池		

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

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j MASQUERADE

小知识扩展:
一个IP地址做SNAT转换,一般可以让内网 100到200 台主机实现上网。

 

1.3 实验操练

实验条件说明: 

网关服务器:CentOS 7-1

内网客户端主机1:CentOS 7-2

内网客户端主机2:CentOS 7-3

外网服务端模拟:CentOS 7-4

 注意

切记所有主机、服务端以及网关服务器都需要关闭防火墙,并禁止开机自启动功能;

需要在所有主机和服务器上清空iptables的所有规则以及iptables中nat表的所有规则

[root@localhost ~]# systemctl disable --now firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)[root@localhost ~]# iptables -F && iptables -t nat -F #清楚所有iptables规则

网关服务器centos7-1 


[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1#添加,开启路由转发功能                       

SNAT    内网 --> 外网   转换源地址
iptables  -t nat  -A POSTROUTING  -s 内网的源地址/网段  -o 出站网卡  -j SNAT  --to 要转换的公网源地址
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens35 -j SNAT --to 12.0.0.30

设置ens33 内网接口

 ens35外网地址

 内网客户端主机:CentOS 7-2

内网客户端主机2:CentOS 7-3 

 外网服务端模拟:CentOS 7-4

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=14387e34-4bca-4d9a-9e88-2d393a09e8f7
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.12
NETMASK=255.255.255.0
GATEWAY=12.0.0.30
#DNS1=192.168.80.2
[root@localhost network-scripts]# systemctl restart network
[root@localhost yum.repos.d]# yum install -y httpd
[root@localhost network-scripts]#  systemctl start httpd
[root@localhost network-scripts]# systemctl status httpd
● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)Active: active (running) since 三 2024-05-22 21:29:42 CST; 3s ago

 

抓包 

tcpdump -i ens33 -s 0 -w ./test2.cap

 

验证实验结果,私网地址转换为公网地址

2.DNAT策略

2.1 DNAT策略的概述

 


2.2 DNAT原理与应用

DNAT 应用环境:在Internet中发布位于局域网内的服务器
DNAT原理:修改数据包的目的地址。
DNAT转换前提条件:
1.局域网的服务器能够访问Internet
2.网关的外网地址有正确的DNS解析记录
3.Linux网关开启IP路由转发

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1     sysctl -p      #卸载

DNAT转换1:发布内网的Web服务

#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.80.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11入站 外网网卡  外网IP                                               内网服务器IPiptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11-192.168.80.20


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.11:22
yum -y install net-tools 		#若没有 ifconfig 命令可提前使用 yum 进行安装
ifconfig ens33

注意:使用DNAT时,同时一般要配合SNAT使用,才能实现响应数据包的正确返回

小知识扩展
主机型防火墙 主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口
网络型防火墙 主要使用 FORWARD 链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可

2.3 实验操练

实验情况说明

外网客户端主机1:CentOS 7-2

外网客户端主机2:  CentOS 7-3

网关服务器:CentOS 7-1

内网服务端模拟:CentOS 7-4

拓扑图 

内网主机改成外网主机

外网主机改成内网主机

7-4改成vmnet1

7-2 7-3改成vmnet2

centos7-2

cd /etc/sysconfig/network-scripts/

vim ifcfg-ens33

[root@localhost network-scripts]# systemctl restart network [root@localhost network-scripts]# ifconfig

nslookup www.xy101.com

centos7-3

cd /etc/sysconfig/network-scripts/

vim ifcfg-ens33

[root@localhost network-scripts]# systemctl restart network

[root@localhost network-scripts]# ifconfig

vim /etc/resolv.conf

nslookup www.xy101.com

centos7-4

cd /etc/sysconfig/network-scripts/

vim ifcfg-ens33

[root@localhost network-scripts]# systemctl restart network

[root@localhost network-scripts]# ifconfig

systemctl restart httpd

centos7-1(网关服务器)

yum install -y bind

修改配置文件 vim /etc/named.conf

vim /etc/named.rfc1912.zones

5yy 然后按p

cd /var/named/ cp -p named.localhost xy101.com.zone 根据named.localhost复制出xy101.com.zone

vim xy101.com.zone

[root@localhost named]# systemctl start named

[root@localhost named]# systemctl enable named

vim /etc/sysctl.conf

sysctl -p

iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.30 -p tcp --dport 80 -j DNAT --to 192.168.80.15:80

iptables -nL -t nat

通过设置ssh进行远程登录到12.0.0.30主机

iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.30 -p tcp --dport 2345 -j DNAT --to 192.168.80.15:22

ssh -p 2345 12.0.0.30

相关文章:

iptablese防火墙【SNAT和DNAT】

目录 1.SNAT策略及应用 1.1SNAT原理与应用 1.2 SNAT策略的工作原理 1.3 实验操练 2.DNAT策略 2.1 DNAT策略的概述 2.2 DNAT原理与应用 2.3 实验操练 1.SNAT策略及应用 1.1SNAT原理与应用 SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet&#xf…...

IT行业现状与未来趋势

随着技术的不断进步,IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链,这些技术正在重塑我们的生活和工作方式。你眼中IT行业的现状及未来发展趋势是怎么样的?无论您是行业领袖、技术专家…...

Snowy2.x 版本使用 Yaml

代码:https://gitee.com/xiaonuobase/snowy/tree/Snowy2.5.2/ 直接将 properties 转换成 yaml 那么你大概率会遇到下面报错: 然后你上网搜索,发现是 snakeyaml 版本的问题,1.x 版本的 snakeyaml 有安全隐患,要升级到…...

鸿蒙 DevEcoStudio:通知栏通知实现

【使用notificationManager实现通知栏功能】 【普通通知、长文本通知、多行通知、图片通知】 import notificationManager from ohos.notificationManager import image from ohos.multimedia.image Entry Component struct Index {State message: string Hello World// 将图…...

什么是网关鉴权及其在Spring Cloud Gateway中的实现

在现代微服务架构中,网关扮演着非常重要的角色,它是系统和外部世界之间的入口,负责路由请求、流量控制以及安全保护等任务。其中,网关鉴权是保障系统安全的重要环节之一。本文将深入介绍什么是网关鉴权,以及如何通过过…...

【机器学习与实现】支持向量机SVM

目录 一、SVM (Support Vector Machine) 概述(一)支持向量机SVM的主要特点(二)支持向量与间隔最大化(三)线性可分/不可分(四)软间隔 (soft margin) 与核技巧 (kernel trick)&#xf…...

当代人工智能三教父——深度学习三巨头

文章目录 引言 人物介绍 突出贡献 专业名词解释 引言 今天下午闲来无事翻阅了一下csdn首页的头条文章——《27 岁天才创始人 Joel Hellermark 分享了自己和“AI 教父” Geoffery Hinton 的最新采访》 感觉挺有意思,就从头到尾的看了一遍,里面有很多…...

Django项目从创建到开发以及数据库连接的主要步骤,精简实用

1、项目创建 安装命令&#xff1a;pip install django3 -i <https://pypi.tuna.tsinghua.edu.cn/simple>上述命令是使用清华镜像&#xff0c;安装django3在项目的创建目录执行命令&#xff1a;django-admin startproject 项目名称&#xff08;英文&#xff09;就可以在指…...

linux 命令 grep 排除 No such file or directory

du -sh * 2>&1 | grep -v "proc" command 2>&1 | grep -v "No such file or directory" 这里的 2>&1 是将错误输出重定向到标准输出&#xff0c;然后 grep -v "No such file or directory" 会过滤掉包含 &qu…...

Unity 滑动条(Slider)拖拽开始和结束、点击等事件的拓展功能

目录 前言 一、关于slider的监听事件 二、方案一 &#xff08;无脚本版&#xff09; 三、方案二 &#xff08;继承slider脚本进行拓展&#xff09; 四、方案三&#xff08;外部脚本添加&#xff09; 前言 前一段时间在使用这个功能&#xff0c;发现搜索出来的文章和脚本&…...

Linux 学习知识 (简单易懂 )持续更新 Linux输出重定向 Linux通配符 Linux正则表达式 持续更新....

一.输出重定向 标准输出&#xff1a;是将信息输出在终端 标准错误输出&#xff1a;在执行命令的过程中所产生错误信息也是输出在终端标准输入&#xff1a;从键盘输入 1.1标准输出重定向 作用&#xff1a;将本来要显示在终端上的信息重定向到一个文件中 实现方法&#xff1a…...

前端vue用el-table如何实现表头内容过长换行处理,实现换行效果

前端vue用el-table如何实现表头内容过长换行处理&#xff0c;实现换行效果 这是效果图 有两种方法&#xff0c;一种简易版本&#xff0c;一种万能方法,都是el-table&#xff0c;先看文档 表头标题是可以自定义的 方法一 label的解释写在代码里面了&#xff0c;这里会自动形成换…...

15:00面试,15:08出来,面试问的有点变态。。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天…...

【BUG】流式响应requests得到: ping - 和时间戳

前情提要 运行Langchain-Chatchat项目&#xff0c;使用自定义请求访问API Server流式输出 报错展示 b: ping - 2024-05-22 00:46:04.83252000:00\r\n\r\n报错原因 这通常是由于 Server-Sent Events (SSE) 实现中使用的“心跳”机制&#xff0c;以确保连接保持活跃。一些 SSE…...

人工智能应用-实验5-BP 神经网络分类手写数据集

文章目录 &#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;代码&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;分析结果&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;实验总结&#x1f9e1;&#x1f9e1; &#x1f9…...

K8s Pod 资源进阶

文章目录 K8s Pod 资源进阶pod 资源限制限制资源单位 资源限制实战Pod 服务质量QosDownward API可注入的元数据信息环境变量方式注入元数据存储卷方式注入元数据为注册服务注入Pod 名称为 JVM 注入堆内存限制 K8s Pod 资源进阶 pod 资源限制 资源限制的方法&#xff1a; Req…...

掌握Edge浏览器的使用技巧

导言&#xff1a; Edge浏览器是微软推出的一款现代化、高效的网络浏览器。它不仅提供了基本的浏览功能&#xff0c;还具备了许多强大的特性和技巧&#xff0c;可以帮助用户更好地利用浏览器进行工作和娱乐。本文将介绍一些Edge浏览器的使用技巧&#xff0c;帮助读者更好地掌握这…...

Qt封装ping命令并将ping结果显示到界面

实现界面及在Windows 10下的运行结果如下&#xff1a; 代码如下&#xff1a; pingNetWork.h // 检测网络是否ping通的工具#ifndef PINGNETWORK_H #define PINGNETWORK_H#include <QWidget> #include"control_global.h" namespace Ui { class CPingNetWork; }c…...

图论(洛谷刷题)

目录 前言&#xff1a; 题单&#xff1a; P3386 【模板】二分图最大匹配 P1525 [NOIP2010 提高组] 关押罪犯 P3385 【模板】负环 P3371 【模板】单源最短路径&#xff08;弱化版&#xff09; SPFA写法 Dij写法&#xff1a; P3385 【模板】负环 P5960 【模板】差分约束…...

安卓部署ffmpeg全平台so并实现命令行调用

安卓 FFmpeg系列 第一章 Ubuntu生成ffmpeg安卓全平台so 第二章 Windows生成ffmpeg安卓全平台so 第三章 生成支持x264的ffmpeg安卓全平台so 第四章 部署ffmpeg安卓全平台so并使用&#xff08;本章&#xff09; 文章目录 安卓 FFmpeg系列前言一、添加so1、拷贝ffmpeg到项目2、bu…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...