1.实验环境
我们需要准备三台linux系统,一台作为路由器机route,其它为客户机client-1、client-2
主机改名
hostnamectl set-hostname 主机名
2.网络拓扑图
3.三台机器的IP地址配置
进入centos7的网卡配置文件目录
cd /etc/sysconfig/network-scripts/
route机IP地址配置
ens33:
ens37:
client-1IP地址配置
ens33:
client-2IP地址配置
ens33:
centos7的网卡重载命令
ifup 网卡名
ifup ens33
配置完后客户机ping网卡成功我们配置完成
ping 192.168.17.254
4.连接到xshell方便操作
用管理员身份打开cmd
添加路由表
route add 192.168.17.0/24 192.168.0.100 前者为目标网段 后者为下一跳地址,即路由器机的IP地址
4.开启route机的路由功能
关闭三台机器的firewall和selinux服务(皆为临时修改,建议永久修改)
systemctl stop firewalld setenforce 0
开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
5.实现SANT策略(局域网主机共享单个公网ip地址接入Internet)
#清除filter表和nat表里的防火墙规则 iptables -F iptables -t nat -F #SNAT策略 #第一种 iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -o ens33 -j SNAT --to-source 192.168.0.100 #第二种 iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -o ens33 -j MASQUERADE
到这一步我们发现客户机可以ping通Internet
6.为docker的服务发布建立环境
打开docker服务(linux裸机没有安装这个docker,需自行安装)
systemctl start docker
下载镜像创建容器并运行它
#客户机1 #我运行了nginx和mysql的容器 docker run --name sc-nginx-1 -d -p 80:80 nginx #注意需关闭占用客户机3306端口的数据库服务,否则会冲突 docker run --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD=‘123‘ -d -p 3306:3306 mysql:5.7.35
#客户机2 #这台机器我们只起mysql的容器
#注意这台机器把客户机3307端口映射到容器的3306端口 docker run --name sc-mysql-2 -e MYSQL_ROOT_PASSWORD=‘123‘ -d -p 3307:3306 mysql:5.7.35
7,实现DNAT策略(将内网的服务器发布到Internet)
#DNAT策略 #dnat web iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.17.1:80 #dnat mysql 192.168.17.1 iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.100 -p tcp --dport 3306 -j DNAT --to-destination 192.168.17.1:3306 #dnat mysql 192.168.17.2 iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.100 -p tcp --dport 3307 -j DNAT --to-destination 192.168.17.2:3306
8,在其他的机器上测试发布的web和MySQL服务,使用curl和chrome,SQLyog的测试工具进行测试