实验准备:
虚拟机 | 网卡类型 | 网卡名称 | 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地址访问外网的地址。
- 虚拟机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地址上网
- 、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
- 在第3台虚拟机上测试验证
使用火狐浏览器访问 http://192.168.188.20 ###防火墙外网卡地址
- 在第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端口
- 在第3台虚拟机上测试
[root@localhost ~]# ssh root@192.168.188.20 -p 2345
root@192.168.188.20's password: ###服务器密码
[root@localhost ~]# ifconfig ens33 ###访问成功