centos7 防火墙失效,这是怎么回事?

2020-03-30 14:40:48 +08:00
 janda

centos 7 防火墙明明已经启动了、但是我并没有对这个端口开放!

而这个端口却可以访问这是怎么回事啊?

端口号:32770

防火墙信息:

https://s1.ax1x.com/2020/03/30/GepBjO.png

网页访问:

https://s1.ax1x.com/2020/03/30/Ge9Nqg.png

5164 次点击
所在节点    Linux
22 条回复
zwl2012
2020-03-30 15:23:48 +08:00
安了 docker
ashes1122
2020-03-30 15:38:29 +08:00
禁一下这个端口然后看看有什么变化。
janda
2020-03-30 15:49:55 +08:00
@zwl2012 是的、我这个网站就是用 docker 创建的、这个端口就是 docker 映射的!
janda
2020-03-30 15:50:09 +08:00
@ashes1122 禁用和开启效果都是一样
cev2
2020-03-30 16:18:15 +08:00
这个问题在 Docker 官方文档中说的很明白,显然你是没有阅读官方文档就直接使用的 Docker 。
Docker 自动设定的 iptables 规则 [DOCKER-USER DOCKER] 比你手动设定的 iptables/firewalld 规则优先级要高,所以除非把规则添加到上述 [] 中才能生效。
不过如果你嫌麻烦还可以:
0.如果需要外网访问,可在容器内设定防火墙;
1.如果不需要外网访问 /爷就喜欢宿主防火墙,Docker 绑定 0.0.0.0 改为 127.0.0.1 。(●'◡'●)
janda
2020-03-30 16:38:43 +08:00
@cev2 iptables 又不能直接完全禁用、用 firewall 替代,那我岂不是每次启动只能在 run 的时候添加 ip 才行吗

> docker run -d --name test_jenkins -p 127.0.0.1:8080:8080 jenkins
cev2
2020-03-30 17:06:30 +08:00
@janda 6# What ?什么意思。
run 一次就新建一个新的容器,你为什么每次启动都要新建一个容器呢?用原来的那个容器不可以吗?新建容器时你输入 [-p 127.0.0.1:8080:8080] 和 [-p 8080:8080] 的差别也不算大吧。/(ㄒoㄒ)/~~何况谁闲的没事整体新建容器呀。

就是因为动系统不如动容器我才提的那两条呀,/疑问?你是修改宿主防火墙不嫌麻烦,但许久遇不到一次新建容器嫌多打 9 个字符吗?
还是我没理解你的回复是什么意思?很迷呀。。
janda
2020-03-30 17:17:21 +08:00
@cev2 我感觉动宿主机的 firewall 防火墙比较方便点、因为用的容器较多、里面每个防火墙都不一样、我对 iptables 也不是很熟练! 所以问问如果 我下次如果重新需要一个容器的时候、上面这个方法,是不是能够解决 docker 端口跳过宿主机防火墙的问题
cev2
2020-03-30 17:48:30 +08:00
@janda 8# 如果是单纯拒绝外网访问容器的话,是的。
但如果还有筛选可访问 IP 等高级需求的话,配合端口转发也可以,就是不太雅观。大量容器下不推荐,难管理。

也不清楚你是生产环境用的还是自己开发机 /VPS 玩的,
如果是生产环境,宿主必须 firewalld 情况下,直接容器里单独配置 firewalld 应该最不容易出错;
如果是自己机器上玩,→_→当然用 127.0.0.1/0.0.0.0 来回切换简单粗暴易用呀,折腾防火墙什么的最讨厌了。
sumika
2020-03-30 18:17:49 +08:00
可以禁止 docker 修改 iptables, 编辑 /etc/docker/daemon.json, 添加

{
"iptables": false
}
arloor
2020-03-30 19:18:35 +08:00
docker 使用 iptables 创建了 nat 规则,prerouting 链规则。
防火墙设置的是 input 规则

流量进来会先看 prerouting 规则,再看 input 规则。prerouting 命中了,防护哦强的 input 自然没用了
des
2020-03-30 19:46:59 +08:00
还可以 network 用 host
说实在的,docker 的网络转发效率真的是差
clague
2020-03-30 20:03:56 +08:00
docker 会直接在 iptables 上开洞,最直接的办法是在机外设防火墙
wxch111vv
2020-03-30 20:19:19 +08:00
所以我云服务器都用运营商的安全组 省事
tomychen
2020-03-30 20:20:41 +08:00
因为 nat 的优先级比 filter 高,所以...filter 并不会被触发

在 forward 上做
janda
2020-03-31 09:02:47 +08:00
@cev2 这个不是批量创建的、我是阿里服务器自己测试玩的!

由于使用不同的镜像、所以会导致容器内部有得防火墙都不一样、而且有得甚至都没有安装,我觉得这个维护成本更高,所以就想用一个外部的方法控制最好了





@sumika 你这个方法我试过了、好像没有生效、创建的时候依旧会出现上面这个情况!





@arloor iptables 防火墙感觉特麻烦、还是 firewall 好用、有没有办法可以在控制 docker 的上面解决这个问题呢



@clague
@wxch111vv 我是用的阿里云服务器、每启动一个容器就登录后台去设置安全组、还是比较麻烦、还是宿主机一个命令方便



@tomychen
@des 看样子我还是对 iptables 一无所知、去学习下
youtoshell
2020-03-31 12:11:28 +08:00
@janda 用 docker-compose 啊
tomychen
2020-03-31 13:31:01 +08:00
如果想单纯阻断 32770 从外网穿到 docker:80 的话
iptables -A FORWARD -p tcp --dport 32770 -j DROP
就成了
janda
2020-03-31 14:44:34 +08:00
@youtoshell 你这个具体怎么操作呢?




@tomychen 我这是 c7 、默认安装的是 firewall,按照你这个是要安装一个 iptables 来替代 firewall 来操作吗?
tomychen
2020-03-31 14:58:55 +08:00
firewall-cmd 和 iptables 就是两个前端,最终操作的都是 netfilter

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/657565

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX