1.SNAT战略概述

SNAT(Source Network Address Translation,源地址转化)是Linux防火墙的一种地址转化操作,也是iptables命令中的一种数据包操控类型,其作用是依据特定的条件修正数据包的源IP地址。

SNAT运用环境

  • 局域网主机同享单个公网IP地址的Internet(私有IP不能在Internet中正常路由

局域网同享上网

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
SNAT战略的原理:

  • 源地址转化,Source Network Address Translation
  • 修正数据包的源地址

SNAT源地址转化进程

  • 数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转化成公网IP。

  • 当相应的数据包从公网发送到内网时,会把数据包的意图地址由公网IP转化为私网IP。

  • 当内网有多台主机拜访外网时,SNAT在转化时会主动分配端口,不同内网主机会通过端口号进行区分。

SNAT战略概述的运用

前提条件

  • 局域网各主机正确设置P地址/子网掩码
  • 局域网各主机正确设置默认网关地址

1.1Linux网关支撑lP路由转发

1.2.试验:SNAT地址转化

预备:3台虚拟机

  • 1台坐客户端(地址转化)
  • 1台网关服务器
  • 1一台外部服务器

1.先装备环境

外部服务器修正网卡

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
网关服务器添加一张网卡并修正

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
客户端修正一下网卡
SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

2.修正网关服务器的网卡装备

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
//修正ens33网卡装备
[root@localhost network-scripts]# ls
ifcfg-ens33  ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo     ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
ifdown       ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep  ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth   ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib    ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp  ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6  ifdown-tunnel    ifup-isdn     ifup-TeamPort
[root@localhost network-scripts]# vim ifcfg-ens33

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
//直接仿制ens33的装备当做模板
[root@localhost network-scripts]# vim ifcfg-ens36
//通过ens33的模板修正ens36网卡装备

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# vim /var/log/messages 
重启报错的话就检查日志修正装备即可

重启网卡以后检查,网卡修正成功

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

3.修正外部服务器

修正外部服务器的网卡装备

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
重启网卡并检查网卡装备

[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

4.修正客户端(用作地址转化的机器)

修正网卡装备

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33

主要:DNS不需要,注释掉

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

5.修正外部服务器
[root@localhost network-scripts]# yum install -y httpd
装置httpd服务
[root@localhost network-scripts]# systemctl start httpd
发动httpd服务

运用浏览器测验一下12.0.0.12是不是通的

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
在网关服务器测验也是能够通的

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
运用网关服务器ping12.0.0.12是能够通的

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
ping客户端也是能够通的
SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
运用客户端分别去ping

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
修正网关服务器的内核装备文件

[root@localhost network-scripts]# vim /etc/sysctl.conf 
修正内核装备文件

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
这个服务是用来起来IP的路由的转发功用

[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1
修正完装备以后 -p 加载一下装备
1 代表开端 IP路由转发功用

此时再用客户端去ping 12.0.0.12 就能够通了

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

6.去外部服务器敞开日志
[root@localhost network-scripts]# cd /var/log/httpd  
httpd的日志文件
[root@localhost httpd]# ls
access_log  error_log
[root@localhost httpd]# tail -f access_log 
盯梢日志的情况

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
用客户机去拜访 12.0.0.12

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
检查外部服务器的httpd日志

现在只是完成了IP地址的转发,没有完成源地址的转化,所以网关服务器的日志中能看到是哪一台主机来拜访的,能检查到内网IP的IP地址

主意:现在只是模拟环境,并不是出产环境,没有完成盯梢路由,在真实的出产环境能够ping通,但是无法拜访网站

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

7.完成源IP地址的公网转化

修正网关服务器的规矩

确保nat表中的规矩是清空的

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

[root@localhost network-scripts]# iptables -t nat -A POSTROUTING -s 192.168.85.0/24 -o  ens36 -j SNAT --to-source 12.0.0.254

检查nat表的规矩

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
运用客户端拜访 12.0.0.12 网站

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
再去检查外部服务器httpd日志

此时的日志就变成可公网IP来拜访了

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

扩充

临时敞开:

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   #读取修正后的装备

SNAT转化1:固定的公网IP地址

#装备SNAT战略,完成SNAT功用,将一切192.168.72.0这个网段内的ip的源地址改为12.0.0.2
iptables -t nat -A POSTROUTING -s 192.168.72.0/24 -o ens33 -j SNAT --to 12.0.0.2   
或
iptables -t nat -A POSTROUTING -s 192.168.72.0/24 -o ens33 -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

小知识扩展:

一个IP地址做sNAT转化,一般能够让内网1oo到200台主机完成上网。

2.DNAT

服务器一般不会暴露在公网中,极易被人攻击。服务器一般运用内网IP,所以拜访服务器时需要进行方针地址转化。

DNAT战略的的典型运用环境:

  • 在Internet中发布位于企业局域网内的服务器

DNAT战略的原理

  • 方针地址转化,Destination Network Address Translation
  • 修正数据包的方针地址

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

2.1.DNAT转化前提条件

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

DNAT转化的情况

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

试验DNAT

预备环境

进入网关服务器

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
修正网卡装备
SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

systemctl stop firewalld   //有必要关闭防火墙
setenforce 0        
systemctl status iptables.service   //检查一下iptables是不是翻开的状况 
yum -y install iptables-services.x86_64  //未翻开就装置软件
systemctl status iptables.service    //再看一下状况
systemctl start iptables.service    //重启一下服务
iptables -F && iptables -t nat -F  //清空filter表和nat表
iptables -t nat -nL       //检查nat表中是否还存在规矩

敞开 ACCEPT

[root@localhost network-scripts]# iptables -P INPUT ACCEPT

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
修正网卡装备

[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

[root@localhost network-scripts]# systemctl restart network  //重启网卡

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

外部服务器

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
修正网卡装备

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

[root@localhost network-scripts]# systemctl restart network   //重启网卡

ping 网关是能够ping通的

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

由于做外网服务器,一切需要装置httpd服务

[root@localhost network-scripts]# yum -y install httpd
[root@localhost network-scripts]# systemctl start httpd
发动一下服务

拜访一下本机服务器

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
进入一台linu客户机

[root@localhost ~]# iptables -F && iptables -t nat -F
清空一下防火墙规矩

修正网卡装备

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

[root@localhost network-scripts]# systemctl restart network
重启网卡

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

ping一下网关

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

翻开window客户机 设置一下网卡装备

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
ping网关是能够通的

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

修正规矩

给网关服务器装备规矩

修正内核文件

[root@localhost network-scripts]# vim /etc/sysctl.conf 
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1
加载一下,使修正永久收效

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

修正nat表中的规矩

[root@localhost network-scripts]# iptables -t nat -A POSTROUTING -s 192.168.85.0/24 -o ens36 -j SNAT --to 12.0.0.254
[root@localhost network-scripts]# iptables -t nat -A PREROUTING -d 12.0.0.254 -p tcp --dport 80 -i ens36 -j DNAT --to 192.168.85.20:80

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
运用windows服务器测验一下

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

去外部服务器看一下httpd日志

[root@localhost network-scripts]# cd /var/log/httpd/
[root@localhost httpd]# ls
access_log  error_log
[root@localhost httpd]# tail access_log 

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

运用Linux客户机去拜访 12.0.0.254

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

运用Linux客户机装置httpd服务

从内网拜访外网

[root@localhost network-scripts]# yum -y install httpd

区分前面的试验给网页写入一点类容作为区分

[root@localhost network-scripts]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# echo 'this is internet test web!' > index.html
[root@localhost html]# ls
index.html
[root@localhost html]# systemctl start httpd  //重启一下服务

本地拜访网页

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

外部服务器检查网页也是能够检查的

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
检查日志

[root@localhost html]# cd /var/log/httpd/
[root@localhost httpd]# ls
access_log  error_log
[root@localhost httpd]# tail access_log 

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

结合上面的DNAT试验进程,装备DNS别离解析

客户端

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

网关服务器

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]
SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

在网关服务上装备DNS别离解析

先下载bind软件

yum -y install bind

修正主装备文件

[root@localhost etc]# vim /etc/named.conf   //修正主装备文件
-----------------------------------
options {
        listen-on port 53 { any; };
        #listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
​
52 #zone "." IN {
53 #    type hint;
54 #    file "named.ca";
55 #};

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

修正区域装备文件

[root@localhost etc]# vim /etc/named.rfc1912.zones 
--------------------------------------------------
view "lan" {
        match-clients { 192.168.85.0/24; };
        zone "wangsan.com" IN {
                type master;
                file "wangsan.com.zone.lan";
        };
        zone "." IN {
                type hint;
                file "named.ca";
        };
};
view "wan" {
    match-clients { any; };
    zone "wangsan.com" IN {
        type master;
        file "wangsan.com.zone.wan";
    };
};
~   

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

修正内网解析地址库文件:
[root@localhost etc]# cd /var/named/
[root@localhost named]# cp -p named.localhost  wang.com.zone.lan
[root@localhost named]# vim wang.com.zone.lan
$TTL 1D
@       IN SOA  @ wangsan.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      wangsan.com.
        A       192.168.85.254
www     A       192.168.85.20
~             

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

修正外网解析地址库文件。之后发动named服务
[root@localhost named]# cp -p named.localhost  wang.com.zone.wan
[root@localhost named]# vim wang.com.zone.wan 
$TTL 1D
@       IN SOA  @ wangsan.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      wangsan.com.
        A       12.0.0.254
www  IN A       12.0.0.254
~               

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

[root@localhost ~]# systemctl restart named  //c重启服务
[root@localhost named]# host www.wangsan.com
www.wangsan.com has address 192.168.85.20
[root@localhost named]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.85.254
nameserver 12.0.0.254
再去Linux客户机
[root@localhost httpd]# systemctl status httpd  //检查是否敞开

此时就解析成功了

SNAT和DNAT原理及应用 [包含实验的详细过程(非生产环境)(NFS分离解析)]

tcpdump 抓包

网络数据包截获剖析工具。支撑针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。

装置 tcpdump

/#apkupdate
/#apkaddtcpdump

tcpdump top -i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.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个数据包
  5. dst port ! 22 :不抓取方针端口是22的数据包
  6. src net 192.168.1.0/24 :数据包的源网络地址为192.168.1.0/24
  7. -w ./target.cap :保存成cap文件,便利用ethereal(即wireshark)剖析

例题

要在ens33网卡上抓取http协议相关的数据包

tcpdump tcp port 80 and -i ens33 -s0 -w ./pkg.cap

要在ens33网卡上抓取和192.168.80.100主机通讯的http协议相关的数据包

tcpdump tap port 80 and -i ens33 -s0 -w ./pkg.cap an[i host 192.168.85.100