2022-08-10
记录一次,关于因为不熟悉防火墙,搞出的乌龙事件。
事件原由:
项目中有用到 es,当时遇到的问题是,es 的服务启动着,本机可以访问,但外网就不能访问了,网上找了挺多资料,说改一下配置就行了(这个网上的策略都大差不差,此处略),但按照网上说的策略操作,就是没有效果,想到会不会是防火墙的问题?9200这个端口没有只针对个别Ip进行开放?
于是找到了一个解决方案:
firewall-cmd --zone-public --add-port=9200/tcp --permanent systemctl restart firewalld.service
这个语句,是往防火墙添加了9200这个tcp端口,允许对9200的访问(虽然当时也不是特别清楚这语句的意思)
然后,执行了,没效果!
emmm,再然后发现,原来可以访问的服务,也访问不了了。。。nginx都访问不了了,疯了!!!!!
(好在不是生产环境!!!非专业运维人员,真的不要随便动生产!!!!)
糟糕了糟糕了,nginx 的端口都访问不了,怎么办呢?
好奇怪啊,好像也没干嘛呀。。。
折磨了好久,当时也很多人在等着使用服务,超级尴尬了。
不知道为什么,竟然搞了很久都没想过向运维人员求助,总觉得自己可以搞好(迷之自信)。
emmm,终于想起应该向运维人员求助的时候,已经过去好大半小时了。
运维同学,看了一下,就说了一句,这两台服务器之前是设置的 iptables , 并不是用的 firewall。。。但我这语句把 firewall 开启了,反而把iptables 给干没了(应该是 firewall的优先级比iptable要高吧?)
吐血了!!!!
因为不懂而执行的语句,把整个服务都给搞崩了。怎么办呢?
(1)先把firewall stop 掉: systemctl stop firewalld.service
(2)再尝试一下,在浏览器请求web服务,看是否可以请求了
(3)浏览器请求, 发现 502 ,说明 nginx 已经能够被访问,但还有服务不行。嗯?原来是有登录服务是部署在另外一台服务器(一样被我弄坏了,把防火墙搞起来,只能本机访问,其它Ip全部不允许访问)。于是去另外一台服务器,把 firewalld.service 停下来后,也就恢复了。
(4)现在就还存在一个问题,现在服务都是没有防火墙,也没有设置 iptables 的。即好像在裸奔的感觉。怎么办。(现在只能先把防火墙拉起来,明天再把iptables 设置起来了)
以后不清楚的指令,还是别随便弄,特别是运维层面,一旦搞坏了,就是整个环境的问题了。