返回顶部
首页 > 资讯 > 服务器 >SNAT与DNAT
  • 557
分享到

SNAT与DNAT

服务器linux网络 2023-08-31 11:08:50 557人浏览 安东尼
摘要

一、SNAT和DNAT简介 SNAT:局域网共享一个公网IP接入lnternel,好处如下 保护内网用户安全,因为公网地址总有一些人恶意扫描,而内网地址在公网没有路由所以无法被扫描,能被扫描的只有防火墙这一台,这样就减少了被攻击的可能。Ip

一、SNAT和DNAT简介

SNAT:局域网共享一个公网IP接入lnternel,好处如下

  1. 保护内网用户安全,因为公网地址总有一些人恶意扫描,而内网地址在公网没有路由所以无法被扫描,能被扫描的只有防火墙这一台,这样就减少了被攻击的可能。
  2. Ipv4地址匮乏,很多公司只有一个ipv4地址,但是却有几百个用户需要上网,这个时候就需要使用SNAT。
  3. 省钱,公网地址付费,使用SNAT只需要一个公网ip就可以满足几百人同时上网。

DNAT:向internel发布内网服务器,在内网中有服务器,如果想让公网用户访问有有两种方法

  1.       1. 配置双网卡,一网卡对内,一网卡对外;一般是高访问量的WEB服务器,为了避免占用网关            的流量才这样做,使用不是广泛。
  2.       2. 内网web服务器,或是ftp服务器,为了用户在公网也可以访问,有不想买公网ip地址,采用            DNAT方案。

二、SNAT原理及应用

1、概述

SNAT典型应用环境:

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

SNAT策略的原理:

  • 源地址转换,Source Network Address Translation
  • 修改数据包的源地址

SNAT原地址转换过程:

  • 数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP。
  • 当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP。
  • 当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分。

2、SNAT策略的配置

SNAT转换前提条件

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

linux网关开启IP路由转发

1)临时开启:

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

2)永久开启:

vim /etc/sysctl.confnet.ipv4.ip_forward=1    #将此行写入配置文件 ​sysctl -p     #读取修改后的配置

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

#配置SNAT策略,实现SNAT功能,将所有192.168.72.0这个网段内的ip的源地址改为12.0.0.2iptables -t nat -A POSTROUTING -s 192.168.72.0/24 -o ens33 -j SNAT --to 12.0.0.2      或iptables -t nat -A POSTROUTING -s 192.168.72.0/24 -o ens33 -j SNAT --to-source 12.0.0.2-12.0.0.10 ​#-A POSTROUTING  指定POSTROUTING链#-s 192.168.72.0/24  源地址所处的网段(内网IP)#-o ens33  出站网卡#-j SNAT#--to 12.0.0.2   外网IP#--to-source 12.0.0.2-12.0.0.10   外网地址池

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

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

三、DNAT原理及应用

1、概述

服务器一般不会暴露在公网中,极易被人攻击。服务器一般使用内网IP,所以访问服务器时需要进行目标地址转换。

DNAT策略的应用环境

在Internet中发布位于企业局域网内的服务器

DNAT策略的原理 

  • 目标地址转换,Destination Network Address Translation
  • 修改数据包的目标地址

DNAT源地址转换过程

  • 数据包从外网发送到内网时,DNAT会把数据包的目标地址由公网IP转换成私网IP
  • 当相应的数据包从内网发送到公网时,会把数据包的源地址由私网IP转换为公网IP

2、DNAT策略的配置

DNAT转换前提条件

  1. 局域网的服务器能够访问Internet
  2. 网关的外网地址有正确的DNS解析记录
  3. Linux网关开启IP路由转发
vim /etc/sysctl.confnet.ipv4.ip_forward=1    #将此行写入配置文件 ​sysctl -p     #读取修改后的配置

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

#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.72.10iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.72.102或iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.72.10-192.168.72.20 ​#-A PREROUTING        //修改目标地址的链           #-i ens33             //入站网卡#-d 12.0.0.254        //数据包的目的地址#-p tcp --dport 80    //数据包的目的端口#-j DNAT              //使用DNAT功能#--to 192.168.109.11  //内网服务器IP

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

#将公网的IP和端口,转换成内网的IP和端口#发布局域网内部的web服务器,外网主机需使用8080端口进行连接#将12.0.0.254:8080 转换成 192.168.72.10:80iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 8080 -j DNAT --to 192.168.72.10:80 ​#发布局域网内部的Openssh服务器, 外网主机需使用250端口进行连接#将12.0.0.254:250 转换成 192.168.72.10:22iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 250 -j DNAT --to 192.168.72.10:22

四、总结

SNAT源地址转换过程(针对客户端):

  • 数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP。
  • 当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP。
  • 当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分。

DNAT源地址转换过程(针对服务器):

  • 数据包从外网发送到内网时,DNAT会把数据包的目标地址由公网IP转换成私网IP。
  • 当相应的数据包从内网发送到公网时,会把数据包的源地址由私网IP转换为公网IP。客户机想
  • 访问服务器时,访问的是网关地址,由网关去找服务器的内网地址。
  • 如果多台服务器使用同一个网关,那么通过不同的端口号来对应不同的服务器。

来源地址:https://blog.csdn.net/TTSuzuka/article/details/127654822

--结束END--

本文标题: SNAT与DNAT

本文链接: https://lsjlt.com/news/385491.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SNAT与DNAT
    一、SNAT和DNAT简介 SNAT:局域网共享一个公网IP接入lnternel,好处如下 保护内网用户安全,因为公网地址总有一些人恶意扫描,而内网地址在公网没有路由所以无法被扫描,能被扫描的只有防火墙这一台,这样就减少了被攻击的可能。Ip...
    99+
    2023-08-31
    服务器 linux 网络
  • Linux下iptables的DNAT与SNAT的设置方法
    本篇内容介绍了“Linux下iptables的DNAT与SNAT的设置方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!DNAT(Desti...
    99+
    2023-06-12
  • iptables中SNAT和MASQUERADE之间的区别是什么
    本篇内容主要讲解“iptables中SNAT和MASQUERADE之间的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“iptables中SNAT和MASQUERADE之间的区别是什么”...
    99+
    2023-06-12
  • jsp与js与jquery的区别
    jsp与js与jquery的区别:1、js是javascript文件的文件后缀。2、jquery 是一个函数库,是基于javascript的。3、jsp是jsp网页文件的后缀。js是javascript文件的文件后缀,其实就像文本文档a.t...
    99+
    2024-04-02
  • MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci
    参考:mysql字符集小结 utf8mb4 已成为 MySQL 8.0 的默认字符集,在MySQL 8.0.1及更高版本中将 utf8mb4_0900_ai_ci 作为默认排序规则。 新项目只考虑 utf8mb4 U...
    99+
    2022-05-15
    mysql 编码 utf8 utf8mb4 mysql 编码
  • FFmpeg安装与配置(windows与mac)
    FFmpeg命令行安装 使用如下命令进行FFmpeg: sudo apt-get install ffmpeg FFmpeg源码安装 FFmpeg源码获取 使用如下命令获取ffmpeg的源码: git clone  ht...
    99+
    2023-09-02
    ffmpeg
  • html与html5的关系与区别
    html5 是 html 的最新版本,于 2014 年发布,继承并扩展了 html 的语法和结构,增加了许多新功能,提供更丰富的网络体验。它的主要区别包括:引入了新元素和属性,支持多媒体...
    99+
    2024-04-21
    css 地理位置 sessionstorage
  • JAVA与SQL 中的null与NULL解析
    目录一、前言看下面我做的一个简单的测试:二、Java中的null引发这个异常的情况有:2.1 大小写2.2 默认的初值2.3 类型2.4 对null的检查== 与 !=instanc...
    99+
    2024-04-02
  • Socket与ServerSocket类构造方法与API
    目录Socket类概述:构造方法:API:ServerSocket类概述:构造方法:API:Socket类 概述: socket可以使一个应用从网络中读取和写入数据,不同计算机上的两...
    99+
    2024-04-02
  • java 中Comparable与Comparator详解与比较
    java 中Comparable与Comparator详解今天查看TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Co...
    99+
    2023-05-31
    java comparable comparator
  • 【JAVA】JAVA与C++的区别与联系
    个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言两方介绍C++JAVA 不同==|Java不支持指针、模板、指针重载、联合等|====|支持析构函数|====|条件编译和包含|...
    99+
    2023-08-16
    java c++ 开发语言
  • SQL与NoSQL
    一,关系数据库(RDB)    关系型数据库作为传统的数据库,支持完整的ACID属性,其中声明式的SQL语法屏蔽了底层的实现细节,同时关系数据模型也符合人的正常思维逻...
    99+
    2024-04-02
  • RMAN与EXP
    RMAN是基于物理结构的备份,基于数据块的备份,支持与online redolog和archive redolog一起做恢复操作,是Oracle推荐的备份恢复工具。DataDump (IMP/EXP、IM...
    99+
    2024-04-02
  • CSRF与XSS
    Wordpress(低版本)与XSSer 复现过程 首先在虚拟机上搭建wordpress 在wordpress的管理用户界面,可以看到只有admin一个用户 ...
    99+
    2024-04-02
  • LINKEDSERVER 与 ALIAS
    通过在SQL03上“查找CPU消耗前十的查询”(脚本如下所示)时发现,第一名是一个奇怪的语句。 SELECT TOP ( 10 )  &n...
    99+
    2024-04-02
  • Python:import 与__imp
    首先来说一下两者的区别:   import指令做了两件事:1)搜索module,2)绑定到局部变量   内置函数__import__()只做了一件事:搜索module   import指令执行过程中是调用__import__()来...
    99+
    2023-01-30
    Python import __imp
  • BeautifulSoup与aiohtt
      香港电台的节目素质都比较不错,其中有个《中华五千年》的节目是以情景剧与旁白的形式来展示历史故事,由传说时代一直到民国,1983年首播至2000年,非常长寿的一个节目。网上能找到版本声音非常模糊,不过在其《网上中华五千年》的网站上可以在...
    99+
    2023-01-31
    BeautifulSoup aiohtt
  • raw_input() 与 input(
    raw_input() 与 input() __ Python这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。举两个小例子。 1 >>> raw_input_A = raw_...
    99+
    2023-01-31
    raw_input input
  • python与Excel
    1.1 什么是python?Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。被称为胶水语言,Python应用场景广泛,比如WEB开发、网络编程、爬虫、云计算、人工智能、自动化运维、数据分析、游戏开发等……好像有点无所不能...
    99+
    2023-01-31
    python Excel
  • pip2 与 pip3
        在一台电脑同时安装 python2 和 python3,如果使用 pip install 的话,只会给 python2 安装应用,那么,怎样给 python3 安装应用呢?分别在Python2 和 Python3 安装 pip 管理...
    99+
    2023-01-31
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作