Linux防火墙之iptables(二)

一.SNAT策略概述

1.SNAT 策略的典型应用环境

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

局域共享上网

2.SNAT 策略的原理

源地址转换,Source Network Address Translation

修改数据包的源地址

未作SNAT转换时的情况

进行SNAT转换后的情况

3.SNAT转换前提条件

局域网各主机已正确设置IP地址、子网掩码

局域网各主机正确设置默认网关地址
Linux网关支持IP路由转发

 修改内核参数为1

临时打开的方法:
echo 1 > /proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip_forward=1#只能临时生效,重启服务器之后会返回为0

永久打开的方法:vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 		#将此行写入配置文件sysctl -p 						#读取修改后的配置

4.配置SNAT 内网连接外网实现源地址转换

第一步:准备虚拟机

准备三台虚拟机;一台当作网关服务器;一台当作外网web服务器;一台当作内网客户机;为了区分内网和外网的区别,设置两个VMnet;VMnet1作为内网;VMnet2作为外网;

第二步:为网关服务器添加配置

(1)多添加一个网络适配器

(2)修改网卡和新网卡配置

记得把复制过来的名字也要修改,之后重启网卡即可;

(3)网关服务器设置同意路由转发

#永久启用
vim /etc/sysctl.confnet.ipv4.ip_forward=1 sysctl -p #若 net.ipv4.ip_forward=0 即无法连通外网地址

第三步:配置客户机

第四步:配置外网web服务器

(1)配置网卡

(2)安装并启动httpd软件

yum install -y httpd systemctl restart httpdnetstat -lntp | grep :80   #查看软件是否开启

第五步:关闭防火墙和syslinux

systemctl stop firewalldsetenforce 0

第六步:配置SNAT源地址转换

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens36 -j SNAT --to 12.0.0.10

拓展:tcpdump Linux系统抓包工具

tcpdump tcp -i ens33 -t -s 0 -c 100 and port ! 22 and net 192.168.1.0/24 -w ./target.cap

tcp 协议  port 端口 [src/dst]  net 网段     -i 网卡  -s 0  -w XXX.cap

                                                host 主机IP

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些协议选项等都要放到第一个参数的位置,用来过滤数据包的类型;

(2)-i ens33 : 只抓经过接口ens33的包

(3)-t : 不显示时间戳

(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包

(5)-c 100 : 只抓取100个数据包

(6)port ! 22 : 不抓取端口是22的数据包

(7)net 192.168.1.0/24 : 数据包的网络地址为192.168.1.0/24

(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

第七步:在内网ping外网服务器,并用tcpdump抓包工具查看信息;

内网:  ping -c 10 12.0.0.20            #先ping外网:
tcpdump -i ens33 -s 0 -w ./test2.cap   #再tcpdump抓包;内网ping完后sz test1.cap 到真机文件中,使用 winsharp 进行查看抓包

之后,就可以了;配置完成。

SNAT    内网 --> 外网   转换源地址
iptables  -t nat  -A POSTROUTING  -s 内网的源地址/网段  -o 出站网卡  -j SNAT  --to 要转换的公网源地址

5.共享动态IP地址上网

MASQUERADE--地址伪装

适用于外网IP地址非固定的情况

对于ADSL拨号连接,接口通常为 ppp0、ppp1

将SNAT规则改为MASQUERADE即可

二.DNAT策略概述

1.DNAT策略的典型应用环境

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

2.DNAT策略的原理

目标地址转换,Destination Network Address Translation

修改数据包的目的地址

3.DNAT转换的前提条件

局域网的Web服务器能够访问Internet

网关的外网IP地址有正确的DNS解析记录

Linux网关支持IP路由转发

4.配置DNAT

拓扑图

第一步:准备虚拟机设置IP地址和网关

将一台主机放在内网,作为Web服务器,两台作为客户端放在外网,一台作为网关务器

与DNAT实验时相反,这次的web服务器在内网环境,服务机在公网环境

第二步:准备DNS服务器给外网客户端使用

yum install -y bind

要保证镜像已挂载

vim /etc/named.conf

vim /etc/named.rfc1912.zones

cd /var/named/
cp -p named.localhost xy101.com.zonevim xy101.com.zone

systemctl start named
systemctl enable named

去客户机验证;要在 /etc/resolv.conf 文件总提前添加配置

vim /etc/resolv.conf
nameserver 12.0.0.30nsloookup www.xy101.com

第二步:配置内核配置文件,添加ip_forward 实现路由转发功能的开启

vim /etc/sysctl.confnet.ipv4.ip_forward = 1保存退出之后 
sysctl -p

客户机验证;能 ping 通就是成功

ping 192.168.80.30
ping 12.0.0.30
ping 12.0.0.100
ping 12.0.0.200

第三步:作DNAT转换

用客户机做网页查询;没有任何反应

添加这条配置即可实现访问网址 ; 记得关闭防火墙iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.30 -p tcp --dport 80 -j DNAT --to 192.168.80.15:80

实现远程登录Web服务器

添加这条配置iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.30 -p tcp --dport 2345 -j DNAT --to 192.168.80.15:22

域名和IP地址都可以实现

DNAT   外网 -->  内网   转换目的地址:端口
iptables  -t nat  -A PREROUTING   -i 入站网卡  -d 原公网目的地址  -p 协议 --dport 原目的端口  -j DNAT  --to 要转换的内网目的地址:端口

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

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

相关文章

用three.js+echarts给公司写了一个站点数据大屏系统经验总结

时间过的好快,参加公司的新项目研发快一年了,五一机器人项目首秀,我们遇到了高并发集中下单情景,然后海量数据处理场景来了,给我在后端领域的高并发实践业务上画上了漂亮的一笔经验。人都是在磨练中成长,我很感谢这次给我的机会,虽然有点累,但也有点小成就。正好现在有…

AGI系列(1):掌握AI大模型提示词优化术,提问准确率飙升秘籍

当我们向AI大模型提问时,通常人们的做法是有什么问题,就直接去问,得到大模型的回复结果,时好时坏,完全没有可控性。 那么有没有一种方式或是一套方法,可以让我们向大模型提问时,得到的结果更准确…

nacos 2.3.3 Windows系统安装详细版

1,下载 https://github.com/alibaba/nacos/releases 2,解压 3,将nacos的内置库(derby),修改为我们自己的 mysql 3.1 创建一个数据库 3.2 连接数据库 3.3 执行mysql 脚本,在nacos的conf 目录下 mysql-schema.sql 执…

深入了解 Golang 多架构编译:交叉编译最佳实践

随着软件开发领域的不断发展,我们面临着越来越多的挑战,其中之一是如何在不同的平台和架构上部署我们的应用程序。Golang(Go)作为一种现代化的编程语言,具有出色的跨平台支持,通过其强大的多架构编译功能&a…

刷代码随想录有感(79):回溯算法——N皇后问题

题干: 代码&#xff1a; class Solution { public:vector<vector<string>> res;void backtracking(vector<string>& chessboard, int n, int row){if(row n){res.push_back(chessboard);return;}for(int col 0; col < n; col){if(isvalid(chessboa…

将3D检测的box框投影到BEV图片上

前言 点云数据作为一种丰富的三维空间信息表达方式&#xff0c;通常用于自动驾驶、机器人导航和三维建模等领域。然而&#xff0c;点云数据的直观性不如二维图像&#xff0c;这限制了它在一些需要快速视觉反馈的应用场景中的使用。本文将探讨如何将点云数据转换为二维图像&…

公共代理IP和独享代理IP之间的区别?

公共代理IP和独享代理IP在网络应用中扮演着不同的角色&#xff0c;它们之间的区别主要体现在使用方式、性能、安全性以及隐私保护等方面。以下是对这两种代理IP的详细对比和分析。 第一点就是使用的方式以及成本上的不同&#xff0c;公共代理IP&#xff0c;顾名思义&#xff0…

python基于深度学习的聊天机器人设计

python基于深度学习的聊天机器人设计 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 登录注册功能 用户在没有登录自己的用户名之前只能浏览本网站的首页&#xff0c;想要使用其他功能都…

服务器被黑?快速检测和识别系统中的恶意进程

在管理和维护服务器时,检测和识别系统中的恶意进程是非常重要的。本文将详细介绍几种常用方法和工具,帮助您有效地检测和处理恶意进程,确保系统的安全性。 方法一:使用系统监控工具 1.1. 使用 ps 命令 ps 命令可以列出系统中所有正在运行的进程。使用以下命令查看特定用户…

SpringBoo+vue3整合讯飞星火3.5通过webscoket实现聊天功能(全网首发)附带展示效果

API版本&#xff1a;Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能&#xff08;首发&#xff09;复制粘贴即可使用&#xff0c;后续更新WebSocket实现聊天功能_讯飞星火web聊天-CSDN博客https://blog.csdn.net/qq_53722480/article/details/138865508?csdn_share_t…

STL库 —— unordered_set与unordered_map的封装

这里要对 unordered_set 与 unordered_map 进行封装&#xff0c;封装时使用的是上一篇中学的 HashBucket 。不仅要完成封装&#xff0c;同时要写入迭代器。 一、HashBucket 的修改 1.1 节点的修改 T 首先来认识一下使用 unordered_set 和 ordered_map 时的区别&#xff1a; …

深入浅出MySQL事务实现底层原理

重要概念 事务的ACID 原子性&#xff08;Atomicity&#xff09;&#xff1a;即不可分割性&#xff0c;事务中的操作要么全不做&#xff0c;要么全做一致性&#xff08;Consistency&#xff09;&#xff1a;一个事务在执行前后&#xff0c;数据库都必须处于正确的状态&#xf…

Java开发大厂面试第17讲:MySQL 的优化方案有哪些?数据库设计、查询优化、索引优化、硬件和配置优化等

性能优化&#xff08;Optimize&#xff09;指的是在保证系统正确性的前提下&#xff0c;能够更快速响应请求的一种手段。而且有些性能问题&#xff0c;比如慢查询等&#xff0c;如果积累到一定的程度或者是遇到急速上升的并发请求之后&#xff0c;会导致严重的后果&#xff0c;…

变分自动编码器(VAE)深入理解与总结

本文导航 0 引言1 起源1.1 自编码器的任务定义1.2 自编码器存在的问题1.3 VAE的核心思路 2 VAE的建模过程2.1 VAE的任务定义2.2 真实分布 ϕ \phi ϕ是什么&#xff0c;为什么要逼近这个分布的参数&#xff0c;如何做&#xff1f;2.3 “重参数化&#xff08;Reparameterization…

互联网十万个为什么之 什么是Kubernetes(K8s)?

Kubernetes&#xff08;通常简称为K8s&#xff09;是一款用于自动部署、扩缩和管理容器化应用程序的开源容器编排平台。Kubernetes已发展为现代企业实现敏捷开发、快速迭代、资源优化及灵活扩展的关键技术组件之一。它拥有庞大的开源社区和丰富的生态系统。围绕Kubernetes已经形…

.lib .a .dll库互转

编译 mingw工具&#xff0c;gendef.exe转换dll为a&#xff0c;reimp转换lib为adlltool.exe --dllname python38.dll --def python38.def --output-lib libpython38.adlltool -k -d crypto.lib -l crypto.a 创作不易&#xff0c; 小小的支持一下吧&#xff01;

QT之常用控件

一个图形化界面当然需要有各种各样的控件&#xff0c;QT也不例外&#xff0c;在QT designer中就有提供各种各样的控件&#xff0c;用以开发图形化界面。 而想使用好一个QT控件&#xff0c;就需要了解这些控件。 QWidget 在QT中&#xff0c;所有控件都继承自 QWidget 类&…

推荐10款优秀的组件库(一)

1.Ant Desgin UI 网址&#xff1a; https://ant-design-mobile.antgroup.com/zh Ant Design - 一套企业级 UI 设计语言和 React 组件库 "Ant Design Mobile"是一个在线的移动端Web体验平台&#xff0c;让你探索移动端Web的体验极限。 添加图片注释&#xff0c;不…

622.设计循环队列

typedef struct {int* a;int head;int tail;int k; } MyCircularQueue;bool myCircularQueueIsEmpty(MyCircularQueue* obj); bool myCircularQueueIsFull(MyCircularQueue* obj);//初始化 MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue* obj(MyCircularQue…

探索python列表处理:偶数筛选的两种方法

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、不使用列表生成式的偶数筛选 1. 读取输入列表 2. 筛选偶数 三、使用列表生…