Iptables之SNAT和DNAT实验

本文详细介绍了如何在虚拟机中配置网络接口、设置SNAT和MASQUERADE规则以实现固定和动态IP地址上网,以及DNAT用于互联网访问局域网服务。还涵盖了防火墙规则的设置和企业服务器端口转发的应用。
摘要由CSDN通过智能技术生成

 

实验准备:

虚拟机

网卡类型

网卡名称

IP地址

网关

虚拟机1

Vmnet1

ens33

172.16.1.128    (内网)

172.16.1.130

虚拟机2

Vmnet1

Vmnet2

ens33

ens37

172.16.1.130    (内网)

192.168.188.20  (外网)

虚拟机3

Vmnet2

ens37

192.168.188.30  (外网)

192.168.188.20(加或不加都行)

实验步骤:

1)虚拟机1修改网卡信息 (添加网关为防火墙内网地址)

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

[root@localhost ~]# systemctl restart network

2)虚拟机1 关闭firewalld和内核安全机制

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

3)虚拟机2修改内网卡信息

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

4)虚拟机添加一块网卡ens37,并修改网卡信息

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

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37          ##复制网卡配置文件

[root@localhost network-scripts]# vim /ifcfg-ens37                 ##外网卡

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

5)虚拟机2关闭firewalld和内核安全机制

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

6)虚拟机3修改网卡信息

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  ##外网卡(网关可不加)

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

7)虚拟机3关闭firewalld和内核安全机制

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

局域网共享固定IP地址上网

SNAT地址转换,根据指定条件修改数据包的源IP地址,解析局域网上网问题。

实现原理:在防火墙上设置SNAT表和POSTROUTING链上,将源地址(也就是内网的IP地址)替换为防火墙的公网地址,此方法设置的是固定的IP地址,最终通过内网的IP地址访问外网的地址。

  1. 虚拟机2(网关)开启路由转发功能

[root@localhost ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward=1

[root@localhost ~]# sysctl -p                   ###让配置生效

[root@localhost ~]# yum clean all && yum makecache

2)虚拟机2安装iptables服务

[root@localhost ~]# yum -y install iptables iptables-services

[root@localhost ~]# systemctl start iptables

3)防火墙添加SNAT规则

[root@localhost ~]# iptables -t filter -F      ###清除fiter表中所有链

[root@localhost ~]# iptables -t nat -F       ###清除nat表中所有链

[root@localhost ~]# iptables -t nat -A POSTROUTING  -s 172.16.1.0/24  -o  ens37  -j  SNAT --to-source 192.168.188.20               #SNAT规则

### ens37  防火墙外网卡          192.168.188.20  防火墙外网IP 

###告诉系统所有从防火墙出去的172.16.1.0网段的数据包都修改为192.168.188.20,然后交给路由进行转发;

4)在第1台虚拟机上测试验证

[root@localhost ~]# ping 192.168.188.30

局域网共享动态IP地址上网

  1. 、2)步省略

3)防火墙添加SNAT规则

[root@localhost ~]# iptables -t filter -F      ###清除fiter表中所有链

[root@localhost ~]# iptables -t nat -F       ###清除nat表中所有链

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o ens37 -j MASQUERADE               ### -j MASQUERADE  地址伪装

4)测试网络

在第一台虚拟机上测试

[root@localhost ~]# ping 192.168.188.30

互联网访问局域网中的服务

DNAT目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全。

工作原理:防火墙上设置NAT表以及PREROUTING链,当外部用户访问防火墙公网的IP地址,防火墙的公网IP地址转发到后端内网的IP地址和端口上,表面上用户访问的是防火墙的公网IP地址和端口,实际访问的是后端内网的IP地址和端口。

1)虚拟机2(网关)开启路由转发功能

[root@localhost ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward=1

[root@localhost ~]# sysctl -p

2)防火墙添加DNAT规则

[root@localhost ~]# iptables -t filter -F      ###清除fiter表中所有链

[root@localhost ~]# iptables -t nat -F       ###清除nat表中所有链

[root@localhost ~]# iptables -t nat -A PREROUTING -i ens37 -d 192.168.188.20 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.128

### ens37  防火墙外网卡  192.168.188.20 防火墙外网IP    172.16.1.128  内网IP

###告诉系统从互联网访问目的地址为192.168.188.20的数据包经过Linux(防火墙)之前修改为172.16.1.128然后交给路由进行转发。

3)虚拟机1安装httpd服务,并启动

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# systemctl start httpd                       ###启动服务

4)虚拟机1查看端口号

[root@localhost ~]# netstat -anpt |grep :80

tcp6       0      0 :::80               :::*              LISTEN      67035/httpd

  1. 在第3台虚拟机上测试验证

使用火狐浏览器访问 http://192.168.188.20             ###防火墙外网卡地址

  1. 在第1台虚拟机上查看web服务日志

[root@localhost ~]# tail -f  /var/log/httpd/access_log

 

###根据日志可看到访问信息,实际是第三台服务器在访问web服务;

企业服务器端口转发

实现原理:在防火墙上定义转发规则,将本地公网的IP地址和端口映射到内网的IP地址和端口号;

1)添加规则

[root@localhost ~]# iptables -t nat -A PREROUTING -i ens37 -d 192.168.188.20 -p tcp --dport 2345 -j DNAT --to-destination 172.16.1.128:22

###将本地的2345端口映射为局域网中的22端口

  1. 在第3台虚拟机上测试

[root@localhost ~]# ssh root@192.168.188.20 -p 2345

root@192.168.188.20's password:                            ###服务器密码

[root@localhost ~]# ifconfig ens33                            ###访问成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值