“Shell“SNAT,DNAT

news/2024/10/22 18:41:10/

文章目录

  • 一.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.50systemctl restart networkyum -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.0vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.40
NETMASK=255.255.255.0systemctl restart network

网关服务器设置iptables规则

#安装iptables服务
yum -y install iptables*
#删除iptables规则及nat表中规则
iptables -F && iptables -F -t nat
#查看iptables规则
iptables -nLvim /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.40systemctl 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.40systemctl restart networkyum -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.50systemctl restart network

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

vim /etc/sysconfig/network-scripts/ifcfg-ens35
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.2
NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.2
NETMASK=255.255.255.0systemctl 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.ppmy.cn/news/93108.html

相关文章

探讨一次订单拆单流程

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习 1 文章概述 消费者在购物时,电商平台会生成订单。订单相当于是购物者…

本地提权漏洞分析【网络安全】

0. 前言 CVE-2023-21752 是 2023 年开年微软第一个有 exploit 的漏洞,原本以为有利用代码会很好分析,但是结果花费了很长时间,难点主要了两个:漏洞点定位和漏洞利用代码分析,欢迎指正。 1. 漏洞简介 根据官方信息&a…

5月份月刊总结

5月份月刊总结 目录概述需求: 设计思路实现思路分析1.技术经理 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Sur…

使用ScreenToGif录制GIF动态图

文章目录 1.下载ScreenToGif工具2. 下载后双击下面的.msi文件进行安装3. 在编辑器中可以对所有帧添加文字描述 1.下载ScreenToGif工具 链接:https://pan.baidu.com/s/1rvFZSbMdNus90hbzxsJlGA 提取码:gyqe2. 下载后双击下面的.msi文件进行安装 按照默认…

imPlot的使用

1、概述 https://github.com/epezent/implot https://github.com/ocornut/imgui

ros学习

1创建工作空间 catkin_init_workspace 将文件夹初始化成ros文件 编译工作空间catkin_make vi ~/.bashrc 加入环境变量bashrc一下在任何终端都生效 catkin_create_pkg learning_communication通讯机制 std_msgs数据结构 rospy roscpp catkin_create_pkg mbot_description ur…

测试覆盖率详解

一、背景介绍 在软件开发过程中,测试是非常关键的环节。为了保证软件的质量和可靠性,测试覆盖率成为了一个重要的指标。测试覆盖率是指在一定的测试环境下,已经对软件代码进行了多大程度的覆盖测试。 测试覆盖率是衡量测试工作的效果的重要依…

【Docker】- 03 Docker CI、CD(CI、CD、项目配置、环境部署)

Docker CI、CD(CI、CD、项目配置、环境部署) 1 CICD引言2 CI介绍3 搭建Gitlab服务器3.1 准备工作3.2 修改ssh的22端口3.3 编写docker-compose.yml 4 搭建GitlabRunner5 整合项目入门测试5.1 创建项目5.2 编写.gitlab-ci.yml5.3 将maven工程推送到gitlab中…