当前位置: 首页 > news >正文

SNAT和DNAT原理与应用

iptables的备份和还原
1.写在命令行当中的都是临时配置。
2.把我们的规则配置在

备份(导出):iptables-save > /opt/iptables.bak
默认配置文件:/etc/sysconfig/iptables
永久配置:cat /opt/iptables.bak > /etc/sysconfig/iptables
直接导入配置文件到flter表:iptables-restore < /opt/iptables.bak
注意:导入配置也是临时设置。重启即失效。要想永久生效,需写入配置文件:/etc/sysconfig/iptables
自定义链:
1.创建自定义链:iptables -N custom (没有指定表,默认在flter表中,添加一个自定义链"custom")
2.给自定义链改名:iptable -E 原链名 新链名
3.将自定义链创建规则后,系统是识别不到的,需要添加到默认链中:iptables -I INPUT -p icmp -j 自定义链名
删除自定义链:
如果自定义链的规则被系统默认链使用,要先在默认链当中删除,再把自定义链当中的规则删除,最后才能把自定义链删除。
删除自定义链:iptables -X 自定义链名
SNAT和DNAT (源地址转换和目标地址转换)
SNAT:源地址转换
内网到外网转换的是源地址
在这里插入图片描述
在这里插入图片描述

DNAT:目标地址转换
外网到内网转换的是目的地址 (把内部服务器的ip地址转换成一个所有人都可以访问的地址)

在这里插入图片描述

在这里插入图片描述
DNAT的转换
1.DNAT转换------发布内网的Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.80.10
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.233.21

iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.233.21
入站 外网网卡 外网IP 内网服务器IP
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.233.10-192.168.233.100

2、DNAT转换2------发布时修改目标端口
#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.233.21:22

#在外网环境中使用SSH测试
ssh -p 250 root@12.0.0.1

yum -y install net-tools #若没有 ifconfig 命令可提前使用 yum 进行安装
ifconfig ens33

注意:使用DNAT时,同时还要配合SNAT使用,才能实现响应数据包的正确返回

/etc/sysctl.conf :修改配置,可以修改内核参数,永久生效

linux系统如何抓包:
面试题,也是实用技能
tcpdump 来实现linux抓包,是自带的工具。
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 20.0.0.0/24 -w /opt/target.cap
指定抓包的协议 :tcp
-i ens33 只抓经过ens33的数据包
-t:不显示时间戳
-s0:抓取完整的数据包
and:目的端口是80,and 20.0.0.0/24 数据包的源地址
-w把抓包的文件保存

tcpdump tcp -i ens33 -s0 -w ./ens33.cap
动态抓包

http://www.lryc.cn/news/105213.html

相关文章:

  • Java8实战-总结11
  • 2023爱分析·低代码厂商全景报告|爱分析报告
  • 视频两侧有黑边怎么处理?教你裁切视频黑边方法
  • 如何设计一个Android端高性能日志监控系统
  • maven下载按照及初次使用相关配置
  • opencv05-掩膜
  • 通讯软件013——分分钟学会Kepware OPC AE Server仿真配置
  • Windows下安装Hive(包安装成功)
  • count(列名) ,count(1)与count(*) 有何区别?
  • node.js判断元素是否包括
  • 基于SpringBoot+Vue的地方废物回收机构管理系统设计与实现(源码+LW+部署文档等)
  • 【SAP MII学习】Day01--Overview, Security Services, and Workbench
  • 枚举类常见用法,A Guide to Java Enums
  • Vue Baidu Map--vue引入百度地图
  • 使用Express部署Vue项目
  • 344.翻转字符串+387.字符串中的第一个唯一字符
  • 安装mmcv
  • 什么是服务网格?
  • 8.1作业
  • linux-安全技术
  • 如何在免费版 pycharm 中使用 github copilot (chatGPT)?
  • SSD202D-UBOOT-FDT-获取DTB
  • 【Maven】Setting文件分享
  • 使用requestAnimationFrame 实现倒计时功能js(简单秒数倒计时)
  • jenkins通过sshPut传输文件的时候,报错Permission denied的SftpException
  • 【Python】数据分析+数据挖掘——探索Pandas中的数据筛选
  • [数据集][目标检测]天牛数据集目标检测数据集VOC格式3050张
  • python_day16_设计模式
  • uniapp开发小程序-实现中间凸起的 tabbar
  • Vue引入与Vue拦截原理