Linux防火墙——SNAT、DNAT

目录

NAT

一、SNAT策略及作用

1、概述

SNAT应用环境

SNAT原理

SNAT转换前提条件

1、临时打开

2、永久打开

3、SNAT转换1:固定的公网IP地址

4、SNAT转换2:非固定的公网IP地址(共享动态IP地址)

二、SNAT实验

配置web服务器(192.168.247.99/24)

 配置网关服务器(192.168.247.100/12.0.0.1)

 配置外网服务器

配置网关服务器的iptables规则

二、DNAT策略与应用

DNAT应用环境

DNAT原理

DNAT转换前提条件

DNAT的转换

DNAT转换2:

在内网上配置

在网关服务器添加iptables规则

测试外网是否能访问内网

tcpdump——linux抓包


NAT

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

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

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

NAT的实现分为下面类型:

  • SNAT:source NAT,支持POSTROUTING,INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP
  • DNAT:destination NAT 支持PREROUTING,OUTING,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP
  • PNAT:port nat,端口和IP都进行修改

序号目标
1192.168.247.101:972012.0.0.1:80
212.0.0.1:8012.0.0.100:80
312.0.0.100192.168.100.101
412.0.0.10012.0.0.1
5192.168.100.100

一、SNAT策略及作用

1、概述

SNAT应用环境

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

SNAT原理

源地址转换

修改数据包的源地址

SNAT转换前提条件

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

2、Linux网关开启IP路由转发

2、开启SNAT的命令

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

SNAT选项:

  • to-source
  • random

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

MASQUERADE选项

  • to-ports port
  • random

iptables -t nat -A POSTROUTING -s 12.0.0.0/24 ! -d 192.168.247.0/24 -j MASQUERADE

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            #将次行写入配置文件

1

sysctl -p                               #读取修改后的配置

3、SNAT转换1:固定的公网IP地址

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

iptables -t nat -A POSTROUTING -s 192.168.247.0/24 -o ens33 -j SNAT --to 10.0.01

#配置SNAT策略,实现SNAT功能,将所有192.168.247.0这个网段的ip改为10.0.0.1

iptables -t nat -A POSTROUTING -s 192.168.247.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10

4、SNAT转换2:非固定的公网IP地址(共享动态IP地址)

iptables -t nat -A POSTROUTING -s 192.168.247.0/24 -o ens33 -j MASQUERADE

二、SNAT实验

 1、环境准备

web服务器ip:192.168.247.99(nat1)关闭防火墙和selinux、开启http服务

网关服务器内网ip地址:192.168.247.100

                   外网ip地址:12.0.0.1          关闭防火墙和selinux、开启http服务

外网ip地址:12.0.0.10(nat2)

VMware的虚拟网络编辑器中默认nat模式网段:192.168.247.0  nat2模式网段:12.0.0.0

配置web服务器(192.168.247.99/24)

1、选择网卡模式为nat模式

2、修改ens33网卡

 

3、重启网络服务

systemctl restart network

4、 ping网关测试

5、 关闭防火墙、selinux ,安装http服务

 6、开启http服务

 配置网关服务器(192.168.247.100/12.0.0.1)

1、添加一块虚拟网卡

 2、关闭防火墙,selinux

3、配置ens36网卡 

配置ens33网卡

 

  4、重启网络,查看ip

 4、关闭防火墙和selinux

systemctl stop firewalld

setenforce 0

5、安装http服务

yum install httpd -y

 6、开启http服务

 配置外网服务器

1、修改网卡模式

2、配置网卡

 

3、重启网卡服务,查看ip

4、网络联通测试

开启SNAT

配置网关服务器的iptables规则

iptables -nL              #查看规则
iptables -nL -t nat     #查看规则
iptables -F                #清除iptables的规则
iptables -F -t nat       #清除iptables的规则

二、DNAT策略与应用

DNAT应用环境

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

DNAT原理

修改数据包的目的地址

DNAT转换前提条件

  • 局域网的服务器能够访问internet
  • 网关的外网地址有正确的DNS解析记录
  • linux网关开启ip路由转发

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

DNAT的转换

发布内网的web服务

#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.247.102
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80 -j DNAT --to 192.168.247.102

iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80-j DNAT --to-destination 192.168.247.102
                             入站|外网网卡 | 外网ip                            内网服务器ip

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80-j DNAT --to 192.168.247.11-192.168.247.20

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.102:22

在内网上配置

#在内网上安装httpd并开启服务
[root@localhost yum.repos.d]# yum install -y httpd
[root@localhost yum.repos.d]# systemctl start httpd
 
#关闭防火墙和selinux
[root@localhost yum.repos.d]# systemctl stop firewalld.service 
[root@localhost yum.repos.d]# setenforce 0

在网关服务器添加iptables规则

#先清空规则
[root@localhost yum.repos.d]#iptables -F -t nat
#添加规则
[root@localhost yum.repos.d]#iptables -t nat -A PREROUTING -i ens38 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.102
 
#查看规则
[root@localhost yum.repos.d]#iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            12.0.0.1             tcp dpt:80 to:192.168.100.102
 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
 
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination    

测试外网是否能访问内网

#在外网服务器上
[root@localhost ~]# curl 12.0.0.1
 
#在内网服务器上
[root@localhost yum.repos.d]# tail /etc/httpd/logs/access_log 
127.0.0.1 - - [02/Nov/2021:18:05:31 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"
12.0.0.100 - - [02/Nov/2021:18:19:45 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

tcpdump——linux抓包

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣-银行账户概要 II

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1587. 银行账户概要 II二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果前言 …

css总结12(盒子模型外篇)

前言 主要补充一下和盒子模型相关的一些样式属性:box-sizing、resize和outline box-sizing 可选值 ## (1) content-box 默认值,内容盒子,盒子的大小会随着内容(盒子模型的content)尺寸的变化而变化 ## (2) border-box边框盒子,与…

leetcode究极刷题笔记(16~20)

(16)最接近的三数之和(中等) 实现思路: 本题与前文讲的三数之和有相同之处,但是本题求的是最接近的三数之和,所以我们这里可以使用键值对来映射对应的差值与值的关系,从而达到目的。…

系统集成路由器OSPF动态、综合路由配置

实验任务:动态路由协议RIP、OSPF协议的内容和特点动态路由RIP、OSPF实验,建立拓扑pc1>>R1>>R2>>R3>>pc2,使pc1与pc2能相互通信,并配置PC端静默接口。熟悉配置vlan间路由技术:多层交换机虚拟接…

JavaScript到底如何存储数据?

1.var的迷幻操作 普遍的观点:JavaScript中的基本数据类型是保存在栈空间,而引用数据类型则是保存在堆空间里, 是否正确? 浏览器环境下JavaScript变量类型的运行实践结果: var a 10;console.log(a);console.log(window.a); console.log(wind…

【云原生】Linux进程控制(进程程序替换)

✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Good judgment comes from experience, and a lot of that comes from bad jud…

keepalived配置使用

keepalived安装tar -zxvf ***yum install -y gcc gcc-c wget popt-devel openssl openssl-devel yum install -y libnl libnl-devel libnl3 libnl3-devel yum install -y libnfnetlink-devel ./configure --sysconf/etc make make installmaster1 编辑keepalived的配置文件keep…

【C++】科普:C++中的浮点数怎么在计算机中表示?

这里我们以8.25这个数为例说明计算机时如何存取float类型的数据的: float a 8.25;引言 1. 所占位数 首先,明确一个概念,float类型的数据在常规计算机中通常占4个字节,也就是32位。其内存分布如图: 位字段说明所占位…

【pytorch源码剖析系列】优化器

写在前言:pyotrch优化器从源码的角度带你理解优化器的由来,实现,作用。pytorch的优化器:管理并更新模型中可学习参数的值,使得模型输出更接近真是标签。导数:函数在指定坐标轴上的变化率方向导数&#xff1…

ChatGPT来了你慌了吗?

文章目录一、ChatGPT是什么?一、ChatGPT到底多强大?三、各平台集成了ChatGPT插件:四、ChatGPT能否取代程序员?一、ChatGPT是什么? ChatGPT(全名:Chat Generative Pre-trained Transformer&…

快速上手vue elementUI好看的登录界面

这是一个非常非常适合新手的vue登录界面,总体来说美观大气,axios那部分没有发,有需要的大家可以自己进行二次开发,继续编写。 用到了技术栈有 vue/cli 5.07 element-ui 2.15.9 适合入门级新手,展示下页面 emmm验证码…

【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)

文章目录环境要求简介安装Nacos源码安装Docker安装数据库配置访问服务我们要搭建一个Spring Cloud Alibaba项目就绕不开Nacos,阿里巴巴提供的Nacos组件,可以提供服务注册与发现和分布式配置服务,拥有着淘宝双十一十几年的流量经验&#xff0c…

关于docker mysql 请求速度慢的问题

一,问题描述: 请求mysql 数据库,请求速度很慢,需要六七秒,数据量也不大。使用的是docker 容器启动的mysql 二,问题原因: 网上说的是因为MySQL的dns导致,我实测也是有效果的&#xf…

Linux:主机USB设备驱动简析

文章目录1. 前言2. 分析背景3. USB 总线硬件拓扑4. USB 协议栈概览4.1 Linux USB 子系统概览4.2 USB外设(如U盘)固件基础5. Linux USB 子系统初始化6. Linux USB 主机控制器(HCD) 驱动6.1 USB 主机控制器驱动初始化6.2 USB 主机控制器设备对象注册和驱动加载7. Linux USB 设备驱…

【亲测搭建成功】模拟无网络情况下安装K8S集群和相关组件

目录标题 前言准备工作:k8s集群:先构思网络拓扑图划分网络资源服务器开始搭建服务器操作系统初始化1.关闭防火墙2. 关闭selinux3. 修改网卡配置5.系统模块配置nacos 高可用mysql双主+双从rockemq 集群nginx高可用(双主)Redis 双主、双从minio分布式文件存储前言 最近项目上…

vulnhub Noob渗透笔记

靶机下载地址:https://www.vulnhub.com/entry/noob-1,746/ kali ip 信息收集 依旧我们先使用nmap扫描确定一下靶机ip nmap -sP 192.168.20.0/24发现靶机ip 扫描开放端口 nmap -A -p 1-65535 192.168.20.129 开放21 80 55077端口 先尝试使用匿名账号登录ftp,账户anonym…

linux系统运维面试题大全(137道题)

linux系统运维面试题大全 1、 如何看当前Linux系统有几颗物理CPU和每颗CPU的核数? 查看物理cup: cat /proc/cpuinfo|grep -c ‘physical id’ 查看每颗cup核数 cat /proc/cpuinfo|grep -c ‘processor’ 2、查看系统负载有两个常用的命令,…

STM32 ADC+定时器+DMA+FFT

本次实现的功能为单片机DAC输出一个正弦波,然后ADC定时采样用DMA输出,最后对DAC输出的波形进行FFT。单片机STM32F103ZET6内部时钟一、配置ADCADC端口为PA1,采用DMA输出,定时器3触发定时器时钟64M,分频后为102.4KHzADC采…

Scrapy的callback进入不了回调方法

一、前言 有的时候,Scrapy的callback方法直接被略过了,不去执行其中的回调方法,可能排查好久都排查不出来,我来教大家集中解决方法。 yield Request(urlurl, callbackself.parse_detail, cb_kwargs{item: item})二、解决方法 1…

基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建

基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建 文章目录基于QEMU-aarch64学习UEFI(EDK2)-1环境搭建一、环境搭建1、虚拟机Ubuntu系统安装2、docker镜像导入3、下载EDK2源码4、容器创建和代码编译4.1 容器创建4.2 代码编译5、运行QEMU_EFI.fd6、VSCODE配置7、日常工作8、不同项目的…