熟练应用snat和dnat,掌握公网私网之间的连通(补充防火墙规则备份以及如何Linux抓包)

Posted 丁CCCCC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了熟练应用snat和dnat,掌握公网私网之间的连通(补充防火墙规则备份以及如何Linux抓包)相关的知识,希望对你有一定的参考价值。

一、SNAT

1.1 原理与应用

  • SNAT应用环境
    • 局域网主机共享单个公网IP地址接入Internet ( 私有IP不能在Internet中正常路由)
  • SNAT原理
    • 修改数据包的源地址

1.2 SNAT转换前提条件

  • 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
  • Linux网关开启IP路由转发

1.3 开启snat

临时打开

echo 1 > /proc/sys/net/ipv4/ip_forward
或者
sysctl 1 -w net.ipv4.ip_forward=1

永久打开

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1			# 在配置文件内加入这一行

sysctl -p						# 读取修改后的配置

1.4 转换

固定的公网 IP 地址

iptables -t nat -A POSTROUTING -s 192.168.253.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.253.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
									(内网IP)	  (出站外网网卡)					(外网IP或地址池)

非固定的公网 IP 地址(动态)

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

1.5 补充

一个 IP 地址做SNAT转换,一般只能让100-200台主机实现上网,局限性较大

二、DNAT

2.1 原理与应用

  • DNAT应用环境
    • 在Internet中 发布位于局域网内的服务器
  • DNAT原理
    • 修改数据包的目的地址

2.2 DNAT转换前提条件

  1. 局域网的服务器能够访问Internet
  2. 网关的外网地址有正确的DNS解析记录
  3. Linux网关开启IP路由转发

2.3 开启dnat

与snat相同

2.4 转换

发布内网的Web服务

#把从ens33进来的要访问web服务的数据包目的地址转换为192.168.253.22
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.22
或者
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.253.22
							(入站外网网卡) (外网IP)											  (内网服务器IP)

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.253.20-192.168.253.30 

发布时修改目标端口

#发布局域网内部的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 333 root@12.0.0.1

yum -y install net-tools		# 安装ifconfig命令
ifconfig ens33

2.5 补充

  • 使用DNAT时,同时还要配合SNAT使用,才能实现响应数据包的正确返回
  • 主机型防火墙主要使用INPUT、OUTPUT链,设置规则时–般要详细的指定到端口
  • 网络型防火墙主要使用FORWARD链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可

三、防火墙规则备份和还原

3.1导出备份表的规则

iptables-save > /opt/ipt.txt

3.2 导入规则

iptables-restore < /opt/ipt.txt

3.3 设置自动还原规则

将规则文件保存在 /etc/sysconfig/iptables 中,iptables启动时会自动还原规则

iptables-save > /etc/sysconfig/iptables
systemctl stop iptables			# 停止服务自动清空所有规则
systemctl start iptables 		# 启动服务,自动还原前面保存的规则

四、抓包

Linux的抓包软件和Windows不同
使用 tcpdump 来进行

tcpdump tcp -i ens33 -s 0 -c 50 and dst port ! 22 and src net 192.168.253.0/24 -w ./target.cap

名词解释

名词解释
tcpip icmp arp rarp和tcp udp icmp这些选项都要放到第一个参数的位置,用来过滤数据报的类型
-i ens33只抓取经过ens33的包
-t不显示时间戳,一般不选这个
-s 0抓取数据报默认长度为68字节,通常使用-s 0 来获取完整的数据包
-c 50抓取50个包
dst port ! 22不抓取目标端口是22的数据包
src net 192.168.253.0/24数据包的源网络地址为192.168.253.0/24
-w ./target.cap保存为 cap 文件,方便用 wireshark 分析

以上是关于熟练应用snat和dnat,掌握公网私网之间的连通(补充防火墙规则备份以及如何Linux抓包)的主要内容,如果未能解决你的问题,请参考以下文章

详细分析SNAT和DNAT原理与应用

iptables中实现内外网相互访问 SNAT与DNAT的原理与应用

防火墙——SNAT和DNAT策略的原理及应用防火墙规则的备份和还原

[NET]什么是公网私网内网外网?

SNAT与DNAT原理,实现内外网相互访问

iptables中 SNAT与DNAT的原理与应用