8.防火墙-SNAT和DNAT

news/2025/2/12 20:53:50/

文章目录

  • SNAT-内网客户访问外网服务
    • 原理
    • 操作实验
  • DNAT-外网客户访问内网服务
    • 原理
    • 操作实验
  • tcpdump

SNAT-内网客户访问外网服务

原理

在这里插入图片描述
由内网到外网:从内网发到外网的数据包的源IP由私网IP转换成公网IP

由外网到内网:从外网发到内网的数据包的目的IP由公网IP转换成私网IP

  • SNAT步骤:

    • 内网的网关对应的是网关服务器上的相对应的内网网卡IP
    • 打开网关服务器路由转发功能 /etc/sysctl.conf 内核配置文件
    • 转换内网源IP为网关服务器上的外网网卡IP,设置SNAT
##永久修改vim/etc/sysctl.conf    ##修改内核配置文件##添加配置
net.ipv4.ip_forward=1##修改后,读取配置
sysctl -p
##SNAT转换指定固定公网IP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to 218.29.30.31##SNAT转换为公网地址池
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to 218.29.30.1-218.29.30.35##SNAT转换为共享动态IP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j MASQUERADE

操作实验

##内网客户端systemctl stop firewalld             ##关闭防火墙
setenforce 0###修改网卡为内网IP和内网网关IP
vim /etc/sysconfig/network-script/ifcfg-ens32IPADDR=192.168.242.66     ##内网IP
NETMASK=255.255.255.0
GATEWAY=192.168.242.30    ##网关服务器上的内网网卡IPsystemctl restart network  ##重启网卡

在这里插入图片描述

##外网服务端systemctl stop firewalld             ##关闭防火墙
setenforce 0###修改网卡为外网IP和网关IP
vim /etc/sysconfig/network-script/ifcfg-ens32IPADDR=12.0.0.200    ##外网IP
NETMASK=255.255.255.0
GATEWAY=12.0.0.30    ##网关服务器上的外网网卡IPsystemctl restart network  ##重启网卡###安装网络服务
yum -y install httpdcd /var/www/html                    ##创建首页显示
echo 'hello world' > test.html
systemctl start httpd                ##开启网络服务

在这里插入图片描述
在这里插入图片描述

##网关服务器###添加网卡,并修改对应网卡的IPvim /etc/sysconfig/network-script/ifcfg-ens32    ##修改内网网卡IPADDR=192.168.242.30    ##内网IP
NETMASK=255.255.255.0vim /etc/sysconfig/network-script/ifcfg-ens33    ##修改外网网卡IPADDR=12.0.0.30         ##外网IP
NETMASK=255.255.255.0systemctl restart network   ##重启网卡##防火墙配置iptables -F && iptables -t nat -F    ##清空防火墙配置
systemctl stop firewalld             ##关闭防火墙
setenforce 0##打开服务器的路由转发功能
vim /etc/sysctl.conf     ##修改内核配置文件
net.ipv4.ip_forward=1
sysctl -p                ##加载配置##添加数据转发
iptables -t filter -A FORWARD -s 192.168.242.0/24 -j ACCEPT##SNAT转换指定固定公网IP
iptables -t nat -A POSTROUTING -s 192.168.242.0/24 -o ens33 -j SNAT --to 12.0.0.30

在这里插入图片描述

DNAT-外网客户访问内网服务

原理

在这里插入图片描述
由外网到内网:从外网发来的数据包的目标IP由公网IP转换成私网IP,网关服务器在根据私网IP转发到内网服务器

由内网到外网:内网服务器响应数据包的源IP从内网IP转换为外网IP

操作实验

##内网服务器systemctl stop firewalld
setenforce 0###修改网卡为内网IP和内网网关IP
vim /etc/sysconfig/network-script/ifcfg-ens32IPADDR=192.168.242.66     ##内网IP
NETMASK=255.255.255.0
GATEWAY=192.168.242.30    ##网关服务器上的内网网卡IPsystemctl restart network  ##重启网卡###安装网络服务
yum -y install httpdcd /var/www/html                    ##创建首页显示
echo 'hello world' > test.html
systemctl start httpd                ##开启网络服务
##外网客户端systemctl stop firewalld
setenforce 0###修改网卡为外网IP和网关IP
vim /etc/sysconfig/network-script/ifcfg-ens32IPADDR=12.0.0.200    ##外网IP
NETMASK=255.255.255.0
GATEWAY=12.0.0.30    ##网关服务器上的外网网卡IPsystemctl restart network  ##重启网卡
##网关服务器##添加网卡vim /etc/sysconfig/network-script/ifcfg-ens32    ##修改内网网卡IPADDR=192.168.242.30    ##内网IP
NETMASK=255.255.255.0cp ifg-en32 ifcfg-ens33
vim /etc/sysconfig/network-script/ifcfg-ens33    ##修改外网网卡IPADDR=12.0.0.30         ##外网IP
NETMASK=255.255.255.0systemctl restart network   ##重启网卡##防火墙配置iptables -F && iptables -t nat -F    ##清空防火墙配置
systemctl stop firewalld             ##关闭防火墙
setenforce 0##打开服务器的路由转发功能
vim /etc/sysctl.conf     ##修改内核配置文件
net.ipv4.ip_forword=1
sysctl -p                ##加载配置iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.30 -p tcp --dport 8080 -j DNAT --to 192.168.242.66:80iptables -t nat -A POSTROUTING -s 192.168.242.0/24 -o ens33 -j SNAT --to 12.0.0.30iptables -t filter -A FORWORD -s 192.168.242.0/24 -j ACCEPT
iptables -t filter -A FORWORD -s 12.0.0.0/24 -j ACCEPT

tcpdump

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

http://www.ppmy.cn/news/74027.html

相关文章

Springboot +spring security,自定义认证器实现验证码功能

一.简介 SpringSecurity 默认是不支持验证码功能的,但是可以自己扩展,这也是使用SpringSecurity的好处之一,原生不支持,我们就自己扩展。 二.思路分析 因为系统默认的有一个DaoAuthenticationProvider 认证处理器,但…

使用Python实现Rest API指南

在今天的数字化世界中,数据的获取、交换和使用已经成为几乎所有行业的核心部分。无论您正在为一个大型公司设计复杂的软件系统,还是只是为了个人项目尝试获得一些公开的数据,理解和利 用API——尤其是RESTful API——都是一项至关重要的技术。…

细说java动态代理及使用场景

一、定义 Java代理模式是一种结构型设计模式,它允许通过创建一个代理对象来间接访问另一个对象,从而控制对原始对象的访问。 1.1 作用 1、在访问原始对象时增加额外功能,如访问前或访问后添加一些额外的行为。 2、控制对原始对象的访问。 J…

ARM汇编 C语言数据存储 堆和栈的区别

ARM汇编 ARM汇编是一种用于编写针对ARM架构的汇编语言。它是ARM处理器的底层指令集的人类可读表示形式,用于编写底层的系统级代码或优化特定的程序。 ARM汇编语言使用助记符(mnemonic)来表示不同的指令操作,例如"ADD&quo…

apk 作为资源提供 aar 的过程

1:参考:Android将APK项目封装为SDK(AAR) https://blog.csdn.net/weixin_51522235/article/details/128216091 四大点:1: apply plugin:com.android.library 2:去掉:applicationId 3:去掉:applicationVariants.all…

keycloak异常关闭报错username ‘admin‘ already added时卡死无法重启的问题处理

问题现象 使用docker部署keycloak服务,使用docker-compose进行配置管理,配置如下: keycloak:image: jboss/keycloak:16.1.0 container_name: keycloakcommand:[-b,0.0.0.0,-Dkeycloak.migration.actionimport,-Dkeycloak.migration.provider…

深入理解 Linux 内核

Linux 内核系列文章 Linux 内核设计与实现 深入理解 Linux 内核 深入理解 Linux 内核(二) Linux 设备驱动程序 Linux设备驱动开发详解 文章目录 Linux 内核系列文章前言一、绪论二、内存寻址1、内存地址2、硬件中的分段(1)段选择符…

streamlit简介和使用教程2

文章目录 显示文本显示图像、视频音频进度和状态侧边栏和容器侧边栏容器显示图表显示文本 #显示文本 st.write("Hello,lets learn how to build a streamlit app together")st.title():用于添加应用程序的标题st.header():用于设置节的标题st.subheader():用于设…