目录
1、SNAT策略概述
1.SNAT策略的典型应用环境
2.SNAT策略的原理
3.SNAT工作原理
4.SNAT转换前提条件
5.开启SNAT命令
6.SNAT转换
2.SNAT示例
1. 配置网关服务器
2.Xshell 连接192.168.100.100
3.DNAT策略及应用
1. DNAT策略概述
2.DNAT 策略的应用
3.DNAT转换前提条件
4.防火墙规则的备份和还原
5.Linux抓包
1、SNAT策略概述
1.SNAT策略的典型应用环境
1.局域网主机共享单个公网IP地址接入Internet.
2.SNAT策略的原理
1.源地址转换,Source Network Address Translation;
2.有修改数据包的源地址.
3.SNAT工作原理
(1)数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP;
(2)当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP。
4.SNAT转换前提条件
(1)局域网各主机已正确设置IP地址、子网掩码、默认网关地址;
(2)Linux网关开启IP路由转发。
5.开启SNAT命令
1.临时打开
echo 1 > /proc/sys/net/ipv4/ip_forward
或者
sysctl -w net.ipv4.ip_forward=1
2.永久打开
vim /etc/ sysctl. conf
net. ipv4.ip_ forward=1 #将此行写入配置文件
sysctl -p #读取修改后的配置
6.SNAT转换
iptables -t nat -A POSTROUTING -s 192.168.156.0/24 -o ens33 -i SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.156.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
内网IP 出站 外网网卡 外网IP或地址池
2.SNAT示例
1. 配置网关服务器
1、添加一张外网网卡网段为12.0.0.0/24
查看真机的网段与 虚拟机所设网段是否一致
2.修改ens33网卡信息,注释网关和DNS,修改IP地址为192.168.100.100
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
3.修改ens36网卡信息,注释网关和DNS,修改IP地址为12.0.0.1
4.重启网卡
2.Xshell 连接192.168.100.100
设置永久打开SNAT sysctl -p 读取修改后的配置
清空规则 iptables -F
配置SNAT策略,实现snat功能,将所有192.168.100.0网段的ip的源ip改为10.0.0.1
3.DNAT策略及应用
DNAT 是 Linux 防火墙的另一种地址转换操作,同样也是 iptables 命令中的一种数据包控制类型,其作用是根据指定条件修改数据包的目标IP地址和目标端口。
1. DNAT策略概述
DNAT 策略与 SNAT 非常相似,只不过应用方向相反。
SNAT 用来修改源 IP 地址,而 DNAT 用来修改目标 IP 地址和目标端口;SNAT 只能用在 nat 表的 POSTROUTING 链中,而 DNAT 只能用在 nat 表的 PREROUTING 链和 OUTPUT链(或被其调用的链)中。
在 Internet 环境中,企业所注册的网站域名必须对应合法的公网 IP 地址,在这种情况下,Internet 中的客户机将无法访问公司内网的服务器,除非在网关服务器中正确设置 DNAT 策略使用 DNAT 策略的效果如下:当 Internet 中的客户机提交的 HTTP 请求到达企业的网关服务器时,网关首先判断数据包的目标地址和目标端口,若发现该数据包需要访问本机的 80 端口,则将其目标 IP 地址修改为内网中真正的网站服务器的 IP 地址,然后才发送给内部的网站服务器上述 DNAT 转换地址的过程,网关服务器会根据之前建立的 DNAT 映射,修改返回的 HTTP 应答数据包的源 IP 地址,最后再返回给 Internet 中的客户机,Internet 中的客户机并不知道企业网站服务器的真实局域网地址,中间的转换完全由网关主机完成。
2.DNAT 策略的应用
DNAT 的典型应用是在 Internet 中发布企业内部的服务器,处理数据包的切入时机是在路由选择之前(PREROUTING)进行。
关键操作是将访问网关外网接口 IP 地址(公有地址)的数据包的目标地址修改为实际提供服务的内部服务器的 IP 地址(私有地址)使用 iptables 命令设置 DNAT 策略时,需要结合 “- -to-destination IP地址” 选项来指定内部服务器的 IP 地址。
3.DNAT转换前提条件
- 局域网的服务器能够访问Internet;
- 网关的外网地址有正确的DNS解析记录;
- Linux网关开启IP路由转发。
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysct1 -p
1.DNAT转换1∶ 发布内网的Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.100.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80 -j DNAT --to 192.168.100.11
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80-j DNAT --to-destination 192.168.100.11
入站|外网网卡 | 外网ip 内网服务器ip
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80-j DNAT --to 192.168.100.11-192.168.100.20
2.DNAT转换2∶ 发布时修改目标端口
#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 250-jDNAT --to 192.168.100.11:22
#在外网环境中使用SSH测试ssh -p 250 root@12.0.0.1
yum -y install net-tools #若没有 ifconfig 命令可提前使用 yum 进行安装
ifconfig ens33
注意∶ 使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回 小知识扩展∶
主机型防火墙 主要使用 INPUT、oUTPUT 链, 设置规则时一般要详细的指定到端口;
网络型防火墙 主要使用 FORWARD链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可。
4.防火墙规则的备份和还原
1.导出 (备份)所有表的规则
iptables-save > /opt/ipt.txt
2.导入(还原)规则
iptables-restore < /opt/ipt.txt
3.将iptables规则文件保存在 /etc/sysconfig/iptables
中,iptables服务启动时会自动还原规则 iptables-save >/etc/sysconfig/iptables
systemctl stop iptables #停止iptables服务会清空掉所有表的规则
systemctl start iptables #启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则
5.Linux抓包
tcpdump tcp-i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.156.0/24 -w ./target.cap
(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)dst port ! 22 ∶不抓取目标端口是22的数据包;
(7)src net 192.168.1.0/24 ∶数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机;
(8)-w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析。