Linux防火墙【SNAT,DNAT】

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 = 0net.ipv4.ip_forward_use_pmtu = 0sysctl: 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.17-5 7-5[root@host5:~# ]curl 172.16.88.97-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.97-7 7-7[root@localhost ~]# curl 12.0.0.1007-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.1curl: (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.17-7 7-7

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

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

相关文章

如何实现数字人系统私有化部署?数字人源码部署教程简易版来了!

当前,数字人行业的市场前景和应用潜力不断显现,不少创业者都想要通过学习数字人源码部署教程来搭建属于自己的数字人系统,以此获得进军数字人行业的入场券。而事实上,该想法本身当然是固然值得鼓励的,但就目前的实践情…

基于改进天鹰优化算法(IAO)优化RBF神经网络数据回归预测 (IAO-RBF)的数据回归预测(多输入多输出)

改进天鹰优化算法(IAO)见:【智能优化算法】改进的AO算法(IAO)-CSDN博客 代码原理 基于改进天鹰优化算法(IAO)优化RBF神经网络数据回归预测(IAO-RBF)的多输入多输出(MIMO)数据回归预测&#xf…

视频去水印软件?在线去除视频水印工具网站?

视频去水印软件哪个好?在数字时代,视频内容的传播变得日益普遍,然而,许多视频带有水印,影响了观看体验,如果有这些图案我们需要找方法把这些图案从视频上去掉。今天我们就来看一下视频去水印的超级简单的方…

添加阈值滞后以实现平滑的欠压/过压锁定

电阻分压器将高压衰减到低压电路可以承受的水平,而不会过驱动或损坏。在电源路径控制电路中,电阻分压器有助于设置电源欠压和过压锁定阈值。这种电源电压鉴定电路存在于汽车系统、电池供电的便携式仪器以及数据处理和通信板中。 欠压锁定 (UVLO) 可防止…

goLang小案例-打印99乘法表

goLang小案例-打印99乘法表 1. 打印99乘法表 func Print99multiplication1() {//横向9排for i : 1; i < 9; i {//竖向9列//第一批第一个 和第一列比较 如果大于排就结束//假设第三排i3 最走有三列 1*3 2*3 3*3//j3打印完 j 当j4就要结束 以此类推for j : 1; j < i; j …

蓝牙耳机推荐学生党怎么选?300左右蓝牙耳机分享

在选择蓝牙耳机时&#xff0c;学生党需要考虑的因素包括音质、续航力、舒适度以及连接稳定性等&#xff0c;而在300元左右的价位&#xff0c;虽然不能期待与高端产品相媲美的性能&#xff0c;但依然有一些性价比较高的选择能够满足大部分的日常需求&#xff0c;下面给大家推荐几…

使用python基于经纬度获取高德地图定位地址【逆地址解析】

一、高德地图api申请 1. 高德开放平台注册&#xff0c;登录 进入网址&#xff1a;高德开放平台 | 高德地图API 注册 -- 支付宝扫码认证 -- 完善个人信息 -- 登录 2. 申请API &#xff08;1&#xff09;点击头像 -- 应用管理 -- 我的应用 -- 创建新应用 &#xff08;2&…

【papaparse插件】前端预览csv文件

需求&#xff1a;就是可以在前端直接预览csv文件的内容 1.了解csv文件 1.1 csv文件和xlsx、xls文件的异同 首先了解一下csv文件和excel文件&#xff08;xlsx&#xff0c;xls&#xff09;有什么异同&#xff0c;简单来说他们都是存储表格数据的文件&#xff0c;csv只能显示较…

一站式AI服务平台:MaynorAI助您轻松驾驭人工智能

一站式AI服务平台&#xff1a;MaynorAI助您轻松驾驭人工智能 在当前的数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术已经成为推动各行各业创新发展的核心动力。为了更好地满足企业和个人用户对AI服务的需求&#xff0c;MaynorAI 作为一个领先的一站式调用国内…

【oracle】oracle索引分裂

本文为云贝教育 刘峰 原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 一、索引分裂概述 Oracle数据库中的索引分裂是数据库维护和性能管理中的一个重要概念&#xff0c;特别是在处理大量数据插入、更新和…

CVPR 2024最佳论文分享:生成图像动力学

CVPR 2024最佳论文分享&#xff1a;生成图像动力学 CVPR&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;是计算机视觉领域最有影响力的会议之一&#xff0c;主要方向包括图像和视频处理、目标检测与识别、三维视觉等。近期&#xff0c;CVPR 2…

2000—2022年青藏高原遥感生态指数数据集

该数据集是基于多套MODIS数据集&#xff0c;选取NDVI、LST、WET、NDBSI四项指标&#xff0c;采用主成分分析法&#xff0c;生成2000-2022年500米空间分辨率的遥感生态指数&#xff08;RSEI&#xff09;数据集。 遥感生态指数&#xff1a;是一种基于遥感技术的生态环境质量综合评…

3D立体卡片动效(附源码)

3D立体卡片动效 欢迎关注&#xff1a;xssy5431 小拾岁月参考链接&#xff1a;https://mp.weixin.qq.com/s/9xEjPAA38pRiIampxjXNKQ 效果展示 思路分析 需求含有立体这种关键词&#xff0c;我们第一反应是采用动画中的平移、倾斜等实现。如果是立体&#xff0c;必然产生阴影&…

[c++] 类型推导 typeid decltype auto

前言:为什么c需要类型推导 诸如python这类语言,声明对象和函数返回时都不需要显示声明类型,如果程序比较复杂很容易在函数多级传参时找不到返回值的数据类型,这时类型推导就是一件很有意义的事了,而c/c中,函数的返回值类型都是显示传递的,不同类型之间还不能直接进行赋值,看起…

FFmpeg中位操作相关的源码:GetBitContext结构体,init_get_bits函数、get_bits1函数和get_bits函数分析

一、引言 由《音视频入门基础&#xff1a;H.264专题&#xff08;3&#xff09;——EBSP, RBSP和SODB》可以知道&#xff0c;H.264 码流中的操作单位是位(bit)&#xff0c;而不是字节。因为视频的传输和存贮是十分在乎体积的&#xff0c;对于每一个比特&#xff08;bit&#xf…

利用圆上两点和圆半径求解圆心坐标

已知圆上两点P1&#xff0c;P2&#xff0c;坐标依次为 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1​,y1​),(x2​,y2​)&#xff0c;圆的半径为 r r r&#xff0c;求圆心的坐标。 假定P1&#xff0c;P2为任意两点&#xff0c;则两点连成线段的中点坐标是 x m i …

Git Flow 工作流学习要点

Git Flow 工作流学习要点 Git Flow — 流程图Git Flow — 操作指令优点&#xff1a;缺点&#xff1a;Git Flow 分支类型Git Flow 工作流程简述关于 feature 分支关于 Release 分支关于 hotfix 分支 总结 Git Flow — 流程图 图片来源&#xff1a;https://nvie.com/posts/a-succ…

vue全局方法plugins/utils

一、在src目录下创建一个plugins文件夹 test.ts文件存放创建的方法&#xff0c;index.ts用于接收所有自定义方法进行统一处理 二、编写自定义方法 // test.ts文件 export default {handleTest(val1: number, val2: number) {// 只是一个求和的方法return val1 val2;}, };三…

vue3 【提效】使用 CSS 框架 UnoCSS 实用教程

该换种更高效的方式写 CSS 啦&#xff0c;举个例&#xff1a; <div class"flex"> </div>相当于 <div class"flex"> </div> <style> .flex {display: flex; } </style>当然&#xff0c;还有超多强大的功能帮我们提升…

江科大笔记—FLASH闪存

FLASH闪存 程序现象&#xff1a; 1、读写内部FLASH 这个代码的目的&#xff0c;就是利用内部flash程序存储器的剩余空间&#xff0c;来存储一些掉电不丢失的参数。所以这里的程序是按下K1变换一下测试数据&#xff0c;然后存储到内部FLASH&#xff0c;按下K2把所有参数清0&…