iptables防火墙(二)SNAT、DNAT

495 阅读1分钟

image.png


规则的导出、导入

重启主机或者重启服务后,会重置规则,之前的配置都不会保存。 image.png

默认配置

重启主机或者重启服务后,会重置规则,该规则内容就在/etc/sysconfig/iptables。每当重启服务,就会读取该文件内容,恢复配置。 image.png

导出规则

iptables-save > 保存位置/保存文件名

image.png

配置内容被保存到该文件 image.png

导入规则

iptables-restore < 保存位置/保存文件名 

image.png

但每次重启后,依然会变回默认配置。如果要每次启动都会自动变成自己配置的规则,就需要将备份的文件覆盖过去,或者直接将配置的规则备份重定向输出到默认配置的文件中,之后每次重启都会是自己所配置规则。 image.png

SNAT

SNAT应用环境

  • 局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理

  • 源地址转换
  • 修改数据包的源地址

image.png

SNAT应用

前提条件

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

编写SNAT转换规则

iptables -t nat -A POSTROUTING -s 192.168.44.0/24 -o ens36 -j SNAT --to-source 12.0.0.254
#-A POSTROUTING:路由选择后再处理
#-s 192.168.44.0/24:局域网段的地址
#-o ens36:外网接口的名称
#--to-source 12.0.0.254:外网接口的IP地址

SNAT的实现

image.png

  1. 配置网关服务器,需要两块网卡,并对两块网卡各自配置,ens33位于vmnet1,ens36位于vmnet2

    • 网关服务器ens33配置 image.png

    • 复制ens33配置文件为ifcfg-ens36,网关服务器ens36配置 image.png

    • 配置完后重启网卡服务,查看配置结果 image.png

  2. 内网主机配置,配置完后重启网卡服务 image.png

  3. 外网服务器配置,配置完后重启网卡服务,并且安装httpd,启动服务 image.png image.png

    • 访问自己地址测试是否能正常访问 image.png
  4. 网关服务器测试

    • 网关服务器测试是否能ping通内网主机和外网服务器地址 image.png

    • 在网关服务器测试是否能正常访问 image.png

  5. 网关服务器在内核配置文件/etc/sysctl.conf添加配置,配置完后sysctl -p加载配置,此配置用于开启服务器ip的路由转发功能 image.png
    image.png

    • 加载完配置后,内网主机原本不能ping通外网服务器地址,现在可以ping通
      image.png
  6. 打开外网服务器httpd日志文件/var/log/httpd,tail -f追踪查看。用内网主机访问外网服务器,发现可以访问到。到此IP转发实现完成 image.png image.png

  7. 在网关服务器设置iptables规则 image.png

  8. 内网主机清除完缓存后重新访问外网服务器,不清楚缓存可能无法看到正常返回结果 image.png image.png image.png image.png

  9. 外网服务器查看会发现,访问外网服务器的地址是网关服务器的外网接口IP地址 image.png

DNAT

DNAT应用环境

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

DNAT策略的原理

  • 目标地址转换
  • 修改数据包的目标地址

image.png

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

DNAT应用

前提条件

  • 局域网的Web服务器能够访问Internet
  • Linux网关支持IP路由转发

编写DNAT转换规则

iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.44.30:80
#-A PREROUTING:路由选择之前处理
#-d 12.0.0.254:外网接口的IP地址
#-p tcp:服务需要的协议
#--dport 80:发布的服务端口
#--to-destination 192.168.44.30:80:Web主机的内网IP地址及端口号,如果端口号不变可不带

DNAT的实现

image.png

  1. 配置网关服务器,需要两块网卡,并对两块网卡各自配置,ens33位于vmnet1,ens36位于vmnet2

    • 网关服务器ens33配置 image.png

    • 网关服务器ens36配置 image.png

  2. 内网服务器配置,配置完后重启网卡服务,内网安装httpd,并启动服务 image.png image.png

  3. 外网客户机配置,配置完后重启网卡服务 image.png

  4. 网关服务器测试

    • 网关服务器测试是否能ping通内网服务器和外网客户机地址 image.png

    • 在网关服务器测试是否能正常访问 image.png

  5. 网关服务器在内核配置文件/etc/sysctl.conf添加配置,配置完后sysctl -p加载配置,此配置用于开启服务器ip的路由转发功能 image.png
    image.png

  6. 内网与外网通信,首先要做SNAT image.png

  7. 进行DNAT设置 image.png

  8. 打开内网服务器httpd日志文件/var/log/httpd,tail -f追踪查看。用外网客户机访问网关服务器地址,发现可以访问到,并且地址为客户机外网地址 image.png image.png

tcpdump抓包

首先需要安装tcpdump image.png

例:
tcpdump tcp -i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
  • 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 prot
  • src net 192.168.1.0/24:数据包的源网络地址为192.168.1.0/24,目的地址用dst net
  • -w ./target.cap:保存成cap文件,方便用ethereal (即wireshark)分析

导出的文件可在wireshark查看内容。 image.png

搜索栏输入内容可进行过滤。 image.png

过滤指令作用
ip.addr == IP地址查找源地址或目的地址为该地址的包
ip.dst == IP地址查找目的地址为该地址的包
ip.src == IP地址查找源地址为该地址的包
tcp.port == 80查找端口为tcp80的包
tcp.dstport == 80查找目的端口为tcp80的包
查找端口可用不等号,如>=80即查找大于等于80的端口
http查找服务类型为http类型的包
tcp查找协议类型为tcp的包
arp查找协议类型为arp的包
&&
||