项目说明:

模拟企业让内网服务器可以上网,同时发布内网的服务器

1.实验环

我们需要准备三台linux系统,一台作为路由器机route,其它为客户机client-1、client-2

主机改名

hostnamectl set-hostname 主机名

切换用户,显示修改后的主机名

su - root

2.网络拓扑图

 3.三台机器的IP地址配置

进入三台机器的网卡配置文件目录

cd /etc/sysconfig/network-scripts/

route机IP地址配置

WAN的IP地址(网段必须和你windows的IP地址网段一致)

ens33:

以下网卡都是局域网的IP地址配置 (请随意配置)

网关

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的测试工具进行测试

计算机网络:基于iptalbes的SANT和DNAT|docker的服务器发布项目--超详细一看就会的更多相关文章

  1. 使用IDEA新建基于SpringBoot的Web项目(超详细)

    目前java的开发很多Learner都慢慢的学习使用IDEA这款工具,个人觉得其实相比Eclipse来说差不多,个人习惯的问题,但是我还是推荐IDEA这款工具.虽然它目前是收费的,但相信网上的各种破解 ...

  2. 基于Ceph分布式集群实现docker跨主机共享数据卷

    上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷. 1.环境准备 在原来的环境基础之上,新增一台cen ...

  3. 记基于docker+gunicorn部署sanic项目遇到的很多很多坑

    前言: 最近有个项目需要上线,是python中sanic网络异步框架写的,并且要求使用docker+nginx来部署项目实现负载均衡,于是乎百度了sanic项目部署,基本上都是基于docker+gun ...

  4. 使用Docker部署Spring boot项目

    Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...

  5. Docker如何部署Python项目

    Docker 部署Python项目 作者:白宁超 2019年5月24日09:09:00 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如 ...

  6. Docker跨服务器通信Overlay解决方案(下) Consul集群

    承接上文 本文基于上篇文章,详细的场景说明与分析在前篇随笔中业已记录,有兴趣可以移步 Docker跨服务器通信Overlay解决方案(上) Consul单实例 本文主旨 本文为Docker使用Cons ...

  7. 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)

    0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...

  8. 从零开始学习docker之在docker中运行springboot项目

    一.docker环境配置 首先需要一个安装了docker的服务器(本地或者云服务器),如果没有请看上文,传送门---https://www.cnblogs.com/wdfordream/p/12737 ...

  9. docker自动化部署前端项目实战一

    docker自动化部署前端项目实战一 本文适用于个人项目,如博客.静态文档,不涉及后台数据交互,以部署文档为例. 思路 利用服务器node脚本,监听github仓库webhook push事件触发po ...

随机推荐

  1. 锁&事务

    一.概述: 锁:是计算机协调多个进程或线程并发访问某一资源的机制,数据库中最重要的资源.数据库既要保证并发性,又要保证数据的一致性,所以锁机制也更复杂.在计算机科学中,锁(lock)或互斥(mutex ...

  2. python 17篇 unittest单元测试框架

    单元测试:开发程序的人自己测试自己的代码 unittest自动化测试框架 1.单元测试 import unittest def add(a,b): return a+b # 在运行时不要用run un ...

  3. C语言:结构体应用

    #include <stdio.h> #include <stdlib.h> #include <assert.h> typedef struct student{ ...

  4. kubernetes/k8s CSI分析-容器存储接口分析

    更多 k8s CSI 的分析,可以查看这篇博客kubernetes ceph-csi分析,以 ceph-csi 为例,做了详细的源码分析. 概述 kubernetes的设计初衷是支持可插拔架构,从而利 ...

  5. NOI2021游记

    NOI2021游记 前言 写于 2021.7.28,成绩榜刚出后几个小时.总分 345 拿到银牌 183 名. 我的高中 OI 生活在这里画上句号.结局对我而言虽然不够完美,但是无论怎样都是我人生道路 ...

  6. P4293 [WC2010]能量场

    P4293 [WC2010]能量场 题意 给你 \(n\) 个粒子,每个粒子有两个权值 \(m_i,c_i\) 每个相邻有序对 \((a,b)\) 会产生 \(m_am_b(c_a-c_b)\) 的贡 ...

  7. JAVA web环境搭建(使用Tomcat8整合httpd)

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建Tomcat并整合httpd的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查 ...

  8. 图像旋转的FPGA实现(一)

    继续图像处理专题,这次写的是图像旋转.若要说小分辨率的图像旋转倒也简单,直接将原始图像存储在BRAM中,然后按照旋转后的位置关系取出便是.但是对于高分辨的图像(720P及以上)就必须得用DDR3或者D ...

  9. 爬取千千小说 -- xpath

    今天以其中一本小说为例,讲一下下载小说的主体部分,了解正常的爬取步骤,用到的是request和xpath. 爬取数据三步走:访问url -->爬取数据 -->保存数据 一.访问千千小说网址 ...

  10. 华为视频编辑服务(Video Editor Kit),助力开发者高效构建应用视频编辑能力

    视频编辑服务(Video Editor Kit)是华为开放给开发者快速构建视频编辑能力的服务,提供视频导入.编辑处理.特效渲染.视频导出.媒体资源管理等一站式视频处理能力.视频编辑服务为全球开发者提供 ...