目录
一、理论
1.SNAT
2.DNAT
3.tcpdump抓包工具
二、实验
1.SNAT实验
2.DNAT实验
3.tcpdump抓包
(1)概念
SNAT又称源地址转换。
源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址
(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。
就是把内网地址转成指定的IP地址,这个iP地址可以访问公网。
(2)SNAT常用选项
表1 SNAT常用选项
选项 | 功能 |
-t nat | 指定使用nat表 |
-A POSTROUTING | 添加在数据流出链,原因为在输出时添加只需要添加一次。 |
-s | 指定源ip |
-o | 指定输出网卡为ens36时 |
-j | 指定跳转到SNAT处理 |
--to | 指定SNAT nat为相关地址 |
(1)概念
DNAT:目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。
通常来说,合法地址的数量比起本地内部的地址数量来要少得多。
私网地址只能作为源地址来访问公网IP,而无法作为目标地址被其他主机访问。
所以DNAT将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问。
(2)DNAT常用选项
表2 DNAT常用选项
选项 | 功能 |
-t nat | 指定使用nat表 |
-A PREROUINTG | 添加在路由选择前数据进入链,在输入时直接判断。 |
-d | 指定目的ip |
-i | 指定输出网卡为ens36时 |
-p | 指定协议为tcp协议 |
--dport | 指定目的端口为80 |
-j | 指定跳转到DNAT处理 |
--to | 指定DNAT nat到相关地址 |
(1)概念
wireshark 抓包工具只在windows中使用。
tcpdump 可以在Linux系统中使用。
tcpdump是Linux系统中自带抓包工具
表3 tcpdump选项
选项 | 功能 |
-i ens33 | 只抓经过接口ens33的包。 |
-t | 不显示时间戳。 |
-s0 | 抓取数据包时默认抓取长度为68字节。加上"-s0"后可以抓到完整的数据包。 |
-c 100 | 只抓取100个数据包。 |
dst port 80 | 不抓取目标端口是80的数据包。 |
src net 192.168.233.0/24 | 数据包的源网络地址为192.168.233.0/24。Net:网段,host:主机。 |
-w ./target.cap | 保存成cap文件,方便用ethereal (即wireshark)分析。 |
(2)动态抓包
进行动态抓包处理(一旦遇到有指定数据包的出现,开始运转)。
(1)实验目的
公司内有2台机器,但是只有一个公网IP,利用SNAT技术实现2台私网地址都可以访问公网。
(2)实验环境
①三台服务器:PC1客户端、PC2网关、PC3服务端。
②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡
③网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。
④IP地址要求:PC1为192.168.204.21--网关为192.168.204.254、PC2网关的ens33网卡地址为192.168.204.254、ens36为12.0.0.254--不需要网关、PC3为12.0.0.100--网关为12.0.0.254
(3)实验拓扑
(4)实验步骤
①首先关闭三台机器的防火墙和selinux
systemctl stop firewalld
setenforce 0
②配置PC3服务端,安装httpd服务修改网卡ip为12.0.0.100--网关为12.0.0.254,重启网卡。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254
③配置PC1客户端,修改网卡ip为192.168.204.21---网关192.168.204.254,重启网卡。
PC1执行
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.204.21
NETMASK=255.255.255.0
GATEWAY=192.168.204.254
④配置PC2网关服务器,首先配置ens33和ens36网卡的ip地址。
PC2执行
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.204.254
NETMASK=255.255.255.0
复制ens33配置文件给ens36网卡,新增网卡不会有配置文件
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
ens36配置文件修改:将UUID此行删除,修改ip和网关
IPADDR=12.0.0.254
NETMASK=255.255.255.0
⑤开启PC2网关服务器的路由转发功能,重启网卡。
vim /etc/sysctl.conf
添加内容:
net.ipv4.ip_forward=1
⑥检测PC1、PC2、PC3三台机器之间是否互通(使用虚拟机做实验默认是互通的,是由于处在同一环境中,生产环境内网和外网没有SNAT的情况下是不通的)
⑦在PC1上curl 服务端ip,然后在服务端实时查看/var/log/httpd/access_log日志。可查看到源ip为PC1的ip,所以是未经过NAT的,生产环境中不可能直接curl通。
PC1网络搜索PC3
⑧在PC2中添加防火墙规则使得来源于192.168.30.0/24网段的所有从ens36网阿卡流出数据的ip全部NAT为12.0.0.254。然后再使用PC1去curl 服务端并在服务端实时查看日志。
iptables -t nat -A POSTROUTING -s 192.168.204.0/24 -o ens36 -j SNAT --to 10.0.0.10
# -t nat 指定使用nat表
# -A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
# -s 指定源ip
# -o 指定输出网卡为ens36时
# -j 指定跳转到SNAT处理
# --to 指定SNAT nat为12.0.0.254这个地址
PC1访问PC3
PC3检查数据访问日志
(2)实验结果
不经过nat的地址为pc1自己的地址,使用虚拟机环境才会出现这种情况,生成环境是不通的。
经过nat之后的地址是公司的公网ip地址,由网关服务器iptables规则SNAT实现。
(1)实验目的
为保护公司业务服务器安全,业务服务器在私网中,从公网访问的用户只能通过nat为业务服务器的私网网关地址才可访问。
(2)实验环境
①三台服务器:PC1客户端、PC2网关、PC3服务端。
②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡
③网络模式要求:PC1为NAT模式、PC2中作为PC1网关的网卡为NAT模式、作为PC3网关的网卡为仅主机模式、PC3为仅主机模式。
④IP地址要求:PC1为192.168.204.21--网关为192.168.204.254、PC2网关的ens33网卡地址为192.168.204.254、ens36为12.0.0.254--不需要网关、PC3为12.0.0.100--网关为12.0.0.254
(3)实验拓扑
PC1客户方做业务服务器,PC3服务端做公网用户。
(4)实验步骤
①首先给三台机器做一个SNAT,原因是做DNAT之后内网的PC1需要通过SNAT给公网的用户返回数据包。
②在内网PC1上安装一个httpd服务并开启,作为内网的业务服务器。
③PC2网关服务器上配置DNAT规则。
PC2执行
iptables -t nat -A PREROUTING -d 12.0.0.254 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.204.21:80
# 从ens36网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.204.21
# -t nat 指定使用nat表
# -A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
# -d 指定目的ip
# -i 指定输出网卡为ens36时
# -p 指定协议为tcp协议
# --dport 指定目的端口为80
# -j 指定跳转到DNAT处理
# --to 指定DNAT nat到192.168.204.21这个地址
④实时查看PC1的/var/log/httpdd/access_log日志,使用PC3公网地址直接curl 内网的PC1,可以看到日志中源地址。
PC3搜索PC1
PC1数据访问日志
PC3访问PC1
PC1数据访问日志
(5)实验结果
经过DNAT之后的用户访问公网的网关即会跳转到内网的PC1内网的httpd服务中。PC1内网日志会显示访问的源公网ip。
(1)抓包
PC2执行
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.204.0/24 -w ./target.cap
PC1刷新页面
(2)下载到Windows
rz:receive zmodem的缩写
sz:send zmodem的缩写
sz:将选定的文件发送(send)到本地服务器,即从Linux下载到Windows系统;
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器。
(3)分析