基于iptables的SNAT和DNAT以及docker的服务器发布项目

名词解释:

Iptables: Linux内核集成的IP信息包过滤系统

SNAT: Source Network Address Translation,源地址转换
DNAT: Destination Network Address Translation, 目的地址转换

项目环境:centos8,docker20.10.8,MySQL,nginx,iptables3台服务器

项目描述:实现内网服务器上网,并且采取docker容器技术构建web以及MySQL应用,该项目模拟了企业的环境实现发布企业内网的服务器。

项目步骤:

1、规划整个项目的拓扑结构以及ip地址

2、安装3台服务器的系统,根据拓扑图的规划配置ip地址,并且安装好docker软件(以client1作为示范)注意:不管是服务器还是firewall都必须用桥接模式

1)Firewall的ip地址配置:

   Ens33端口:

BOOTPROTO="none"

NAME="ens33"

DEVICE="ens33"

ONBOOT="yes"

IPADDR="192.168.0.108"

PREFIX="24"

GATEWAY=192.168.0.1

DNS1=114.114.114.114

    Ens37端口:

BOOTPROTO="none"

NAME="ens37"

DEVICE="ens37"

ONBOOT="yes"

IPADDR="192.168.160.254"

PREFIX="24"

    最后使用ifup ens33以及ifup ens37刷新网络服务

2)Client1的ip配置:

    Ens33端口:

        BOOTPROTO="none"

NAME="ens33"

DEVICE="ens33"

ONBOOT="yes"

IPADDR="192.168.160.1"

PREFIX="24"

GATEWAY=192.168.160.254

DNS1=114.114.114.114

3、在网关服务器上实现SNAT让内网的服务器可以上网,需要内网的服务器配置好ip和网关,dns

具体步骤:可使用shell脚本实现:

#!/bin/bash

#stop firewalld selinux(关闭防火墙以及selinux)

service firewalld stop

setenforce 0

#open routing(开启路由)

echo 1 >/proc/sys/net/ipv4/ip_forward

#clear iptables rules(清空原本的iptables的命令)

iptables -F

iptables -t nat -F

iptables -P INPUT ACCEPT

#SNAT policy(新增新的iptables政策)

iptables -t nat -A POSTROUTING -s 192.168.160.0/24 -o ens33 -j MASQUERADE

4、在内网服务器上启动nginx和MySQL的docker容器,测试容器是否能正常访问

具体步骤:

            1)docker run -d --name nginx-1 -p 80:80 nginx 创建nginx容器指定端口号为80

     2)docker run -d --name sc-mysql-1 -e MYSQL_ROOT_PASSWORD="sc123456" -p 3306:3306 mysql:5.7.35 创建MySQL容器指定端口号为3306

5、在网关服务器上编写脚本去配置好DNAT策略,开启路由功能

具体步骤:在步骤3脚本的基础上再加入下述内容:

#DNAT policy web

iptables -t nat -A PREROUTING -d 192.168.0.108 -p tcp --dport 80 -j DNAT --to-destination 192.168.160.1:80

iptables -t nat -A PREROUTING -d 192.168.0.108 -p tcp --dport 3306 -j DNAT --to-destination 192.168.160.1:3306

6、在其他的机器上测试发布的web和MySQL服务,使用curl和chrome,SQLyog的测试工具进行测试

项目总结:

  1. 如果想要把这个项目顺利完整的做出来,需要对各个步骤做到心里有数,所以第一步至关重要,最好能够把图完整的画出来,并且要熟悉项目中所需要的linux命令,
  2. 将iptables以及docker容器的原理融入到实验中,加深了对原理的理解,并且锻炼了trouble shooting的能力,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值