首先说明SNAT和DNAT都大致相当于网络中的NAT和PAT协议,本实验是通过用一台linxu虚拟机来模拟内网网关,并且利用linux上的iptables防火墙策略,达到地址转换和端口映射的目的。

 

SNAT

实验结构:

 

真机----------------v1)网关服务器s1(v2)--------------(v2)外网服务器s2

 

2台虚拟机linux,分别模拟s1s2

其中,s1上另增加一块网卡,使用vmnet1与真机相连。

使用vmnet2与外网服务器的s2vmnet2相连。

 

IP地址规划

真机:

vmnet1192.168.80.5/24

s1:

vmnet1:192.168.80.20/24

vmnet2:192.168.90.1/24

s2:

vmnet2:192.168.90.22/24

 

实验步骤:

  1. 设置s1,s2的网卡参数

vi /etc/sysconfig/network-scripts/ifcfg-eth0

设置如下

【linux】iptables防火墙SNAT和DNAT的简单演示_DNAT

 

继续设置另一块网卡的参数

首先ifconfig查看一下eth1mac地址,然后

cd /etc/sysconfig/network-scripts/

复制模板

cp -p ifcfg-eth0 ifcfg-eth1

修改

vi  ifcfg-eth1

设置如下

【linux】iptables防火墙SNAT和DNAT的简单演示_DNAT_02

s1上开启路由转发功能

vi /etc/sysctl.conf

【linux】iptables防火墙SNAT和DNAT的简单演示_iptables_03

 

设置s2的网卡参数

s2

vi /etc/sysconfig/network-scripts/ifcfg-eth1

【linux】iptables防火墙SNAT和DNAT的简单演示_DNAT_04

关闭s2的防火墙

service iptables stop

 

将真机vmnet1IP地址设置为192.168.80.5/24 ,网关设置为192.168.80.20

 

2.在s1上设置防火墙,使得s1可以做pat,将真机地址192.168.80.5转换为外网口

地址192.168.90.1

iptables –t nat –I POSTROUTING –s 192.168.80.0/24 –o eth1 –j SNAT --to

192.168.90.1

注释:-t 规则表      -I   规则链    -s 源地址   -o出站接口   -j  策略

测试结果,在真机上ping 192.168.90.22

【linux】iptables防火墙SNAT和DNAT的简单演示_SNAT_05

是通的。

可以在s2上搭建一个ftp,来观察结果。

s2

service vsftpd start

 

然后在真机上登录 ftp

【linux】iptables防火墙SNAT和DNAT的简单演示_DNAT_06

s2上查看一下是谁在登录

s2

netstat –anpt

【linux】iptables防火墙SNAT和DNAT的简单演示_linux_07

登录自己的主机地址为192.168.90.1  表明pat已经转换地址成功。

 

DNAT

实验结构:

真机(模拟外网)(v1)----------(vmnet1)网关服务器s1(vmnet2)---- -----(vmnet2)内网服务器s2

 

IP地址的规划依旧不变

s1上做修改

 

s1

首先清空原来的防火墙配置

iptables –F

 

配置新的DNAT策略

iptables –t nat –A PREROUTING –i eth0 –d 192.168.80.20 –p tcp --dport 21 –j DNAT

--to 192.168.90.22

 

注释:-t 规则表      -A   规则链     -i 入站接口    -d 目标地址    –p协议                     --dport  目标端口           -j  策略

 

 

测试,用真机ftp 192.168.90.22

【linux】iptables防火墙SNAT和DNAT的简单演示_SNAT_08

成功登录

s2netstat -anpt

【linux】iptables防火墙SNAT和DNAT的简单演示_linux_09

验证登录的为真机IP地址192.168.80.5

实验结束。