SNAT原理及应用
概述
SNAT的典型应用环境
局域网主机共享单个公网ip地址接入lnternet (私有IP不能在lnternet中正常路由)
SNAT原理
源地址转换,Source Network Address Translantion
修改数据包的源地址
SNAT源地址转换过程
- 数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP。
- 当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP。
- 当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分。
小知识:
一个IP地址做SNAT转换,一般可以让内网100到200台主机实现上网
SNAT策略的配置
前提条件
局域网各主机正确设置ip地址/子网掩码
局域网各主机正确设置默认网关地址
linux网关支持IP路由转发
临时打开IP路由转发:
echo 1 >/proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip forward=1
永久打开IP路由转发:
vim /etc/ sysctl. conf ##linux内核主配置文件
net.ipv4.ip_forward = 1 #将此行写入配置文件
sysctl -P #读取修改后的配置
SNAT转换
SNAT转换1:固定的公网IP地址
#配置SNAT策略,实现SNAT功能,将所有192.168.46.0这个网段内的ip的源地址改为12.0.0.2
iptables -t nat -A POSTROUTING -s 192.168.46.0/24 -o ens36 -j SNAT --to 12.0.0.2
或
iptables -t nat -A POSTROUTING -s 192.168.46.0/24 -o ens36 -j SNAT --to-source 12.0.0.2-12.0.0.10
#-A POSTROUTING 指定POSTROUTING链
#-s 192.168.72.0/24 源地址所处的网段(内网IP)
#-o ens33 指定输出网卡
#-j SNAT
#--to 12.0.0.2 外网IP
#--to-source 12.0.0.2-12.0.0.10 外网地址池
SNAT转换2:非固定的公网IP地址(共享动态IP地址)
iptables -t nat -A POSTROUTING -s 192.168.72.0/24 -o ens33 -j MASQUERADE
SNAT转换实列操作
实现内网主机通过一个固定的公网ip地址上网
准备:
web服务器IP地址:12.0.0.12 同时关闭防火墙和selinux防止影响操作,并开启httpd服务
网关服务器内网IP地址(ens33):192.168.46.30
外网IP地址(ens36):12.0.0.254;打开IP路由转发、并开启httpd服务
客户端IP地址:192.168.46.20
实验目的
实现内网客户端主机访问web服务器时将IP地址:192.168.46.20转化为12.0.0.12访问,在web服务器的日志文件中查看客户端访问地址是否发生改变,成功即实现SNAT转换
linux网关服务器准备
iptables的安装
systemctl stop firewalld.service ##关闭防火墙
setenforce 0
yum insatll -y iptables iptables-services ##安装iptables服务
systemctl start iptables.services ##开启iptables服务
网关服务器中打开ip路由转换
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 ##在/etc/sysctl.conf中写入
sysctl -p
在网关服务器上做SNAT转换
iptables -F -t nat ##清除规则
iptables -t nat -A POSTROUTING -s 192.168.46.0/24 -o ens36 -j SNAT --to 12.0.0.254
iptables -nL -t nat
内网客户端设置ip和网关
设置IP地址
网卡设置
安装httpd服务并开启服务 ,关闭防火墙和selinux
测试
内网客户端ping外网和网关测试
内网访问httpd测试
查看外网web服务器的日志文件tail /var/log/httpd/access_log,查看访问网址是否修改为12.0.0.254,即SNAT转换是否成功
DNAT原理与应用
DNAT概述
DNAT策略典型应用环境
在lnternet中发布位于企业局域网内的服务器
DNAT策略的原理
目标地址转换,Destination Network Address Translation
修改数据包的目标地址
注:
客户机想访问服务器时,访问的是网关地址,由网关去找服务器的内网地址
如果多台服务器使用同一个网关,那么通过不同的端口号来对应不同的服务
DNAT策略的应用
前提条件
局域网的web服务器能够访问lnternet
网关的外网IP地址有正确的DNS解析记录
linux网关支持ip路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #将此行写入配置文件
sysctl -p #读取修改后的配置
DNAT转换1:发布内网的Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.46.30
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.46.30
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.46.10-192.168.46.30
#-A PREROUTING ##修改目标地址的链
#-i ens33 ##入站网卡
#-d 12.0.0.254 ##数据包的目的地址
#-p tcp --dport 80 ##数据包的目的端口
#-j DNAT ##使用DNAT功能
#--to 192.168.46.30 ##内网服务器IP
DNAT转换2:发布时修改目标端口
#将公网的IP和端口,转换成内网的IP和端口
#发布局域网内部的web服务器,外网主机需使用80端口进行连接
#将12.0.0.254:8080 转换成 192.168.46.20:80
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.46.20:80
#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
#将12.0.0.254:250 转换成 192.168.46.20:22
iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 250 -j DNAT --to 192.168.46.20:22
注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回
tcpdump——linux抓包
wireshark 抓包工具只在windows中使用
tcpdump 可以在Linux系统中使用
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 net 192.168.1.0/24 :数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机。
- -w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析
实验 iptables防火墙和DNS分离解析
实验内容
web服务器在内网中提供httpd服务
要求内网中的主机通过www.zhang.com 访问web服务器,外网主机也通过www.zhang.com 访问web服务器
实验环境
web服务器:192.168.46.20/24 (VMnet1)
外网主机地址:linux 12.0.0.100/24 (VMnet2)
win10客户机 12.0.0.200/24(VMnet2)
网关服务器:
ens33网卡地址:192.168.46.254(VMnet1)
ens36网卡地址:12.0.0.254(VMnet2)
实验步骤
配置网关服务器
1.配置网卡
新增一网卡ens36
ens33网卡模式设置为VMnet1,ip地址为192.168.46.254
ens36网络模式设置为VMnet2,ip地址为12.0.0.254
2.关闭firewalld和selinux,开启路由转发功能
systemctl stop firewalld
setenforce 0
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
3.配置iptables策略
3.1设置SNAT服务,解析源地址,修改nat表中POSTROUTING
iptables -t nat -A POSTROUTING -s 192.168.46.20/24 -o ens36 -j SNAT --to 12.0.0.254
3.2设置DNAT服务,解析目地址,修改nat表中PRETROUTING
iptables -t nat -A PREROUTING -d 12.0.0.254 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.46.20:80
4.配置DNS分离解析
当内网解析ww.zhang.com时,将域名解析为:192.168.46.254
当外网解析ww.zhang.com时,将域名解析为:12.0.0.254
4.1 编辑主配置文件
4.2编辑区域配置文件
4.3配置内网解析地址库文件
cd /var/named/
cp -p named.localhost zhang.com.zone.lan
vim zhang.com.zone.lan
4.4配置外网解析地址库文件
配置web服务器
1.关闭firewalld和selinux
2.修改网络模式和网卡ip地址
3.安装httpd服务 并启动服务
写一个网页 验证是否能打开网页
配置外网客户端(win10和linux虚拟机)
1.修改linux网络模式和网卡
关闭防火墙和selinux