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

2023-11-13

目录

NAT

SNAT

SNAT实际操作

DNAT

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选项:

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

MASQUERADE选项:

  • to-ports port[-port]

  • random

SNAT实际操作

环境:

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

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

步骤:

1)网关服务器添加网卡


2)设置外网服务器的网卡模式

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

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

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

 

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

7)在网关服务器上配置SNAT

 

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

 

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

DNAT

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

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

DNAT实际操作

在上诉SNAT基础上做操作

步骤

保留SNAT实际操作中的  1),2),3),4),5),8)

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

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

 

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统安全——NAT(SNAT、DNAT) 的相关文章

  • 无法为 Python 3.4 创建工作虚拟环境

    I 安装Python 3 4 2 https docs python org 3 using unix html building python和我的 Linux Mint 17 1 中的 Virtualenv 12 0 5 然后我尝试创建
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • 对 sf:: 的未定义引用

    我想用 C 制作 GUI 应用程序 发现 SFML 是一个不错的选择 幸运的是 我使用的是 Linux 所以 SFML 2 4 已经安装在我的系统上 所以我开始搜索一些教程并找到了一个制作简单窗口的教程 但是当我运行代码时 出现错误 提示未
  • 如何使用libaudit?

    我试图了解如何使用 libaudit 我想接收有关使用 C C 的用户操作的事件 我不明白如何设置规则 以及如何获取有关用户操作的信息 例如 我想获取用户创建目录时的信息 int audit fd audit open struct aud
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • 如何使用ffmpeg重叠和合并多个音频文件?

    我正在尝试将多个音频文件合并到一个文件中 但我可以使用以下命令来连接 而不是连接 ffmpeg v debug i file1 wav i file2 wav i file3 wav filter complex 0 0 concat n
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • perf stat中的cycles注释是什么意思

    8 014196 task clock 0 004 CPUs utilized 204 context switches 0 025 M sec 32 cpu migrations 0 004 M sec 0 page faults 0 0
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • Linux 上的 Python 3.6 tkinter 窗口图标错误

    我正在从 Python GUI 编程手册 学习 Python GUI 某项任务要求我通过将以下代码添加到我的配方中来更改窗口图标 Change the main windows icon win iconbitmap r C Python3
  • 如何从 Linux 命令行获取视频文件的分辨率(宽度和高度)?

    我一直在挖掘 mplayer mencoder 和 ffmpeg 文档 但我似乎无法想出anything 我对输出格式不是特别挑剔 因为我可以使用正则表达式将其拉出来 我只是似乎无法首先获取数据 Use ffprobe https ffmp
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 如何用X11复制到剪贴板?

    使用 OS X 上的框架 我可以使用以下命令将 PNG 复制到粘贴板 在 C 中 显然我可以将 NSPasteboard 与 Cocoa 一起使用 include
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void

随机推荐

  • 自主异常检测算法(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 Matlab代码 数据 4 参考文献 1 概述 文献来源 本文介绍了一种在实证数据分析
  • Java并发编程之CyclicBarrier详解

    简介 栅栏类似于闭锁 它能阻塞一组线程直到某个事件的发生 栅栏与闭锁的关键区别在于 所有的线程必须同时到达栅栏位置 才能继续执行 闭锁用于等待事件 而栅栏用于等待其他线程 CyclicBarrier可以使一定数量的线程反复地在栅栏位置处汇集
  • docker容器将系统盘空间占满的解决办法

    最近遇到一个问题 线上服务器的系统盘空间被占满了 导致服务不能正常运行了 docker启动时会报出下面这个错误 no space left on device 排查用到的命令 显示当前路径下占用空间超过1G的文件或文件夹 du h max
  • AD 原理图统一隐藏元器件的参数和序号

    AD 原理图统一隐藏元器件的参数和序号 如果隐藏元件参数 元件 右击 查找相似对象 确定 点击原理图 ctrl a 点击 属性对话框中 Part Conmment Hide 统一隐藏元件参数 如果隐藏元件序号 元件 右击 查找相似对象 确定
  • 用JAVA中的URL获取网页相关信息

    ava中有一个URL类 可以获取指定url的内容 import java io BufferedReader import java io InputStreamReader import java net URL public class
  • [Unity2D]在2D游戏里面实现人物的移动[消除抖动]

    Unity2D 在2D游戏里面实现人物的移动 先来一张效果图 一般的Unity2D游戏中 用WASD控制来移动人物角色的移动 缺陷 与含有碰撞器的强行碰撞时会发生抖动 原因 例如我人物要向左边走 利用脚本获取键盘输入 给人物角色一个向左边的
  • 一张图把DCDC电源拓扑“融会贯通”

    1 基本拓扑的由来 我们把一个电源电路抽象成一个黑盒电路模型 一个电源输入 一个电源输出 一个接地端口 对于非隔离电源 输入输出电路是共 地 的 所以非隔离电源的这个模型可以简化为图4 1 所示的模型 在所有的拓扑中 电感的一端需要连接到三
  • 使用docker部署golang编译环境

    前言 不想在windows上安装环境 打算docker部署 一拉一运行很方便 要注意的就是 官方的镜像跑起来后要改些参数再导成镜像 否则重启后改动消失 所以多一步 1 拉取镜像 运行镜像 docker pull golang docker
  • SpringBoot使用Swagger报NullPointerException

    第一次使用Swagger时报NullPointerException 在pom文件中引入Swagger 在启动项中加入注解 接口注解 运行出现NullPointerException 解决运行空指针问题 在pom文件中引入Swagger
  • Ini文件读取类,采用C++ STL实现

    背景 编程过程中经常会遇到读取Ini文件的场合 封装一个方便的类 能否避免重复编写 以后可复用 ini文件的格式很简单 并且不像xml之类的配置文件严谨 通常用于配置简单的键值对 本类测试文件如下
  • vuex的使用场景

    vuex的使用场景 首先 我们先来探讨一下 什么情况下vuex才是必须要到的呢 需要数据共享和行为进行拆分 复杂的异步逻辑 需要综合多个模块进行状态演进 需要用到第三方插件 需要综合考虑多个组件的生命周期 先后顺序 特定逻辑等等 vuex使
  • 如何在前端传递一个String 的变量和一个obj对象到后端,然后被Java后端接收

    首先我们通过post向后端发送请求 本篇博客仅纪录一下 在实际开发中需要从前端传递多值到后端 并且不存放到一个对象中进行传值处理 简单的一个案例展示该怎么做罢了 创建一个包含字符串和对象的数据 const postData stringVa
  • centos yum安装mysql出现的错误与解决办法

    1 InnoDB Error ib logfile0 of different size 错误的解决方法 查看Mysqld var log mysqld log 日志 发现以下错误 InnoDB Error log file usr loc
  • 冒泡排序--java(详解)

    对于一个数组 4 6 3 9 而言 首先进行第一轮 第一次比较 4 lt 6 所以不用交换两元素 数组不变为 4 6 3 9 第二次比较 6 gt 3 所以交换两元素 得到一个新数组为 4 3 6 9 第三次比较 6 lt 9 所以不用交换
  • 计算机维修培训教材,计算机芯片级维中心(芯片级维修培训教材)b.doc

    计算机芯片级维中心 芯片级维修培训教材 b 一 芯片的功能 作用及性能 具体内容 芯片组 南桥 北桥 BIOS芯片 时钟发生器IC RTC实时时钟 I O芯片 串口芯片75232 缓冲器244 245 门电路74系列 电阻R 电容C 二极管
  • Java笔记1:IntelliJ IDEA详细安装步骤

    安装IntelliJ IDEA 一 安装JDK 1 下载最新的jdk 这里下的是jdk 8u66 2 将jdk安装到默认的路径C Program Files Java目录下 二 安装IntelliJ IDEA 1 运行IntelliJ ID
  • Redis中SAVE和BGSAVE的区别

    Redis的这两个命令都是用于创建当前数据库的备份 因为Redis持久化选择RDB快照模式 所以Redis并不是实时的进行数据持久化 而是有一定的时间间隔 这个时候如果我们想要手动进行一次持久化 可以使用save或者bgsave命令 SAV
  • 如何使用sharemouse共享鼠标

    如何使用sharemouse共享鼠标 文章目录 如何使用sharemouse共享鼠标 1 Step 1 查看server IP 2 Step 2 配置Server的TCP UDP端口 设置密码 3 Step 3 client连接server
  • #ifndef/#define/#endif使用详解

    问题 想必很多人都看过 头文件中的 ifndef define endif 防止该头文件被重复引用 但是是否能理解 被重复引用 是什么意思 是不能在不同的两个文件中使用include来包含这个头文件吗 如果头文件被重复引用了 会产生什么后果
  • Linux系统安全——NAT(SNAT、DNAT)

    目录 NAT SNAT SNAT实际操作 DNAT DNAT实际操作 NAT NAT network address translation 支持PREROUTING INPUT OUTPUT POSTROUTING四个链 请求报文 修改源