一、SNAT
1、SNAT实验目的
公司内有2台机器,但是只有一个公网ip,利用SNAT技术实现2台私网地址都可以访问公网。

2、SNAT实验环境准备
①三台服务器:PC1客户端、PC2网关、PC3服务端。

②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡

③网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。

④IP地址要求:PC1为192.168.30.11/24--网关为192.168.30.12、PC2网关的ens33网卡地址为192.168.30.12/24--网关为192.168.30.12、ens36为12.0.0.254/24--不需要网关、PC3为12.0.0.100/24--网关为12.0.0.254

3、实验拓扑

4、实验步骤

①首先关闭三台机器的防火墙和selinux

三台机器全部执行:
systemctl stop firewalld
setenforce 0

②配置PC3服务端,安装httpd服务修改网卡ip为12.0.0.100/24--网关为12.0.0.254,重启网卡。

PC3执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254

③配置PC1客户端,修改网卡ip为192.168.30.11/24---网关192.168.30.12,重启网卡。

PC1执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=192.168.30.11
NETMASK=255.255.255.0
GATEWAY=192.168.30.12

④配置PC2网关服务器,首先配置ens33和ens36网卡的ip地址。

PC2执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=192.168.30.12
NETMASK=255.255.255.0
GATEWAY=192.168.30.12

cp /etc/sysconfig/network-script/ifcfg-ens33 /etc/sysconfig/network-script/ifcfg-ens36
#复制ens33配置文件给ens36网卡,新增网卡不会有配置文件
ens36配置文件修改:将UUID此行删除,修改ip和网关
IPADDR=12.0.0.254
NETMASK=255.255.255.0

⑤开启PC2网关服务器的路由转发功能,重启网卡。

vim /etc/sysctl.conf
添加内容:
net.ipv4.ip_forward=1

⑥检测PC1、PC2、PC3三台机器之间是否互通(使用虚拟机做实验默认是互通的,是由于处在同一环境中,生产环境内网和外网没有SNAT的情况下是不通的)

⑦在PC1上curl 服务端ip,然后在服务端实时查看/var/log/httpd/access_log日志。可查看到源ip为PC1的ip,所以是未经过NAT的,生产环境中不可能直接curl通。

⑧在PC2中添加防火墙规则使得来源于192.168.30.0/24网段的所有从ens36网阿卡流出数据的ip全部NAT为12.0.0.254。然后再使用PC1去curl 服务端并在服务端实时查看日志。

PC2执行:
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens36 -j SNAT --to 12.0.0.254
# -t nat 指定使用nat表
# -A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
# -s 指定源ip
# -o 指定输出网卡为ens36时
# -j 指定跳转到SNAT处理
# --to 指定SNAT nat为12.0.0.254这个地址

5、实验结果
不经过nat的地址为pc1自己的地址,使用虚拟机环境才会出现这种情况,生成环境是不通的。

经过nat之后的地址是公司的公网ip地址,由网关服务器iptables规则SNAT实现。

二、DNAT
1、DNAT实验目的
为保护公司业务服务器安全,业务服务器在私网中,从公网访问的用户只能通过nat为业务服务器的私网网关地址才可访问。

2、DNAT实验环境准备
①三台服务器:PC1客户端、PC2网关、PC3服务端。

②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡

③网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。

④IP地址要求:PC1为192.168.30.11/24--网关为192.168.30.12、PC2网关的ens33网卡地址为192.168.30.12/24--网关为192.168.30.12、ens36为12.0.0.254/24--不需要网关、PC3为12.0.0.100/24--网关为12.0.0.254

3、实验拓扑

备注:PC1客户方做业务服务器,PC3服务端做公网用户。

4、实验步骤
①首先给三台机器做一个SNAT,原因是做DNAT之后内网的PC1需要通过SNAT给公网的用户返回数据包。

②在内网PC1上安装一个httpd服务并开启,作为内网的业务服务器。

③PC2网关服务器上配置DNAT规则。

PC2执行:
iptables -t nat -A PREROUTING -d 12.0.0.254 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.30.12
# 从ens36网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.30.12
# -t nat 指定使用nat表
# -A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
# -d 指定目的ip
# -i 指定输出网卡为ens36时
# -p 指定协议为tcp协议

# --dport 指定目的端口为80
# -j 指定跳转到DNAT处理
# --to 指定DNAT nat到192.168.30.12这个地址

④实时查看PC1的/var/log/httpdd/access_log日志,使用PC3公网地址直接curl 内网的PC1,可以看到日志中源地址。

 

5、实验结果

经过DNAT之后的用户访问公网的网关即会跳转到内网的PC1内网的httpd服务中。PC1内网日志会显示访问的源公网ip。

Linux系统安全:SNAT和DNAT的实现的更多相关文章

  1. 经验分享:Linux 双网卡SNAT和DNAT映射本地端口出外网

    A 机器 网卡1  公网IP网卡2  内网 B 机器网卡1 内网 如果想把公网端口P1 映射为内网B机器端口P2 iptables -t nat -A PREROUTING -d [A公网地址] -p ...

  2. 详解Linux下iptables中的DNAT与SNAT设置(转)

    详解Linux下iptables中的DNAT与SNAT设置 这篇文章主要介绍了Linux下iptables中的DNAT与SNAT设置,是Linux网络配置中的基础知识,需要的朋友可以参考下   原文连 ...

  3. 10.Linux防火墙iptables之SNAT与DNAT

    Linux防火墙iptables之SNAT与DNAT 目录 Linux防火墙iptables之SNAT与DNAT SNAT策略及应用 SNAT策略概述 SNAT策略典型应用环境 SNAT策略原理 SN ...

  4. iptables snat 和dnat说明

    iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下. dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.如果一个包被匹配了,那么和它属于同一个流 ...

  5. centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课

    centos  Linux系统日常管理2  tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...

  6. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

  7. Linux 笔记 - 第十三章 Linux 系统日常管理之(二)Linux 防火墙和任务计划

    博客地址:http://www.moonxy.com 一.前言 Linux 下的的防火墙功能是非常丰富的,作为 Linux 系统工程师有必要了解一下.防火墙一般分为硬件防火墙和软件防火墙.但是,不管是 ...

  8. 【Linux】 经典Linux系统工程师面试题(转载)

    1.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0: 答: # iptables -t nat -A PREROUTING -d 192.16 ...

  9. Linux 系统常用管理命令(精简笔记)

    Linux是一套免费使用和自由传播的类Unix操作系统,下面的笔记是我从鸟菜中摘抄出来的重要命令,并进行了一定的排版,摒弃了一些用不到的乱七八糟的命令,目的是在生产环境中能够快速的定位并查询需要命令的 ...

  10. Linux系统安全需要注意的一些问题

    写在前面:当你部署一台服务器,第一步不应该是部署应用,安全是才是首要任务 如果某一天当你登录服务器发现 /bin/bash –i,python -c 'import pty; pty.spawn(&q ...

随机推荐

  1. RealWorld CTF 5th ShellFind 分析

    前言 RealWorld CTF 5th 里的一道iot-pwn,根据真实设备固件改编而成,觉得题目贴近iot实战且很有意思,故在此记录一下复现过程. 题目分析 题目描述 Hello Hacker. ...

  2. Function接口-默认方法:andThen

    Function接口 java.util.function.Function<T,R〉接口用来根据一个类型的数据得到另一个类型的数据,前者称为前置条件,后者称为后置条件. 抽象方法:apply ...

  3. 12月6日内容总结——BOM、DOM、两者查找标签的方式和操作标签的方式、操作class和css的方法、事件、jQuery类库

    目录 一.BOM操作 BOM概念 window对象 window的子对象 navigator对象(了解即可) screen对象(了解即可) history对象(了解即可) location对象 弹出框 ...

  4. 带你动手做AI版的垃圾分类

    摘要:本案例将使用YOLOX模型,实现一个简单的垃圾分类应用. 本文分享自华为云社区<ModelBox社区案例 - 使用YOLOX做垃圾分类>,作者:HWCloudAI. 1 ModelB ...

  5. statefulset详解及为何结合headless service部署有状态应用

    1.1 有状态应用管理statefulset StatefulSet(有状态集,缩写为sts)常用于部署有状态的且需要有序启动的应用程序,比如在进行SpringCloud项目容器化时,Eureka的部 ...

  6. 一个关于DOM的小小思考

    在学习过程中碰见这样一个方法(原生JavaScript可使用的方法): document.querySelector('div').innerHTML=` <h2>编号:${resp.id ...

  7. 【LeetCode字符串#05】基于个人理解的KMP算法图解,以及应用到strStr()函数实现

    KMP算法(用于实现 strStr()) strStr()函数是用来在一个字符串中搜索是否存在另一个字符串的函数,其匹配字符串方式为KMP算法 KMP算法基础理论 假设有如下两个字符串 文本串 aab ...

  8. 远程控制 todesk

    最近发现的一个好用的远程连接软件 便是近些年推出来的 todesk 虽然qq的远程 和 向日葵的 远程连接也都可以达到我要实现的效果 但是体验起来的话 我个人还是觉得 todesk更好用一些 下载地址 ...

  9. Dapr Workflow构建块的.NET Demo

    Dapr 1.10版本中带来了最有亮点的特性就是工作流构建块的的发布,虽然是Alpha 阶段,可以让我们尽早在应用系统中规划工作流, 在使用Dapr的系统中更好的编写负责的分布式应用系统.Dapr 工 ...

  10. brew基本操作指南

    brew安装: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&q ...