SNAT策略与DNAT策略的介绍与实际应用分析

文章目录

  • 1.SNAT策略概述
  • 2.DNAT策略概述
  • 3.项目实操
    • 3.1 项目配置
    • 3.2 测验结果

1.SNAT策略概述

  • 原理:修改数据包中的源IP地址
  • 作用:可以实现局域网共享上网
  • 配置的表及链:nat表中的POSTROUTING

SNAT(source NAT POSTROUTING),用于局域网访问互联网。

SNAT策略的典型应用环境

局域网主机共享单个公网IP地址接入Internet

2.DNAT策略概述

  • 原理:修改数据包中的目标IP地址
  • 作用:将位于企业局域网中的服务器进行发布
  • 配置的表及链:nat表中的PREROUTING链上

DNAT(destination NAT POSTROUTING),用于互联网访问局域网。

3.项目实操

准备及要求如下:

  • 局域网PC机,内网IP:192.168.70.10/24
  • Inter互联网,外网IP:192.168.80.13/24
  • 防火墙:
    nat转换前:192.168.70.10/24
    nat转换后:192.168.80.12/24
    转换前的源地址和目标地址分别为:192.168.70.10/24;192.168.80.13/24
    转换后的源地址和目标地址分别为:192.168.80.12/24;192.168.80.13/24

要求:
(1)内网能访问到外网,实现上网的功能;
(2)外网能映射内网的某个服务;
(3)外网不能访问内网。

项目分析:

Nat转换:入站接受PREROUTING策略匹配,出站POSTROUTING策略匹配 出站(内-外):OUTPUT--POSTROUTING(解决上网问题) SNAT 192.168.70.0/24--->192.168.80.12 入站(外-内):PREROUTING--INPUT--FORWARD(服务映射) DNAT 192.168.80.12--->192.168.70.10

  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

具体实现方法:

SNAT:
(1)中间的防火墙充当路由器,开启nat功能;
(2)防火墙上做策略,指定192.168.70.10/24的主机转换成192.168.80.12

DNAT:
(1)中间的防火墙充当路由器,开启nat功能;
(2)防火墙上做策略,指定访问网关的某服务映射给内网服务器。

注意:

  • 必须在防火墙的 PREROUTING 上设置修改目标地址的防火墙策略,因为若不在此处修改,请求数据包通过 PREROUTING 和路由表后,由于目标主机是本机,就会将数据包发往input,进而被发往本地进程。

3.1 项目配置

1)在局域网PC上,进行以下配置

[root@client ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.70.10
NETMASK=255.255.255.0
GATEWAY=192.168.70.11
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=44f38f57-1fab-4e49-a1c2-cdb025cbbaba
DEVICE=ens33
ONBOOT=yes
[root@client ~]# systemctl restart network
[root@client ~]# ifconfig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21


设置apache主页,并启动httpd服务

[root@client ~]# yum -y install httpd [root@client ~]# echo 'this is my web site.' > /var/www/html/index.html [root@client ~]# systemctl start httpd [root@client ~]# systemctl stop firewalld [root@client ~]# setenforce 0 [root@client ~]# netstat -anpt | grep httpd tcp6 0 0 :::80 :::* LISTEN 55402/httpd

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2)在防火墙上需要用到两张网卡,适当添加即可。配置如下:

[root@iptables ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.70.11
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=85a5cff8-6ba9-4887-87a5-2e7eb465ac1b
DEVICE=ens33
ONBOOT=yes
[root@iptables ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37
[root@iptables ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.80.12
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
[root@iptables ~]# systemctl restart network
[root@iptables ~]# ifconfig
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
[root@iptables ~]# echo 'net.ipv4.ip_forward=1' > /etc/sysctl.conf//在防火墙上开启路由 [root@iptables ~]# sysctl -p net.ipv4.ip_forward=1

  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

设置策略

[root@iptables ~]# iptables -F
[root@iptables ~]# iptables -t nat -n -L
[root@iptables ~]# iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ens36 -j SNAT --to-source 192.168.80.12
[root@iptables ~]# iptables -t nat -A PREROUTING -i ens36 -d 192.168.80.12 -p tcp --dport 80 -j DNAT --to-destination 192.168.70.10
[root@iptables ~]# iptables -t nat -L
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

3)在Inter外网服务器上

[root@internet ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static IPADDR=192.168.80.13 NETMASK=255.255.255.0 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=85a5cff8-6ba9-4887-87a5-2e7eb465ac1b DEVICE=ens33 ONBOOT=yes [root@internet ~]# systemctl restart network [root@internet ~]# ifconfig

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

3.2 测验结果

  • (1) 测验上网是否得到解决
    在局域网PC机上,测试 ping 192.168.80.13 外网的地址
  • (2) 测试外网是否能映射内网的服务
    在Internet外网上输入 curl http://192.168.80.12
  • (3) 测试外网是否能访问内网

此刻表示项目已经完成!!

(0)

相关推荐