iptables防火墙之SNAT与DNAT

news2024/11/16 21:28:08

目录

1、SNAT策略概述

   1.SNAT策略的典型应用环境

   2.SNAT策略的原理

   3.SNAT工作原理

   4.SNAT转换前提条件

  5.开启SNAT命令

  6.SNAT转换

2.SNAT示例

 1.  配置网关服务器

 2.Xshell 连接192.168.100.100

3.DNAT策略及应用

1. DNAT策略概述

2.DNAT 策略的应用

3.DNAT转换前提条件

4.防火墙规则的备份和还原

5.Linux抓包


1、SNAT策略概述

   1.SNAT策略的典型应用环境

      1.局域网主机共享单个公网IP地址接入Internet.

   

   2.SNAT策略的原理

        1.源地址转换,Source Network Address Translation;

        2.有修改数据包的源地址.

  3.SNAT工作原理

    (1)数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP;

    (2)当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP。

  4.SNAT转换前提条件

    (1)局域网各主机已正确设置IP地址、子网掩码、默认网关地址;

     (2)Linux网关开启IP路由转发。

5.开启SNAT命令

   1.临时打开

echo 1 > /proc/sys/net/ipv4/ip_forward
或者
sysctl -w net.ipv4.ip_forward=1

   2.永久打开

vim /etc/ sysctl. conf
net. ipv4.ip_ forward=1  #将此行写入配置文件
 
sysctl -p			   #读取修改后的配置

6.SNAT转换

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

2.SNAT示例

 1.  配置网关服务器

   1、添加一张外网网卡网段为12.0.0.0/24

查看真机的网段与 虚拟机所设网段是否一致 

 

2.修改ens33网卡信息,注释网关和DNS,修改IP地址为192.168.100.100

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

3.修改ens36网卡信息,注释网关和DNS,修改IP地址为12.0.0.1 

 

4.重启网卡

 

2.Xshell 连接192.168.100.100

设置永久打开SNAT       sysctl -p 读取修改后的配置

 

 

清空规则  iptables -F

配置SNAT策略,实现snat功能,将所有192.168.100.0网段的ip的源ip改为10.0.0.1

 

3.DNAT策略及应用

        DNAT 是 Linux 防火墙的另一种地址转换操作,同样也是 iptables 命令中的一种数据包控制类型,其作用是根据指定条件修改数据包的目标IP地址和目标端口。

1. DNAT策略概述

   DNAT 策略与 SNAT 非常相似,只不过应用方向相反。

     SNAT 用来修改源 IP 地址,而 DNAT 用来修改目标 IP 地址和目标端口;SNAT 只能用在 nat 表的 POSTROUTING 链中,而 DNAT 只能用在 nat 表的 PREROUTING 链和 OUTPUT链(或被其调用的链)中。

     在 Internet 环境中,企业所注册的网站域名必须对应合法的公网 IP 地址,在这种情况下,Internet 中的客户机将无法访问公司内网的服务器,除非在网关服务器中正确设置 DNAT 策略使用 DNAT 策略的效果如下:当 Internet 中的客户机提交的 HTTP 请求到达企业的网关服务器时,网关首先判断数据包的目标地址和目标端口,若发现该数据包需要访问本机的 80 端口,则将其目标 IP 地址修改为内网中真正的网站服务器的 IP 地址,然后才发送给内部的网站服务器上述 DNAT 转换地址的过程,网关服务器会根据之前建立的 DNAT 映射,修改返回的 HTTP 应答数据包的源 IP 地址,最后再返回给 Internet 中的客户机,Internet 中的客户机并不知道企业网站服务器的真实局域网地址,中间的转换完全由网关主机完成。

2.DNAT 策略的应用

       DNAT 的典型应用是在 Internet 中发布企业内部的服务器,处理数据包的切入时机是在路由选择之前(PREROUTING)进行。
       关键操作是将访问网关外网接口 IP 地址(公有地址)的数据包的目标地址修改为实际提供服务的内部服务器的 IP 地址(私有地址)使用 iptables 命令设置 DNAT 策略时,需要结合 “- -to-destination IP地址” 选项来指定内部服务器的 IP 地址。

3.DNAT转换前提条件

  1. 局域网的服务器能够访问Internet;
  2. 网关的外网地址有正确的DNS解析记录;
  3. Linux网关开启IP路由转发。
vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1 
sysct1 -p

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

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

2.DNAT转换2∶ 发布时修改目标端口

#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 250-jDNAT --to 192.168.100.11:22

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

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

注意∶ 使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回 小知识扩展∶

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

4.防火墙规则的备份和还原

  1.导出 (备份)所有表的规则

iptables-save > /opt/ipt.txt

2.导入(还原)规则

iptables-restore < /opt/ipt.txt

3.将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则 iptables-save >/etc/sysconfig/iptables

systemctl stop iptables		#停止iptables服务会清空掉所有表的规则 				
systemctl start iptables		#启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则

5.Linux抓包

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

(1)tcp∶ ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型;
(2)-i ens33 ∶只抓经过接口ens33的包;
(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。Net:网段,host:主机;
(8)-w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析。

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

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

相关文章

看完这篇 教你玩转渗透测试靶机vulnhub——Hack Me Please: 1

Vulnhub靶机Hack Me Please: 1渗透测试详解Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;漏洞利用③&#xff1a;获取反弹shell&#xff1a;④&#x…

how https works?https工作原理

简单一句话&#xff1a; https http TLShttps 工作原理&#xff1a;HTTPS (Hypertext Transfer Protocol Secure)是一种带有安全性的通信协议&#xff0c;用于在互联网上传输信息。它通过使用加密来保护数据的隐私和完整性。下面是 HTTPS 的工作原理&#xff1a;初始化安全会…

Camtasia2023最新版电脑视频录屏记录编辑软件

在Mac或Wind上有各种可用的视频记录和编辑软件&#xff0c;其中Camtasia被称为视频记录器和视频编辑器。录屏软件Camtasia2023到底有什么特色功能&#xff1f;本文将帮助您选择理想的选择来开始视频捕获&#xff0c;创建和编辑。Camtasia2023是Mac/win平台上一款使用非常简单的…

【JavaScript】题(牛客网)——熟练使用函数调用,超详细讲解

1 熟练使用函数调用 1.1 题目 执行以下程序&#xff0c;输出结果为 var uname "window"; var object {uname: "object",fun: function () {console.log(this.uname);return function () {console.log(this.uname);};}, };object.fun()();1.2 答案 ob…

ThingsBoard-设备配置

1、概述 从 ThingsBoard 3.2 开始,租户管理员可以使用设备配置文件为多个设备配置通用设置。每个设备在单个时间点都有一个且唯一的配置文件。 有经验的 ThingsBoard 用户会注意到设备类型已被弃用,取而代之的是设备配置文件。更新脚本将根据唯一的设备类型自动创建设备配置…

三、Java面向对象

1 . 方法 方法(method)是程序中最小的执行单元方法就是一些代码的打包 需要的时候可以直接调用方法之间是平级的关系 不能在方法里面定义方法方法不调用就不执行 方法的定义 // 方法的定义 /* [修饰符] 返回值类型 方法名称([参数 1],[参数 2]){语句A;return 返回值; } *///…

VT虚拟化框架编写

文章目录前言VT架构基础VT框架编写步骤一&#xff1a;检测VT是否开启VMM和VMVMON和VMCSVT框架编写步骤二 填充VMONVT框架编写步骤三 进入VTVT框架编写步骤四 初始化VMCSVT框架编写步骤五 初始化VMCS数据区VT框架编写步骤六 处理必要事件前言 学习VT相关的知识&#xff0c;需要…

C++11新特性

文章目录说在前面花括号{}初始化new的列表初始化STL相关容器的列表初始化相关语法格式容器列表初始化的底层原理forward_list和array与类型相关的新特性decltype左值引用和右值引用什么是左值&#xff0c;什么是右值左值和右值的本质区别右值引用如何理解右值引用std::move移动…

【软考系统架构设计师】2022下综合知识历年真题

【软考系统架构设计师】2022下综合知识历年真题 【2022下架构真题第01题&#xff1a;绿色】 01.云计算服务体系结构如下图所示&#xff0c;图中①、②、③分别与SaaS、PaaS、Iaas相对应&#xff0c;图中①、②、③应为( ) A.应用层、基础设施层、平台层 B.应用层、平台层、基础…

Linux驱动开发(一)

linux驱动学习记录 一、背景 在开始学习我的linux驱动之旅之前&#xff0c;先提一下题外话&#xff0c;我是一个c语言应用层开发工作人员&#xff0c;在工作当中往往会和硬件直接进行数据的交互&#xff0c;往往遇到数据不通的情况&#xff0c;常常难以定位&#xff0c;而恰巧…

静态分析工具Cppcheck在Windows上的使用

之前在https://blog.csdn.net/fengbingchun/article/details/8887843 介绍过Cppcheck&#xff0c;那时还是1.x版本&#xff0c;现在已到2.x版本&#xff0c;这里再总结下。 Cppcheck是一个用于C/C代码的静态分析工具&#xff0c;源码地址为https://github.com/danmar/cppcheck …

Python之字符串精讲(上)

前言 字符串是所有编程语言在项目开发过程中涉及最多的一个内容。大部分项目的运行结果&#xff0c;都需要以文本的形式展示给客户&#xff0c;曾经有一位久经沙场的老程序员说过一句话&#xff1a;“开发一个项目&#xff0c;基本上就是在不断的处理字符串”。下面对Python中…

自命为缓存之王的Caffeine(3)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e;缓存的存储空间是远远小于磁盘的。所以对于有些过期的数据&#xff0c;就需要定期进行清理&#xff0c;腾出存储空间。Caffeine又是怎么做的呢&#xff1f;Caffei…

SpringBoot+Vue在线小说系统

简介&#xff1a;本项目采用了基本的springbootvue设计的在线小说系统。详情请看截图。经测试&#xff0c;本项目正常运行。本项目适用于Java毕业设计、课程设计学习参考等用途。 特别说明&#xff1a;本系统设计网络爬虫&#xff0c;遵循爬虫规则&#xff0c;此项目用于学习&a…

2023关键词:挑战

未失踪人口回归… 好久不见&#xff0c;不经意间拖更2个多月。今天周末&#xff0c;外面淅淅沥沥下着小雨&#xff0c;这种窝在床上的时刻最适合写点东西了。 但是建议大家在办公或者写博客的时候尽量还是端正坐姿&#xff0c;我就是因为喜欢这样靠在床背上&#xff0c;长时间…

Spring Security 从入门到精通

前言 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#xff0c;因为相比与Spr…

Vue3+ElementPlus+koa2实现本地图片的上传

一、示例图二、实现过程利用Koa2书写提交图片的后台接口这个模块是我写的项目中的其中一个板块——上传图片&#xff0c;这个项目的后台接口主要是是使用了后端的Koa2框架&#xff0c;前端小伙伴想要试着自己书写一些增删改查的接口可以从这个入手&#xff0c;Koa2用来了解后端…

力扣HOT100 11-15

11.盛水最多的容器 思路&#xff1a;最大水量 底边 * 高度。较短的一边控制最大水量&#xff0c;因此&#xff0c;采用双指针的方式&#xff0c;左、右指针指向开始和末尾&#xff0c;逐个向中间移动&#xff0c;判断左右指针所指向的高度哪个更低&#xff0c;它就向中间移动一…

ubuntu中解决Failed to connect to 127.0.0.1 port xxxxx: Connection refused

ubuntu中解决Failed to connect to 127.0.0.1 port xxxxx: Connection refused 方法一 查看一下代理 git config --global http.proxy git config --global https.proxy 有就取消,没有就换一种方法 git config --global --unset http.proxy git config --global --unse…

计算机网络之http03:HTTPS RSA握手解析

不同的秘钥交换算法,握手过程可能略有差别 上文对HTTPS四次握手的学习 SSL/TLS Secure Sockets Layer/Transport Layer Security 协议握手过程 四次通信&#xff1a;请求服务端公钥 2次 秘钥协商 2次 &#xff08;1&#xff09;ClientHello请求 客户端向服务端发送client…