Linux防火墙【SNAT,DNAT】

news2024/12/29 2:35:40

NAT: 支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链

请求报文:修改源/目标IP,

响应报文:修改源/目标IP,根据跟踪机制自动实现

NAT的实现分为下面类型:

SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP

DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP

SNAT

基于nat表的target,适用于固定的公网IP

SNAT选项:

  • to-source ipaddr[-ipaddr]]
  • random

iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source

ExtIP

        表 nat          总出口                 -s  本地地址                  出口ip

注意需要开启 ip_forward

SNAT转换前提条件

  1. 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
  2. Linux网关开启IP路由转发 (linxu系统本身是没有转发功能,只有路由发送数据)

SNAT实验

SNAT:内网访问外网

实验环境:

  • centos7-5 (外网服务器) ens33 IP地址(仅主机):12.0.0.100
  • centos7-6 (网关服务器) ens33 IP地址(nat):172.16.88.8 ;ens36 IP地址(仅主机):12.0.0.1
  • centos7-7 (内网服务器) ens33 IP地址(nat):172.16.88.9

实验效果:

7-7可以访问7-5,并且7-5的日志当中客户端是12.0.0.1

实验步骤:

1. 7-7内网服务器的设置

安装httpd服务,启动服务,修改主机名,生成主页文件:

[root@localhost ~]# systemctl stop firewalld.service

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum install httpd -y

[root@localhost ~]#  hostnamectl set-hostname web1

[root@localhost ~]# systemctl enable --now httpd

[root@localhost ~]# echo "7-7 7-7" > /var/www/html/index.html

[root@localhost ~]# curl 127.0.0.1
7-7 7-7

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@localhost ~]# systemctl restart network

2. 7-6网关服务器配置

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36

[root@localhost network-scripts]# vi ifcfg-ens36

[root@localhost network-scripts]#systemctl restart network  //重启服务

开启路由转发

[root@localhost network-scripts]# sysctl -a |grep ip_forward   //查看查看内核参数

net.ipv4.ip_forward = 0

net.ipv4.ip_forward_use_pmtu = 0

sysctl: reading key "net.ipv6.conf.all.stable_secret"

sysctl: reading key "net.ipv6.conf.default.stable_secret"

sysctl: reading key "net.ipv6.conf.ens33.stable_secret"

sysctl: reading key "net.ipv6.conf.ens36.stable_secret"

sysctl: reading key "net.ipv6.conf.lo.stable_secret"

sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"

sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"

[root@localhost network-scripts]# vi /etc/sysctl.conf   //修改内核参数

[root@localhost network-scripts]# sysctl -p                  //生效

net.ipv4.ip_forward = 1

3. 7-5 外网服务器配置

安装httpd服务,启动服务,修改主机名,生成主页文件:

[root@host5:~# ]yum install httpd -y

[root@host5:~# ]systemctl enable --now httpd

[root@host5:~# ]echo "7-5 7-5" > /var/www/html/index.html

[root@host5:~# ]curl 127.0.0.1

7-5 7-5

[root@host5:~# ]curl 172.16.88.9

7-7 7-7

随后将网卡改为仅主机模式

[root@host5:~# ]vi /etc/sysconfig/network-scripts/ifcfg-ens33       //修改网卡配置

[root@host5:~# ]systemctl restart network

4. 测试内外网能否相互访问

测试一下7-5与7-7能否相互访问

[root@host5:~# ]curl 172.16.88.9

7-7 7-7

[root@localhost ~]# curl 12.0.0.100

7-5 7-5

注意:只是模拟环境中能够相互访问,外网机器的访问日志中出现的是内网地址,实际不可能存在。 所以要做SNAT,将内网机器的源地址由内网转换为公网。

5. 7-6网关服务器添加防火墙策略

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 172.16.88.0/24 -o ens36 -j SNAT --to 12.0.0.1

6. 7-7访问7-5,随后查看7-5日志验证实验结果

DNAT

DNAT原理与应用:

DNAT应用环境:

在Internet中发布位于局域网内的服务器

DNAT原理:

目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映谢。

DNAT转换前提条件:

1.局域网的服务器能够访问Internet

2.网关的外网地址有正确的DNS解析记录                                                                                           3. Linux网关开启IP路由转发

DNAT实验

将内网服务器共享到外网

实验环境:

  • centos7-5 (外网服务器) ens33 IP地址(仅主机):12.0.0.100
  • centos7-6 (网关服务器) ens33 IP地址(nat):172.16.88.8 ;ens36 IP地址(仅主机):12.0.0.1
  • centos7-7 (内网服务器) ens33 IP地址(nat):172.6.88.9

实验效果:

  • 7-1能访问公网地址12.0.0.1,访问12.0.0.1等于访问192.168.204.30

实验步骤:

添加规则前:

[root@host5:~# ]curl 12.0.0.1

curl: (7) Failed connect to 12.0.0.1:80; 拒绝连接

添加规则:

[root@localhost ~]#  iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 172.16.88.9

//从 ens36 网卡进入的流量,目的地址是12.0.0.1的并且访问tcp的 目的端口是80的流量,就跳转到 172.16.88.9

添加规则后:

[root@host5:~# ]curl 12.0.0.1

7-7 7-7

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

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

相关文章

goLang小案例-获取从控制台输入的信息

goLang小案例-获取从控制台输入的信息 1. 案例代码展示 package mainimport ("bufio""fmt""log""os" )var pl fmt.Printlnfunc main() {//控制台输出欢迎提示pl("Hello Go")fmt.Print("what is your name? ")…

【技术追踪】SDSeg:医学图像的 Stable Diffusion 分割(MICCAI-2024)

这医学图像分割领域啊,终究还是被 Stable Diffusion 闯进去了~ SDSeg:第一个基于 Stable Diffusion 的 latent 扩散医学图像分割模型,在五个不同医学影像模态的基准数据集上超越了现有的最先进方法~ 论文:Stable Diffusion Segmen…

安宝特分享 | 数字化革命,AR技术打造智慧城市的未来

随着城市化进程的加速和科技创新的不断推进, AR技术正逐步融入智慧城市建设的方方面面,为城市居民提供更智能、便捷、舒适的生活体验,开启了智慧城市的新时代。 01 优化城市规划与建设 AR技术在城市规划和建设中发挥着重要作用。城市规划师和…

leetcode提速小技巧

据我所知,leetcode可能是按最难那个用例给你打分的,非难题的用时好坏不完全看复杂度,因为可能都差不多,O(n/2)和O(n)虽然都是O(n),但是反应到成绩上是不同的,所以,尽可能的在条件足够的情况下提…

宏集物联网工控屏通过 S7 ETH 协议采集西门子 1200 PLC 数据

前言 为了实现和西门子PLC的数据交互,宏集物联网HMI集成了S7 PPI、S7 MPI、S7 Optimized、S7 ETH等多个驱动来适配西门子200、300、400、1200、1500、LOGO等系列PLC。 本文主要介绍宏集物联网HMI如何通过S7 ETH协议采集西门子1200 PLC的数据,文中详细介…

JVM专题五:类加载器与双亲委派机制

通过上一篇Java的类加载机制相信大家已经搞明白了整个类加载从触发时机,接着我们就来看下类加载器,因为类加载机制是有加载器实现的。 类加载器的分类 启动类加载器 Bootstrap ClassLoader 是 Java 虚拟机(JVM)的一部分&#x…

Sqlserver双活

要实现Sqlserver双活不是一件简单的事情,什么是双活,就是两边都活着,两边都可以访问,也就是A服务器部署一个sqlserver服务,B服务器部署一个sqlserver服务,两边数据双向同步保持一致,当A数据库服…

web前端之文档流、浮动、定位详解

目录 一、文档流 二、浮动 1.添加浮动 2.清除浮动 三、定位 1.相对定位 2.绝对定位 一、文档流 什么是文档流? ● 文档流指的是文档中的标签在排列时所占用的位置。 将窗体自上而下分成一行行 ,并在每 行中按从左至右的顺序排放标签&#xff0c…

智慧校园-学工管理系统总体概述

智慧校园学工管理系统是高等教育机构内部管理不可或缺的一部分,它通过集成信息技术,全面覆盖学生从入学至毕业的各类事务,旨在优化学生工作流程,强化管理效率,同时深化学生与学校间的互动,确保学生需求得到…

【红帽战报】6月RHCE考试喜报!

往期战报回顾: 点击查看【战报】5月RHCE考试喜报!通过率100% 点击查看【战报】4月份红帽考试战报! 点击查看【战报】PASS!PASS!2023年终来一波RHCE考试 微思网络-红帽官方授权合作伙伴!面向全国招生&…

【华为战报】5月、6月HCIP考试战报!

华为认证:HCIA-HCIP-HCIE 点击查看: 【华为战报】4月 HCIP考试战报! 【华为战报】2月、3月HCIP考试战报! 【华为战报】11月份HCIP考试战报! 【HCIE喜报】HCIE备考2个月丝滑通关,考试心得分享&#xff…

项目管理中常见的6种度量指标,你知道吗?

在项目管理中,为了有效地监控和控制项目的进展、成本、质量等方面,我们通常会采用一系列的度量指标。这些度量指标不仅可以帮助项目经理了解项目的当前状态,还能预测未来的趋势,从而作出相应的决策。以下是六种常见的项目度量数据…

基于大模型的Agent进行任务规划的10种方式(附代码和论文)

在 OpenAI AI 应用研究主管 Lilian Weng 的博客**《大语言模型(LLM)支持的自主式代理》**[1]中,将规划能力视为关键的组件之一,用于将任务拆解为更小可管理的子任务,这对有效可控的处理好更复杂的任务效果显著。 基于…

自适应蚁群算法优化的攀爬机器人的路径规划

大家好,我是带我去滑雪! 攀爬机器人是一种能够在复杂环境中自主移动和攀爬的具有广阔应用前景的智能机器人,具有较强的应用潜力和广泛的研究价值。随着科技的不断发展,攀爬机器人在许多领域中的应用越来越广泛,例如建筑…

Python 面试【初级】

阐述以下方法 classmethod, staticmethod, property? 解释什么是lambda函数?它有什么好处?

phpMyAdmin 4.0.10 文件包含 -> getshell

phpMyAdmin 4.0.10 文件包含 -> getshell 前言:这里这个漏洞相对来说审计起来不是特别难,但是对于初学者还是有点挑战性的,从zkaq web课过来的小伙伴想挑战一下自己代码审计能力的话,可以直接跳到最后下载源码,聂风…

一键进阶ComfyUI!懂AI的设计师现在都在用的节点式Stable Diffusion

前言 _ 万字教程!奶奶看了都会的 ComfyUI 入门教程 推荐阅读 一、川言川语 大家好,我是言川。 阅读文章 > ](https://www.uisdc.com/comfyui-3) 目前使用 Stable Diffusion 进行创作的工具主要有两个:WebUI 和 ComfyUI。而更晚出现的…

顶顶通呼叫中心中间件-透传uuid并且导入对端变量到本端(mod_cti基于Freeswitch)

一、配置拨号方案 win-ccadmin配置方法 点击拨号方案 -> 点击进入排队 -> 根据图中配置。如果不是排队转人工是机器人转人工那么就是在机器人那个拨号方案配置,并且需要配置在"cti_robot"之前即可 action"set" data"sip_h_X_tas…

【HTML03】HTML表单语法笔记,附带案例-作业

文章目录 表单概述一、表单容器(form)二、控件相关单词获取本次课程作业和案例 表单概述 允许用户输入信息,和提交信息的-收集用户信息。 表单:表单容器表单控件组成。 控件:输入框、单选按钮、多选、下拉框、多行文…