ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

经典版imanager部署开放需要的防火墙端口

2022-01-04 09:33:35  阅读:194  来源: 互联网

标签:zone imanager -- cmd 端口 防火墙 public firewall port


作者:wutaotao

我们知道,经典版imanager在实际项目部署时面对的是真实的物理机或虚拟的云主机环境,这种情况下出于安全考虑,服务器的防火墙需要是开启的状态。经典版imanager为了能够在这种情况下成功部署,超图研发团队给出了所有需要开放的端口列表,如imanager 1020版本的端口列表可以看1020版在线帮助文档,但具体如何开放端口以及如何验证开放端口的有效性文档中并没有给出,本文就这一点给出了方便执行的脚本和简单的验证步骤。以下为具体实验内容,文末给出了简明步骤,逐步执行即可。

注意,本实验内容为centos 7.9 x86_64系统环境,经典版imanager 1020版本, 并且假定读者已能在关闭防火墙的情况下成功部署imanager

实验内容

  1. 首先在部署前开启防火墙,如果没有开启则使用systemctl start firewalld开启。开启后检查防火墙状态 image-20211215110259859

有用户是先关闭了防火墙部署成功后想要再开启防火墙,具体步骤如下

  1. 先使用shutdown.sh或uninstall.sh脚本停止imanager

  2. systemctl start firewalld开启防火墙

  3. 执行startup.sh脚本,此时命令行就会报出如下错误 startupError 这个报错原因是因为防火墙的开启删除了docker的iptables条目导致,此时重新启动docker即可,重启过程中docker会重新创建这些条目。

    systemctl restart docker

  1. 执行startup.sh脚本启动imanager。通过命令docker logs -f imanager实时查看imanager容器日志,等待一段时间后,看到imanager容器日志输出如[main] org.apache.catalina.startup.Catalina.start Server startup in 684532 ms字样,说明imanager容器启动完成,此时imanagerIP:8390页面访问失败,按F12看控制台报如下错误(因为我们还没有开放需要的端口) image-20211215114516634

  2. centos开启防火墙端口目前有2种方式,iptables和firewalld, 笔者这里使用的是firewalld方式。根据在线帮助文档得到需要开启的全部端口,并使用命令逐一开启,整理得到以下脚本openPorts.sh

#!/bin/bash
echo "before operating, opened port are: "
firewall-cmd --zone=public --list-ports
​
firewall-cmd --zone=public --add-port=9083/tcp   --permanent
firewall-cmd --zone=public --add-port=8390/tcp   --permanent
firewall-cmd --zone=public --add-port=443/tcp    --permanent
firewall-cmd --zone=public --add-port=88/tcp     --permanent
firewall-cmd --zone=public --add-port=80/tcp     --permanent
firewall-cmd --zone=public --add-port=10051/tcp  --permanent
firewall-cmd --zone=public --add-port=10052/tcp  --permanent
firewall-cmd --zone=public --add-port=3306/tcp   --permanent
firewall-cmd --zone=public --add-port=5001/tcp   --permanent
firewall-cmd --zone=public --add-port=32768/tcp  --permanent
firewall-cmd --zone=public --add-port=5601/tcp   --permanent
firewall-cmd --zone=public --add-port=9201/tcp   --permanent
firewall-cmd --zone=public --add-port=9301/tcp   --permanent
firewall-cmd --zone=public --add-port=9090/tcp   --permanent
firewall-cmd --zone=public --add-port=3000/tcp   --permanent
firewall-cmd --zone=public --add-port=3308/tcp   --permanent
firewall-cmd --zone=public --add-port=89/tcp     --permanent
firewall-cmd --zone=public --add-port=8500/tcp   --permanent
firewall-cmd --zone=public --add-port=9183/tcp   --permanent
firewall-cmd --zone=public --add-port=9283/tcp   --permanent
firewall-cmd --zone=public --add-port=3316/tcp   --permanent
firewall-cmd --zone=public --add-port=3336/tcp   --permanent
firewall-cmd --zone=public --add-port=8122/tcp   --permanent
firewall-cmd --zone=public --add-port=8123/tcp   --permanent
firewall-cmd --reload
​
echo "after operating, opened port are: "
firewall-cmd --zone=public --list-ports
  1. 执行该脚本后,发现8390页面仍然无法访问,这是因为即使firewalld reload了端口的设置,但docker容器并没有检测到firewalld端口的变化,具体情况可参考这个issue的讨论

    FirewallD doesn't go well with Docker · Issue #461 · firewalld/firewalld · GitHub

    我们可以通过重启docker或重启imanager来使防火墙的变化被docker容器感知到。

  2. 笔者执行了重启docker,命令执行完成后通过docker logs -f imanager查看imanager容器日志,同样等待出现server startup in xxxx ms时说明imanager启动完成,此时再访问8390页面即可访问成功 image-20211215141848239

验证

以上实验内容就完成了开启防火墙情况下imanager的部署过程,但如果我们关闭了相应的端口,imanager还能访问到么?或者某些情况下需要临时关闭某些端口怎么办?笔者同样整理了一个关闭端口的脚本removePorts.sh,读者们可以根据具体需求加以修改使用

#!/bin/bash
​
echo "before operating, opened port are: "
firewall-cmd --zone=public --list-ports
​
firewall-cmd --zone=public --remove-port=9083/tcp        --permanent
firewall-cmd --zone=public --remove-port=8390/tcp        --permanent
firewall-cmd --zone=public --remove-port=443/tcp         --permanent
firewall-cmd --zone=public --remove-port=88/tcp          --permanent
firewall-cmd --zone=public --remove-port=80/tcp          --permanent
firewall-cmd --zone=public --remove-port=10051/tcp       --permanent
firewall-cmd --zone=public --remove-port=10052/tcp       --permanent
firewall-cmd --zone=public --remove-port=3306/tcp        --permanent
firewall-cmd --zone=public --remove-port=5001/tcp        --permanent
firewall-cmd --zone=public --remove-port=32768/tcp       --permanent
firewall-cmd --zone=public --remove-port=5601/tcp        --permanent
firewall-cmd --zone=public --remove-port=9201/tcp        --permanent
firewall-cmd --zone=public --remove-port=9301/tcp        --permanent
firewall-cmd --zone=public --remove-port=9090/tcp        --permanent
firewall-cmd --zone=public --remove-port=3000/tcp        --permanent
firewall-cmd --zone=public --remove-port=3308/tcp        --permanent
firewall-cmd --zone=public --remove-port=89/tcp          --permanent
firewall-cmd --zone=public --remove-port=8500/tcp        --permanent
firewall-cmd --zone=public --remove-port=9183/tcp        --permanent
firewall-cmd --zone=public --remove-port=9283/tcp        --permanent
firewall-cmd --zone=public --remove-port=3316/tcp        --permanent
firewall-cmd --zone=public --remove-port=3336/tcp        --permanent
firewall-cmd --zone=public --remove-port=8122/tcp        --permanent
firewall-cmd --zone=public --remove-port=8123/tcp        --permanent
firewall-cmd --reload
​
echo "after operating, opened port are: "
firewall-cmd --zone=public --list-ports

注意,同以上开放端口的情况一样,执行该脚本后立即去访问8390页面,发现imanager页面还是可以访问的,这里也是因为docker和firewalld的兼容性问题,所以仍然需要重启docker或imanager后再来验证,可以发现重启后就无法访问了(虽然firewalld和docker没有完全兼容,但firewalld命令比iptables简洁清晰, 还是推荐使用)。

简明步骤

已经关闭防火墙部署成功后的情况

  1. systemctl start firewalld

  2. ./openPorts.sh,脚本内容见上文实验内容第3点

  3. systemctl restart docker 如果替换成重启imanager会导致报错如

    (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8390 -j DNAT --to-destination 172.18.0.7:8390 ! -i br-a2219f708014: iptables: No chain/target/match by that name. (exit status 1))

  4. docker logs -f imanager查看imanager容器日志,等待启动完成即可。

尚未部署或重新部署的情况

  1. systemctl start firewalld (若之前尚未开启)

  2. ./openPorts.sh,脚本内容见上文实验内容第3点

  3. ./startup.sh 若有报错见上文实验内容第一点,也是重启docker

  4. docker logs -f imanager查看imanager容器日志,等待启动完成即可。

标签:zone,imanager,--,cmd,端口,防火墙,public,firewall,port
来源: https://blog.csdn.net/supermapsupport/article/details/122296312

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有