Linux防火墙2

news2025/1/9 15:23:52

一、SNAT和DNAT

SNAT:让内网机器可以访问外网服务器

DNAT:  让外网机器可以访问内网服务器

1.1、SNAT原理与应用

SNAT 应用环境

局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由),私转公

SNAT原理:源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射

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

数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP
当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP

 切记:私网地址永远不会出现在公网地址上

 

私网->公网->公网

公网->公网->私网

P 地址范围子网掩码描述
10.0.0.0 - 10.255.255.255/8 或 255.0.0.0A类私有网络地址
172.16.0.0 - 172.31.255.255/12 或 255.255.0.0B类私有网络地址
192.168.0.0 - 192.168.255.255/16 或 255.255.255.0C类私有网络地址

1.1.1、启用IP转发功能

linux系统本身是没有转发功能 只有路由发送数据 

在Linux系统中,命令 echo 1 > /proc/sys/net/ipv4/ip_forward 用于启用IP转发功能。

  • /proc/sys/net/ipv4/ip_forward:这是一个特殊的虚拟文件,用于控制Linux内核的IPv4网络层是否应该转发数据包。当这个文件的值为1时,表示启用IP转发;当值为0时,表示禁用IP转发。

因此,当你执行 echo 1 > /proc/sys/net/ipv4/ip_forward 命令时,你实际上是在告诉Linux内核:“对于IPv4数据包,请允许它们被转发到其他网络接口

或者

sysctl -w net.ipv4.ip_forward=1

上面的命令的效果是临时的,仅在当前会话中有效。一旦系统重启,这个设置将不会保留。要使这个设置永久生效,你需要在系统启动时自动执行这个命令,或者编辑网络配置文件(如/etc/sysctl.conf),在其中添加一行net.ipv4.ip_forward=1,然后运行sysctl -p来应用更改。

永久打开步骤如下:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1    #将此行写入配置文件
   
sysctl -p  #将取修改后的配置

注:还有一种方式静态路由,这个就比较麻烦

1.1.2、SNAT转换

SNAT转换1:固定的公网IP地址:
#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为10.0.0.1

-o是出站网卡

iptables  -t  nat  -A  POSTROUTING  -s  192.168.100.0/24  -o ens33 -j  SNAT   --to 10.0.0.1

可换成单独IP                   出站                                                       外网网卡                    外网IP


iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10
                                    出站                                                   外网网卡                    外网IP或地址池


                                                
SNAT转换2:非固定的公网IP地址(共享动态IP地址):
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

                                                                                                             就是masquerade控制类型

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

1.2、DNAT原理与应用:

DNAT应用环境

在Internet中发布位于局域网内的服务器,公转私

DNAT原理

目的地址(目标机,就是其他机)转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映射。


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


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

2.1.1、DNAT转换

DNAT转换1:发布内网的Web服务
#把从ens37进来的要访问web服务的数据包目的地址转换为192.168.100.13
iptables -t nat -A PREROUTING  -i  ens37  -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.13
或                                入站                                 公网IP                                  

内网服务器IP
iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.13
                                   入站                                   公网IP             端口                          

                          内网服务器IP
                           

回包
iptables -t nat -A POSTROUTING  -s 192.168.100.13 -o ens37 -j SNAT --to 10.0.0.1
                                                                      内网IP    出站外网网卡              外网地址


可以现场做个域名解析

1.3、实验

以下实验以snat为例:

示意图

需求:内网客户端可以访问公网网站
思路:需要用防火墙做nat转换

内网用户客户端访问公网服务器

注意:网防火墙网关服务器需要关闭firewalld防火墙,公网服务器的iptables防火墙策略要干净(不能有拒绝,坑),selseinux都要关,内网windows客户端防火墙也要关。

实验环境:
内网客户端(内网pcwin客户机):192.168.100.130
公网服务器(公网linux服务机):  12.0.0.100                 开启httpd服务
网防火墙网关服务器:12.0.0.1和 192.168.100.100

1.编辑的虚拟网络编辑

Vmnet1模式网段:192.168.100.0,Vmnet3模式网段:12.0.0.0

2.现在配置防火墙网关代理机

添加两快网卡(两个网络适配器,cp内容),并设置

a.关闭firewalld防火墙,设为开机不自启

systemctl stop firewalld.service  

systemctl disable firewalld.service            

b.安装iptables,开启服务(可以提前下)
yum -y  install iptables iptables-services     
systemctl start iptables. Service 

c.为了不必要的麻烦,再关一下selinux

setenforce 0        

3.Linux网关开启IP路由转发

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

4.在linux网关服务器上做SNAT转换

iptables -F -t nat

iptables -nvL -t nat  查看

iptables -t nat -A POSTROUTING  -s 192.168.100.0/24 -o ens37 -j SNAT  --to 12.0.0.1

iptables -nvL -t nat  查看

5.配置公网服务器,修改网卡和网络适配器,为vm3,仅主机模式

vim /etc/sysconfig/network-scripts/ifcfg-ens33

a.关闭防火墙firewalld selinux

b.提前下载开启httpd

systemctl restart httpd.service 

c.可以在防火墙网关代理机上curl  12.0.0.100 测试

6.配置内网客户端

访问

总结

其他内容

开启路由转发功能
vim /etc/sysctl.conf  

net.ipv4.ip_forward=1

或配置内核参数开启路由转发,echo 1 > /proc/sys/net/ipv4/ip_forward为临时配置

sysctl -p   从文件加载系统参数

配置防火墙策略(先清空nat表规则)
iptables -t nat -A PREROUTING -d 12.0.0.128 -i ens38 -j DNAT --to-destination 192.168.192.210
iptables -t nat -I POSTROUTING -s 192.168.192.0/24 -o ens38 -j SNAT --to-source 12.0.0.128

验证:内网客户端访问12.0.0.211
           公网客户端访问12.0.0.128
 

DNAT转换1:入站外网网卡外网IP到内网服务器IP
iptables -t nat -A PREROUTING -i ens37 -p tcp --dport 80 -j DNAT --to 192.168.100.13-192.168.100.20


                                                                            
DNAT转换2:发布时修改目标端口
发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接


iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.100.13:22
                                                 入站外网网卡    外网IP           外网远程端口                                  内网IP和远程端口号


在外网环境中使用SSH测试
ssh -p 250 root@10.0.0.1  

yum -y install net-tools    #若没有ifconfig 命令可提前使用yum 进行安装
ifconfig ens33

iptables -nvL -t nat  查看

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

1.4、防火墙规则备份和还原

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


防火墙规则的备份和还原
导出(备份)所有表的规则.
iptables-save > /opt/ipt.txt
导入(还原)规则
iptables-restore < /opt/ipt.txt

将iptables规则文件保存在/etc/sysconfig/iptables中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfig/iptables
systemctl stop iptables      #停止iptables服务会清空掉所有表的规则
systemctl start iptables     #启动iptables服务会自动还原/etc/sysconfig/iptables中的规则

二、网络分析工具tcpdump

tcpdump tcp -i ens33 -t -s 0 -C 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap


(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i ens33 : 只抓经过接口ens33的包,i是入站
(3)-t : 不显示时间戳
(4)-s 0: 抓取数据包时默认抓取长度为68字节。加上-s   0后可以抓到完整的数据包
(5)-c 100 :只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

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

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

相关文章

水平直逼高级病理学家!清华团队提出AI基础模型ROAM,实现胶质瘤精准诊断

胶质瘤是一种源自脑内神经胶质细胞的肿瘤&#xff0c;占据所有原发性中枢神经系统肿瘤的 40&#xff05;~60&#xff05;&#xff0c;并以成年人最常见的颅内原发性肿瘤而闻名。胶质瘤的组织病理分类非常复杂&#xff0c;通常分为三种亚型&#xff1a;星形细胞瘤、少突胶质细胞…

使用go的tls库搭建客户端服务器加密通信

文章目录 使用OpenSSL生成证书Win系统安装openssl生成证书 非HTTP 直接tcp通信服务器代码客户端代码通信效果 使用OpenSSL生成证书 Win系统安装openssl 安装地址 https://slproweb.com/products/Win32OpenSSL.html设置环境变量 cmd命令检验 openssl version 生成证书 生成C…

2024.7.28 记录一次悲惨的笔试——作业帮NLP校招

小红的奇偶抽取 题目描述 题解 #include <iostream> #include<stack> using namespace std;int main() {long long n;stack <int> ji, ou;cin >> n;while (n) {int a n % 10;if (a % 2 0)ou.push(a);elseji.push(a);n n / 10;}long long jN 0, o…

Spring Cloud中怎么使用Resilience4j Retry对OpenFeign进行重试

在微服务架构中&#xff0c;服务之间的通信是非常频繁的。而使用OpenFeign可以极大简化微服务之间的HTTP通信。但在复杂的分布式系统中&#xff0c;服务之间的调用可能会因为网络问题、服务故障等原因而失败。因此&#xff0c;实现服务调用的重试机制显得尤为重要。Resilience4…

DDR3的使用(四)利用XILINX MIGIP核(native)读写DDR3—IP核信号分析

我们这一节继续结合仿真波形和逻辑分析仪测试波形来分析下MIGIP核的各个信号使用&#xff0c;这里主要说的是用户端的信号&#xff0c;这些信号直接与ip核进行交互&#xff0c;只有正确使用才能按我们的要求来读写数据。 1.我们先打开modelsim仿真软件&#xff0c;查看下examp…

机器学习笔记 - RAFT 光流简读

一、光流 光流是图像序列中像素的表观运动。为了估计光流,场景中物体的移动必须具有相应的亮度位移。这意味着一个图像中移动的红球在下一个图像中应该具有相同的亮度和颜色,这使我们能够确定它以像素为单位移动了多少。下图显示了光流示例,其中一系列图像捕获了逆时针旋转的…

使用 宝塔面板 部署 语料库php网站

【语料库网站】宝塔面板 在线部署全过程 代码仓库&#xff1a;https://github.com/talmudmaster/RedCorpus 网站介绍 语料库提供双语文本检索和分享功能。供英语、翻译相关专业的爱好者&#xff0c;学生和老师学习使用。 该网站是对BiCorpus开源项目的二次开发。 技术栈&am…

一文全面了解高性能计算平台是什么、怎么选型?高性能计算平台CHPC 都能做什么?

一. 概述 随着技术的发展和数据量的爆炸性增长&#xff0c;企业面临的挑战日益复杂&#xff0c;对计算能力的需求也在不断增加。这些问题的解决超出了传统计算方法的能力范围&#xff0c;高性能计算&#xff08;HPC&#xff09;正是为解决这类问题而生。 高性能计算&#xff…

怎么锁定Word文档格式,保护文档完整性

在日常工作和学习中&#xff0c;我们经常会使用Word文档来编辑和保存重要信息。然而&#xff0c;在文档被多人编辑或分享的过程中&#xff0c;格式的意外变动往往会给后续工作带来不必要的麻烦。为了确保文档的格式在编辑和分享过程中保持不变&#xff0c;我们可以采取一些措施…

2024还有跨境玩家没解锁代理IP+设备多开模式的强大吗?

大多数跨境电商平台对于IP地址、浏览器环境等限制严格。若同一台电脑在同一个跨境电商平台注册多个账号&#xff0c;很容易被官方封禁。如何在不触发官方封禁机制的前提下&#xff0c;安全高效地开展多账号运营策略&#xff0c;成为了众多跨境电商从业者亟待解决的问题。本文将…

jenkins集成jmeter

jenkins 安装插件HTML Publisher startup trigger Groovy 脚本介绍 cd /app/jmeter rm -rf result.jtl jmeter.log report mkdir -p report sh /app/jmeter/apache-jmeter-5.6.3/bin/jmeter.sh -n -t test.jmx -l result.jtl -e -o ./report-n: 表示以非 GUI 模式运行 JMete…

堆的创建和说明

文章目录 目录 文章目录 前言 小堆&#xff1a; 大堆&#xff1a; 二、使用步骤 1.创建二叉树 2.修改为堆 3.向上调整 结果实现 总结 前言 我们已经知道了二叉树的样子&#xff0c;但是一般的二叉树是没有什么意义的&#xff0c;所以我们会使用一些特殊的二叉树来进行实现&a…

齿轮端面重合度学习笔记分享

我们知道两个渐开线圆柱齿轮能够正确啮合&#xff0c;他们的基节相等是正常传动的必要但不处分条件。由于轮齿的高度有限&#xff0c;啮合的区间有限&#xff0c;齿轮能否连续传动还要看轮齿对能否及时接替&#xff0c;即前一对轮齿脱离啮合时&#xff0c;后一对轮齿是否已进入…

uniapp结合uview-ui创建项目关键步骤一步一图教程

文章目录 1 构建项目准备工作2 项目创建2.1 打开开发者工具HBuilderX2.2 创建一个新的项目2.3 引入uview-ui组件2.4 uview-ui组件配置2.4.1 uview-ui组件简单介绍2.4.2 修改main.js2.4.3 修改page.json2.4.4 修改App.vue2.4.5 修改uni.scss2.4.6 修改index.vue 2.5 api接口封装…

antv x6使用Vue+ElementPlus实现右键菜单

基于X6官方给出的React版的右键菜单示例&#xff0c;实现Vue版本的&#xff0c;其中右键菜单使用的是ElMenu的样式。 import { ToolsView } from antv/x6 import { h, render } from vue import { ElMenu, ElMenuItem } from element-plus export class ContextMenuTool exten…

公司的Spring框架接受MIME类型为json格式的带null的字符串,然后这个带null的字段被自动忽略了,排查了好久

接收方法&#xff1a; 解决方案&#xff1a; 先去掉RequsetBody 因为使用RequsetBody时&#xff0c;框架会调用HttpMessageConvert读取HttpRequest的InputStram反序列化为对象&#xff0c;这个InputStram只能读一次。 后续你的代码再通过Reader读输入流时&#xff0c;已经没有…

小米SU7对手来了,魅族汽车今年上市

新能源车市场竞争白热化的 2024 年&#xff0c;那些当初一股脑扎堆入场的各路新势力们&#xff0c;估计压根没想到造个车也能这么卷吧&#xff01; 还是那句话&#xff0c;当一个行业开始极度内卷&#xff0c;也就意味着已经到了整个淘汰赛最残酷的环节。 目前来说&#xff0…

相位相关法图像配准

小结&#xff1a;本文主要介绍基于相位相关法的图像配准。 1. 相位相关法 在时域中信号的平移运动可以通过在频域中相位的变化表现出来&#xff08;这是傅里叶变换的特性&#xff0c;见下图&#xff09;。平移不影响傅氏变换的幅值&#xff08;谱&#xff09;&#xff0c;对应…

利用人工智能ChatGPT自动生成基于PO的数据驱动测试框架

简介 PO&#xff08;PageObject&#xff09;设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类&#xff0c;并以页面为单位来写测试用例&#xff0c;实现页面对象和测试用例的分离。 数据驱动测试&#xff08;DDT&#xff09;是一种方法&#xff0c…