iptables之SNAT与DNAT

  • 前言
  • 一、SNAT策略及应用
    • (1)SNAT策略概述
      • ①SNAT应用环境
      • ②SNAT的策略原理
      • ③SNAT转换前提条件
    • (2)开启SNAT命令
    • (3)SNAT案例
  • 二、DANT原理与应用
    • (1)DNAT概述
      • ①DNAT应用环境
      • ②DNAT原理
      • ③DNAT转换前提条件
    • (2)开启DNAT命令
    • (3)DNAT转化
    • (4)临时修改目标端口
    • DNAT案例
  • 三、防火墙规则的备份与还原
    • (1)导出(备份)所有表的规则
    • (2)导入(还原)规则
  • 四、tcpdump——Linux抓包
  • 总结

前言

在Centos中,7以上的版本默认防火墙都已经是firewalld了,但是iptables由于其独特的便捷性,依旧被大多数人使用,所以学会在其之上建立的SNAT与DNAT部署策略也就很有必要了。

一、SNAT策略及应用

(1)SNAT策略概述

①SNAT应用环境

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

②SNAT的策略原理

源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射。

③SNAT转换前提条件

局域网各主机已正确设置IP地址、子网掩码、默认路由发送数据

Linux网关开启IP路由转发

(2)开启SNAT命令

Linux系统本身是没有转发功能,只有路由发送数据

临时开启

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               #读取修改后的配置

SNAT转换1:固定的公网IP地址

#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为10.0.0.1
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1可换成单独IP   出站 外网网卡            外网IP
或
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10内网IP   出站 外网网卡                    外网IP或地址池

SNAT转换2:非固定的公网IP地址(共享动态IP地址)

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

(3)SNAT案例

实验需求
配置SNAT(源地址转换)能够实现外网客户端机器访问内网区域web服务

服务环境说明
内网客户端:用于访问外网服务器。IP:192.168.100.120

外网服务器:提供httpd服务 IP:10.0.0.12 开启httpd、服务关闭防火墙和selinux

网关服务器:用一台虚拟机开启核心转发功能来模拟,用于实现SNAT功能

VMware的虚拟网络编辑器中Vmnet1模式网段:192.168.100.0,Vmnet3模式网段:12.0.0.0

  • 下载安装iptables服务并启动,且将web服务器安装httpdfuw并开启

    [root@youzi ~]# yum install httpd -y
    [root@youzi ~]# yum install iptables-services -y
    [root@youzi ~]# systemctl start httpd
    [root@youzi ~]# systemctl start iptables

  • 打开虚拟机,配置两张新网卡

[root@wei ~]# cd /etc/sysconfig/network-scripts/
[root@wei network-scripts]# cp ifcfg-ens33 ifcfg-ens33
[root@wei network-scripts]# cp ifcfg-ens33 ifcfg-ens37 #配置网卡

  • 查看网卡

  • 配置SNAT服务

[root@wei network-scripts]# sysctl -w net.ipv4.ip_forward=1


或永久修改


[root@wei /]# iptables -t nat -F
[root@wei /]# iptables -t nat -vnL
[root@wei /]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1 #配置SNAT策略
[root@wei /]# iptables -t nat -vnL

  • 修改网卡客户端

  • 配置web端网卡

[root@youzi ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #配置服务端网卡


查看网卡
[root@youzi ~]# systemctl restart network
[root@youzi ~]# ifconfig

  • 测试结果


二、DANT原理与应用

(1)DNAT概述

①DNAT应用环境

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

②DNAT原理

修改数据包的目的地址

③DNAT转换前提条件

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

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

Linux网关开启IP路由转发

(2)开启DNAT命令

打开DNAT

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

(3)DNAT转化

把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.100.118

iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.118
或者
iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.118

iptables -t nat -A PREROUTING -i ens37 -p tcp --dport 80 -j DNAT --to 192.168.100.13-192.168.100.20

(4)临时修改目标端口

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

#在外网环境中使用SSH测试
ssh -p 250 root@12.0.0.1
yum -y install net-tools 若没有 ifconfig 命令可提前使用 yum 进行安装
ifconfig ens33

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

DNAT案例

我们在SNAT的基础上继续部署,将客户端与web服务端的网卡调换

  • 修改客户端网络配置

  • 修改web端网卡配置

[root@youzi ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@youzi ~]# systemctl restart network
[root@youzi ~]# ifconfig #设置网卡


  • 配置DNAT转换

[root@wei /]# iptables -t nat -A PREROUTING -i ens33 -d 10.0.0.10 -p tcp --dport 80 -j DNAT --to 192.168.100.120 #配置DNAT策略
[root@wei /]# iptables -t nat -A POSTROUTING -s 192.168.100.120 -o ens33 -j SNAT --to 10.0.0.10

  • 测试结果


三、防火墙规则的备份与还原

(1)导出(备份)所有表的规则

#导出(备份)所有表的规则
[root@ly ~]# iptables-save > /opt/iptables.txt
[root@ly ~]# cat /opt/iptables.txt

(2)导入(还原)规则

iptables-restore < /opt/iptables.txt备份好的文件进行还原
将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfig/iptables
systemctl stop iptables停止iptables服务会清空掉所有表的规则
systemctl start iptables启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则

四、tcpdump——Linux抓包

tcp∶ ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型

-i ens33 ∶只抓经过接口ens33的包
-t 不显示时间戳
-s 0 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
-c 100 只抓取100个数据包
dst port ! 22 不抓取目标端口是22的数据包
src net 192.168.1.0/24 数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机
-w ./target.cap 保存成cap文件,方便用ethereal (即wireshark)分析

总结

  • SNAT的概念与部署方式
  • DNAT的概念与部署方式
  • 防火墙规则的备份与还原
  • tcpdump抓包工具

iptables之SNAT与DNAT相关推荐

  1. linux服务-iptables( snat 和dnat )

    iptables snat 和dnat说明 1.dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.比如,你的Web服务器在LAN内部,而且没有可在Internet上使用的真实IP地址,那就 ...

  2. iptables的SNAT和DNAT应用

    首先开启路由转发功能: # vim /etc/sysctl.conf net.ipv4.ip_forward = 1 # sysctl -p (1)SNAT:内网主机 --访问--> 外网服务器 ...

  3. IPTABLES防火墙SNAT、DNAT网关策略

    查看地址:http://www.jiayf.com/pots/912.html pdf资料下载:  http://www.feijishu.com/thread-29-1-1.html 转载于:htt ...

  4. Linux系统的iptables防火墙、SNAT、DNAT原理与设置规则

    Linux的iptables防火墙.SNAT.DNAT 一.iptables概述 1.netfilter/iptables关系 2.四表五链 四表 五链 规则表之间的优先顺序 规则链之间的匹配顺序 二 ...

  5. iptables 防火墙中的SNAT和DNAT

    目录 前言 一.SNAT策略 1.1 SNAT应用环境 1.2 SNAT原理 1.3 SNAT转换前提条件 1.4 SNAT转换流程 1.4 SNAT 应用 1.4.1 临时打开 1.4.2 永久打开 ...

  6. iptables中的snat与dnat配置技术文档

    文章目录 一.SNAT实验: 二.DNAT实验 首先需要弄清楚snat与dnat的区别: 从定义来讲它们一个是源地址转换(snat),一个是目的地址转换(dnat).都是地址转换的功能,将私有地址转换 ...

  7. iptables中SNAT, DNAT, MASQUERADE

    文章出处:http://server.zdnet.com.cn/server/2008/0317/772069.shtml iptables中可以灵活的做各种网络地址转换(NAT) 网络地址转换主要有 ...

  8. CentOS 7 iptables 防火墙 SNAT DNAT 用法

    iptables 命令基本参数和用法 iptables[-t 表名]命令选项[链名][条件匹配][-j 目标动作或跳转] 说明: 表名链名:用于指定 iptables 命令所操作的表和链 命令选项:用 ...

  9. 基于iptables的SNAT+DNAT+docker服务器集群搭建

    什么是SNAT? SNAT用于局域网访问互联网,局域网的主机A想访问互联网上的主机C,首先要将数据包发送到防火墙所在的主机B,B收到后修改数据包的源地址为B机的公网IP,然后再发送到互联网. C机收到 ...

最新文章

  1. ​我国科学家成功研制全球神经元规模最大的类脑计算机
  2. 基于HTML5实现的(本地存储)多标签页面元素的复制粘贴
  3. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容...
  4. 指针系统学习7-返回指针值的函数
  5. Linux 下的常用工具
  6. LeetCode 2139. 得到目标值的最少行动次数(贪心)
  7. 阿里云迁云方式大汇总 1
  8. 8.8.8.8,Google推出免费DNS解析服务器
  9. 三季度OPPO 持续热销 R11s将成新爆款
  10. 【编程珠玑】第六章 程序性能分析
  11. 【Python】学习笔记2-数据类型:数组、数组循环切片
  12. 图书馆图书借阅登记微信小程序管理软件系统开发制作
  13. xis表格怎么打印_《如何通过虚拟打印机将文件打印成excel文档》 表格怎么打印出来...
  14. 什么是端口映射?如何设置端口映射?
  15. 查看正在运行docker容器的启动命令
  16. 机械硬盘显示数据错误循环冗余检查文件如何寻回
  17. 切西瓜:把一个西瓜切9刀
  18. Aseprite动画技巧
  19. linux 误删文件恢复
  20. 如何用PS制作电子邮票

热门文章

  1. No.6 事件处理
  2. 【转】网页打印格式设置总结
  3. 韦东山的led硬件和驱动分类框架
  4. lasermaker教学视频观看地址合集
  5. markdown标题
  6. 【常见】HBuilderX 运行模拟器 完整配置教程
  7. 网易 java社招面试_《最新面经》—网易Java岗社招面试经历分享
  8. 智能家居计算机控制系统的设计,智能家居控制系统的设计与实现
  9. 作业:学生成绩管理系统
  10. nexus 5X刷机并使用Magisk获取root权限