项目实战1——基于iptables的SNAT+DNAT与Docker容器发布的项目

目录

项目简介 

项目详细代码如下 

一、拓扑结构图如下

二、实现SNAT并配置好服务器的IP

三、配置好客户机内网的IP

四、安装好Docker,并启动nginx和MySQL的Docker容器

五、配置DNAT策略

六、测试DNAT是否实现成功



项目简介 

  • 项目名称:基于iptables的SNAT+DNAT与Docker容器发布的项目
  • 项目环境:CentOS8,Docker,MySQL(5.7.35),nginx,iptables等
  • 项目描述:通过模拟企业的环境,发布内网服务器,让内网服务器实现网络链接;同时采取Docker容器构建自己的web和MySQL应用
  • 项目步骤
    1. 规划整个项目的拓扑结构和IP地址
    2. 安装好3台服务器系统,根据拓扑图的规划配置IP地址,并安装好Docker软件
    3. 在网关服务器上实现SNAT让内网的服务器实现上网功能,同时配置内网服务器的ip、网关和dns
    4. 在内网服务器上启动nginx和MySQL的Docker容器,测试容器是否能正常访问
    5. 在网关服务器上完成配置DNAT策略,并开启路由功能
    6. 进行测试,检验项目效果。使用curl或chrome测试web服务是否成功,使用SQLyog的测试MySQL容器是否成功。
  • 项目心得
    1. 明白了项目拓扑图的重要性,依次才能完成好各项步骤
    2. 进一步加强了对iptables和Docker容器的理解与掌握
    3. 对于多台服务器的功能实现有了一定的经验
    4. 增强了自身的网络troubleshooting能力
    5. 提升了自己shell编程能力,更懂得了shell编程时严谨的重要性
  • 遇到的问题
    1. 网关服务器外的两台客户机连不上XSHELL同时不能ping通外网地址,是由于网关服务器的防火墙功能未关闭
    2. 在Windows添加路由时,CMD始终是别不了route add命令,是由于未使用管理用方式打开CMD
    3. 由于不够细致,有时较长的iptables的命令出现漏掉选项等情况,导致命令无法执行,需要进一步提升严谨性

  • 项目详细代码如下 

  • 一、拓扑结构图如下


  • 二、实现SNAT并配置好服务器的IP

    主机:root@server

    客户机1:root@web-mysql

    客户机2:root@web-mysql-2

  • 1.配置好网关服务器的SNAT策略:
    [root@server /]# cd /lianxi
    [root@server lianxi]# mkdir 0813
    [root@server lianxi]# ls
    0813
    [root@server 0813]# vim snat.sh
    snat.sh
    [root@server 0813]# cat snat.sh 
    #!/bin/bash
    
    #open route function
    echo 1 >/proc/sys/net/ipv4/ip_forward
    
    #clear iptables rules
    iptables -F
    iptables -t nat -F
    iptables -P INPUT ACCEPT
    
    #start snat
    #iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j SNAT --tosource 192.168.2.200
    iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j MASQUERADE
    [root@server 0813]# vim snat.sh 
    [root@server 0813]# cat snat.sh 
    #!/bin/bash
    
    #stop firewalld service
    service firewalld stop 
    
    # selinux policy
    setenforce 0
    
    #open route function
    echo 1 >/proc/sys/net/ipv4/ip_forward
    
    #clear iptables rules
    iptables -F
    iptables -t nat -F
    iptables -P INPUT ACCEPT
    
    #start snat
    
    #iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j SNAT --tosource 192.168.2.200
    iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens33 -j MASQUERADE
    [root@server 0813]# bash snat.sh 
    Redirecting to /bin/systemctl stop firewalld.service
    [root@server 0813]# iptables -L -t nat -n # 查看iptables的规则
    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               desti
  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chaochao️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值