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)