“Shell“SNAT,DNAT

news2025/1/13 10:19:12

文章目录

  • 一.SNAT
        • 1.1 SNAT原理
        • 1.2 SNAT的应用环境
        • 1.3 SNAT工作原理
        • 1.4 进行SNAT转换后
        • 1.5 配置SNAT策略
        • 1.6SNAT实验
  • 二.DNAT
        • 2.1 DNAT工作原理
        • 2.2 配置DNAT策略
        • 2.3 DNAT实验

一.SNAT

1.1 SNAT原理

  • SNAT原理:修改数据包的源地址。
  • SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有不能早Internet中正常路由)
  • SNAT转换前提条件:
    • 1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址
    • 2.Linux网关开启IP路由转发

1.2 SNAT的应用环境

局域网共享上网
将局域网中的IP地址映射到 dns 网关服务器上,将私网IP地址转换成公网IP地址,从而访问位于公网的服务器。

在这里插入图片描述

1.3 SNAT工作原理

未作SNAT转换时
源主机发送数据包给目的主机,目的主机可以收到数据包,但目的主机发送回包时,数据包无法发送给源主机。

在这里插入图片描述

1.4 进行SNAT转换后

工作原理:
1.将从内网发到外网的数据包的源IP由私网IP转换成公网IP
2.将从外网服务器响应返回到内网的数据包的目的IP由公网IP转换成私网IP

在这里插入图片描述

1.5 配置SNAT策略

SNAT转换前条件

  • 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
  • Linux网关开启IP路由转发

1.开启IP路由转发

临时打开
echo 1 > /proc/sys/net/ipv4/ip_forward  
或
sysctl -w net.ipv4.ip_forward=1
 
永久打开
vim /etc/sysctl.conf
net.ipv4.ip_forward=1    #将其添加进配置文件
 
sysctl -p                #读取修改后的配置

2.SNAT转换

转换为固定的公网IP地址:
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j SNAT 
--to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j SNAT 
--to-source 12.0.0.1-12.0.0.10
 
转换为非固定的公网IP地址(共享动态IP地址):
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j MASQUERADE

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

常用指令作用
-t指定nat表
-A指定哪个链里面修改
-s指定对哪个源地址进行修改
-o指定修改完后再哪个出站网卡
-j指定类型
–to转换成一个固定的外网ip地址

1.6SNAT实验

首先配置服务端:
服务器位于公网,IP地址为12.0.0.100/24。开启http服务

vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.50
 
systemctl restart network
 
yum -y install httpd
#进入http服务的网页目录
cd /var/www/html
#在其中写入一个文件
echo 'hello world!' > test.html
#开启服务
systemctl start httpd
 

再配置网关服务器
进行SNAT转换,ens33作为私网IP地址,ens35作为公网IP地址。首先,在虚拟机中设置两张网卡。

vim /etc/sysconfig/network-scripts/ifcfg-ens35
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.50
NETMASK=255.255.255.0
 
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.40
NETMASK=255.255.255.0
 
systemctl restart network

网关服务器设置iptables规则

#安装iptables服务
yum -y install iptables*
#删除iptables规则及nat表中规则
iptables -F && iptables -F -t nat
#查看iptables规则
iptables -nL
 
vim /etc/sysctl.conf
net.ipv4.ip_forward=1    
 
sysctl -p   
 
#允许192.168.88.0网段进入网关服务器转发
iptables -t filter -A FORWARD -s 192.168.88.0/24 -j ACCEPT
#指定出站网卡ens35,将192.168.88.0网段IP地址转换为12.0.0.50
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens35 -j SNAT 
--to 12.0.0.50
 

在这里插入图片描述
客户端

vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.20
NETMASK=255.255.255.0
GATEWAY=192.168.88.40
 
systemctl restart network

结果
在这里插入图片描述

服务端

cd /var/log/httpd
grep 'test.html' access_log

在这里插入图片描述

二.DNAT

2.1 DNAT工作原理

  • 将外网发来的数据包的目的地址由公网IP或端口转换成私网IP或端口;网关服务器将私网IP转发给内网服务器
  • 将内网服务器发来的应答响应数据包的源地址由私网IP或端口转换成公网IP或端口

在这里插入图片描述

2.2 配置DNAT策略

DNAT转换前提条件:

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

DNAT转换

##发布内网的web服务
##把从ens35进来的要访问web服务的数据包目的地址转换为 192.168.88.40
iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.50 -p tcp --dport 80 
-j DNAT --to 192.168.88.40
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.50 -p tcp --dport 80 
-j DNAT --to-destination 192.168.88.40
 
##发布时修改目标端口
##发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 
-j DNAT --to 192.168.80.10:22
 

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

2.3 DNAT实验

服务端

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.30
NETMASK=255.255.255.0
GATEWAY=192.168.88.40
 
systemctl restart network
 
yum -y install httpd
#进入http服务的网页目录
cd /var/www/html
#在其中写入一个文件
echo 'hello world!' > test.html
#开启服务
systemctl start httpd

在这里插入图片描述
客户端

vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.200
NETMASK=255.255.255.0
GATEWAY=12.0.0.50
 
systemctl restart network

在这里插入图片描述
网关服务器

vim /etc/sysconfig/network-scripts/ifcfg-ens35
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.2
NETMASK=255.255.255.0
 
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.2
NETMASK=255.255.255.0
 
systemctl restart network

在这里插入图片描述
配置DNAT策略

#外网主机访问发送数据包允许通过
iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.2 -p tcp --dport 8080 
-j DNAT --to 192.168.88.30:80
 
#服务器的回包发送给访问主机
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens35 -j SNAT 
--to 12.0.0.2

在这里插入图片描述

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

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

相关文章

基础学习——关于卷积层的记录

文章目录 前言一、功能层1、池化层2、nn.BatchNorm2d()3、全连接层4、softmax层 二、卷积层1、普通卷积2、空洞卷积3、多尺度卷积4、分组卷积5、深度可分离卷积6、形变卷积 前言 老是忘有些模块的具体作用,记录一下。 一、功能层 1、池化层 池化层夹在连续的卷积…

总结最全面的TCP、UDP、Socket、HTTP网络编程面试题

先看一天面试的经验: 第一场: 面试官:你说一下TCP的三次握手 我:第一次Client将SYN置1......、第二次Server收........、 第三次........ 面试官:很难背吧? 我:......是啊,很难&…

harbor安装

文章目录 先决条件硬件软件网络端口 安装docker签发证书生成证书颁发机构证书 生成服务器证书向 Harbor 和 Docker 提供证书 下载harbor安装包containerd 配置私有仓库(二选一)分发证书(如上文只是路径变了)配置登录加密登录打标签并推送与拉取 docker 配…

【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇

历史文章(文章累计460) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 用…

机器学习神经网络——GBDT(Gradient Boosting Decision Tree 梯度提升决策树)算法

系列文章目录 机器学习神经网络——Adaboost分离器算法 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 文章目录 系列文章目录 前言 一、GBDT(Gradient Boos…

计算机网络:物理层

物理层 1. 通信基础1.1 基本概念1.1.1 通信模型1.1.2 通信方式1.1.3 数据传输方式1.1.4 数据同步的传输/通信方式1.1.5 码元1.1.6 速率1.1.7 带宽 1.2 奈氏准则|香农定理1.2.1 奈氏准则1.2.2 香农定理 1.3 编码、调制1.3.1 数字数据编码为数字信号1.3.2 数字数据调制为模拟信号…

Google Colab的使用方法

什么是 Google Colab? Colaboratory是一个 Google 研究项目,旨在帮助传播机器学习培训和研究成果。是一个Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行。Colaboratory笔记本存储在 Google 云端硬盘中&…

“超级品牌”已成型!解码名创优品的进阶之路

随着经济复苏,消费者心智和市场趋势逐渐发生变化,零售市场竞争步入深水区,为品牌带来了更大考验。但反过来,也令更多潜力股加速崛起。 北京时间5月16日,名创优品集团(NYSE:MNSO;HKEX: 9896)公布…

ResourceManager启动报错:Queue configuration missing child queue names for root【已解决】

Queue configuration missing child queue names for root 现象报错分析ResourceManager输出日志解决 现象 start-all.sh后缺少RM的进程 报错 查看启动日志输出文件 2023-05-23 19:28:19,863 INFO [main] resourcemanager.RMNMInfo (RMNMInfo.java:<init>(63)) - Re…

【Linux】进程控制 — 进程终止 + 进程等待

文章目录 &#x1f4d6; 前言1. 再次理解fork()函数1.1 fork()之后子进程代码和数据问题&#xff1a;1.2 fork()之后操作系统做了什么&#xff1a;1.3 为什么要写时拷贝&#xff1f;&#xff1f; 2. 进程终止2.1 main函数的返回值&#xff1a;2.2 exit() 和 _exit()&#xff1a…

以京东首页为例,设计用例框架。

以下是一个可能的京东首页的用例框架设计&#xff1a; 1. 区域划分&#xff1a; a. 顶部导航栏&#xff1a;包括京东的Logo、搜索框、登录/注册入口、购物车等。 b. 主要内容区域&#xff1a;展示各类商品、促销活动、广告位等。 c. 商品分类导航&#xff1a;提供各类…

复习之Linux下的文件管理

1.文件的建立 #touch westos-------建立空文件/修改文件的建立时间 &#xff08;1&#xff09;建立空文件 &#xff08;2&#xff09;修改文件的建立时间 ----右击点属性显示文件的建立时间 ---- 再次输入touch westos,westos文件的建立时间更新&#xff01; -----westos -t…

使用 Kafka Assistant,为您的开发加速

简要介绍 快速查看所有 Kafka 集群&#xff0c;包括Brokers、Topics和Consumers支持各种认证模式&#xff1a;PLAINTEXT、SASL_PLAINTEXT、SSL、SASL_SSL对Kafka集群进行健康检查查看分区中的消息内容并添加新消息查看消费者订阅了哪些主题&#xff0c;以及分区被分配给了哪些…

金融、医疗、教育等各场景下小程序SDK的应用

近年来&#xff0c;随着数字经济的飞速发展和移动终端的迅速普及&#xff0c;移动互联网全面覆盖&#xff0c;各类应用服务层出不穷&#xff0c;涵盖了方方面面的生活、工作和学习。 而小程序作为一种轻量级的应用形态&#xff0c;越来越受到开发者和用户的欢迎。为了满足不同行…

DataNode启动报错Failed to add storage directory [DISK]file:【已解决】

Failed to add storage directory [DISK]file hadoop启动后缺少DataNode进程报错out文件报错log文件解决 hadoop启动后缺少DataNode进程 jps查看hadoop进程缺少DataNode的进程 报错out文件 查看DataNode的out日志 DataNode启动报错 ulimit -a for user root core file size…

前k个高频单词

&#x1f495;**不要害怕前方的未知和困难&#xff0c;因为它们都是你成长的机会。不要过于在意别人的眼光和评价&#xff0c;因为唯有你的内心才知道自己真正的价值。珍惜当下&#xff0c;享受生活的点滴&#xff0c;让自己变得更加坚强、自信、成熟。**&#x1f495; &#x…

LG Gram 14 (14Z90N) 电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板LG Gram 14 (14Z90N) 处理器Intel Core i5-1035G4已驱动 内存M471A1G44AB0-CWE * 2已驱动 硬盘MTFDHBA512TDV-1AZ1AABYY已驱动 显卡Intel Iris …

Axel – 用于 Linux 的命令行文件下载加速器

动动发财的小手&#xff0c;点个赞吧&#xff01; 如果您是那种喜欢下载和试用多个 Linux 发行版的人&#xff0c;我们相信您会张开双臂欢迎一个说到做到的下载加速器——一个按照其描述进行操作的下载加速器。 在本指南[1]中&#xff0c;我们将向您介绍 Axel&#xff0c;这是一…

由浅入深Dubbo核心源码剖析高可用集群

目录 1 服务集群的概述1.1 概述1.2 调用过程1.3 组件介绍 2 集群容错机制2.1 内置集群容错策略2.2 集群容错调优2.3 源码分析 3 集群负载均衡策略3.1 负载均衡的主要作用3.2 内置的负载均衡策略3.3 负载均衡总结 4 服务治理4.1 服务治理的概述4.2 执行过程4.3 服务治理功能 1 服…

由浅入深Dubbo核心源码剖析服务暴露与发现

目录 1 概述2 Spring中自定义Schema2.1 案例使用2.2 dubbo中的相关对象 3 服务暴露机制3.1 术语解释3.2 流程机制3.3 源码分析3.4 总结 4 服务发现4.1 服务发现流程4.2 源码分析4.3 总结 1 概述 dubbo是一个简单易用的RPC框架&#xff0c;通过简单的提供者&#xff0c;消费者配…