目录
一、SNAT概述
1.SNAT应用环境——局域网共享上网
2. SNAT工作原理
2.1未作SNAT转换时
2.2进行SNAT转换后
二、配置SNAT策略
1.开启IP路由转发
2.SNAT转换
3.模拟实验
3.1服务端
3.2网关服务器
3.3网关服务器设置iptables规则
3.4客户端
3.5实验结果
三、DNAT概述
1.DNAT策略应用环境——外网访问在局域网中的服务器
2.DNAT工作原理
四、配置DNAT策略
1.DNAT转换
2.模拟实验
3.1服务端
3.2客户端
3.3网关服务器
3.4配置DNAT策略
3.5实验结果
五、tcpdump抓包
六、防火墙规则的备份和还原
一、SNAT概述
SNAT原理:修改数据包的源地址
1.SNAT应用环境——局域网共享上网
将局域网中的IP地址映射到 dns 网关服务器上,将私网IP地址转换成公网IP地址,从而访问位于公网的服务器。
2. SNAT工作原理
2.1未作SNAT转换时
源主机发送数据包给目的主机,目的主机可以收到数据包,但目的主机发送回包时,数据包无法发送给源主机。
2.2进行SNAT转换后
工作原理:
- 将从内网发到外网的数据包的源IP由私网IP转换成公网IP
- 将从外网服务器响应返回到内网的数据包的目的IP由公网IP转换成私网IP
二、配置SNAT策略
SNAT转换前条件
- 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
- Linux网关开启IP路由转发
1.开启IP路由转发
临时打开
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 #读取修改后的配置
2.SNAT转换
转换为固定的公网IP地址:
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j SNAT
--to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j SNAT
--to-source 12.0.0.1-12.0.0.10
转换为非固定的公网IP地址(共享动态IP地址):
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens33 -j MASQUERADE
小知识扩展:
一个IP地址做SNAT转换,一般可以让内网 100到200 台主机实现上网。
3.模拟实验
3.1服务端
服务器位于公网,IP地址为12.0.0.100/24。开启http服务。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.50
systemctl restart network
yum -y install httpd
#进入http服务的网页目录
cd /var/www/html
#在其中写入一个文件
echo 'hello world!' > test.html
#开启服务
systemctl start httpd
3.2网关服务器
进行SNAT转换,ens33作为私网IP地址,ens35作为公网IP地址。首先,在虚拟机中设置两张网卡。
vim /etc/sysconfig/network-scripts/ifcfg-ens35
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.50
NETMASK=255.255.255.0
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.40
NETMASK=255.255.255.0
systemctl restart network
3.3网关服务器设置iptables规则
#安装iptables服务
yum -y install iptables*
#删除iptables规则及nat表中规则
iptables -F && iptables -F -t nat
#查看iptables规则
iptables -nL
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
#允许192.168.88.0网段进入网关服务器转发
iptables -t filter -A FORWARD -s 192.168.88.0/24 -j ACCEPT
#指定出站网卡ens35,将192.168.88.0网段IP地址转换为12.0.0.50
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens35 -j SNAT
--to 12.0.0.50
3.4客户端
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.20
NETMASK=255.255.255.0
GATEWAY=192.168.88.40
systemctl restart network
3.5实验结果
在客户端浏览器登录 http://12.0.0.100/test.html
服务端
cd /var/log/httpd
grep 'test.html' access_log
三、DNAT概述
DNAT原理:修改数据包的目的地址
1.DNAT策略应用环境——外网访问在局域网中的服务器
2.DNAT工作原理
工作原理:
- 将外网发来的数据包的目的地址由公网IP或端口转换成私网IP或端口;网关服务器将私网IP转发给内网服务器
- 将内网服务器发来的应答响应数据包的源地址由私网IP或端口转换成公网IP或端口
四、配置DNAT策略
DNAT转换前提条件:
- 局域网的服务器能够访问Internet
- 网关的外网地址有正确的DNS解析记录
- Linux网关开启IP路由转发
1.DNAT转换
发布内网的web服务
把从ens35进来的要访问web服务的数据包目的地址转换为 192.168.88.40
iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.50 -p tcp --dport 80
-j DNAT --to 192.168.88.40
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.50 -p tcp --dport 80
-j DNAT --to-destination 192.168.88.40
发布时修改目标端口
发布局域网内部的http服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.50 -p tcp --dport 8080
-j DNAT --to 192.168.88.40:80
注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回
小知识扩展:
- 主机型防火墙 主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口
- 网络型防火墙 主要使用 FORWARD 链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可
2.模拟实验
3.1服务端
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.30
NETMASK=255.255.255.0
GATEWAY=192.168.88.40
systemctl restart network
yum -y install httpd
#进入http服务的网页目录
cd /var/www/html
#在其中写入一个文件
echo 'hello world!' > test.html
#开启服务
systemctl start httpd
3.2客户端
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.200
NETMASK=255.255.255.0
GATEWAY=12.0.0.50
systemctl restart network
3.3网关服务器
vim /etc/sysconfig/network-scripts/ifcfg-ens35
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.50
NETMASK=255.255.255.0
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.40
NETMASK=255.255.255.0
systemctl restart network
3.4配置DNAT策略
#外网主机访问发送数据包允许通过
iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.50 -p tcp --dport 8080
-j DNAT --to 192.168.88.40:80
#服务器的回包发送给访问主机
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens35 -j SNAT
--to 12.0.0.50
3.5实验结果
客户端访问服务器
服务端
五、tcpdump抓包
tcpdump tcp -i ens33 -t -s 0 -c 100 and dst port ! 22
and src net 192.168.1.0/24 -w ./target.cap
-i ens33:只抓经过接口ens33的包
-t:不显示时间戳
-s 0:抓取完整数据包,否则默认抓取长度为68字节
-c 100:只抓取100个包
dst port !22 :不抓取目标端口是22的数据包
src net:数据包的源地址
-w:保存为cap文件,方便wireshark分析
六、防火墙规则的备份和还原
导出(备份)所有表的规则
iptables-save > /opt/ipt.txt
导入(还原)规则
iptables-restore < /opt/ipt.txt
将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfig/iptables
停止iptables服务会清空掉所有表的规则
systemctl stop iptables
启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则
systemctl start iptables