centos 7 防火墙明明已经启动了、但是我并没有对这个端口开放!
而这个端口却可以访问这是怎么回事啊?
端口号:32770
防火墙信息:
https://s1.ax1x.com/2020/03/30/GepBjO.png
网页访问:
1
zwl2012 2020-03-30 15:23:48 +08:00 via iPhone
安了 docker
|
2
ashes1122 2020-03-30 15:38:29 +08:00
禁一下这个端口然后看看有什么变化。
|
5
cev2 2020-03-30 16:18:15 +08:00 3
这个问题在 Docker 官方文档中说的很明白,显然你是没有阅读官方文档就直接使用的 Docker 。
Docker 自动设定的 iptables 规则 [DOCKER-USER DOCKER] 比你手动设定的 iptables/firewalld 规则优先级要高,所以除非把规则添加到上述 [] 中才能生效。 不过如果你嫌麻烦还可以: 0.如果需要外网访问,可在容器内设定防火墙; 1.如果不需要外网访问 /爷就喜欢宿主防火墙,Docker 绑定 0.0.0.0 改为 127.0.0.1 。(●'◡'●) |
6
janda OP @cev2 iptables 又不能直接完全禁用、用 firewall 替代,那我岂不是每次启动只能在 run 的时候添加 ip 才行吗
> docker run -d --name test_jenkins -p 127.0.0.1:8080:8080 jenkins |
7
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 个字符吗? 还是我没理解你的回复是什么意思?很迷呀。。 |
8
janda OP @cev2 我感觉动宿主机的 firewall 防火墙比较方便点、因为用的容器较多、里面每个防火墙都不一样、我对 iptables 也不是很熟练! 所以问问如果 我下次如果重新需要一个容器的时候、上面这个方法,是不是能够解决 docker 端口跳过宿主机防火墙的问题
|
9
cev2 2020-03-30 17:48:30 +08:00
@janda 8# 如果是单纯拒绝外网访问容器的话,是的。
但如果还有筛选可访问 IP 等高级需求的话,配合端口转发也可以,就是不太雅观。大量容器下不推荐,难管理。 也不清楚你是生产环境用的还是自己开发机 /VPS 玩的, 如果是生产环境,宿主必须 firewalld 情况下,直接容器里单独配置 firewalld 应该最不容易出错; 如果是自己机器上玩,→_→当然用 127.0.0.1/0.0.0.0 来回切换简单粗暴易用呀,折腾防火墙什么的最讨厌了。 |
10
sumika 2020-03-30 18:17:49 +08:00
可以禁止 docker 修改 iptables, 编辑 /etc/docker/daemon.json, 添加
{ "iptables": false } |
11
arloor 2020-03-30 19:18:35 +08:00 1
docker 使用 iptables 创建了 nat 规则,prerouting 链规则。
防火墙设置的是 input 规则 流量进来会先看 prerouting 规则,再看 input 规则。prerouting 命中了,防护哦强的 input 自然没用了 |
12
des 2020-03-30 19:46:59 +08:00 via Android
还可以 network 用 host
说实在的,docker 的网络转发效率真的是差 |
13
clague 2020-03-30 20:03:56 +08:00 via Android
docker 会直接在 iptables 上开洞,最直接的办法是在机外设防火墙
|
14
wxch111vv 2020-03-30 20:19:19 +08:00 via Android
所以我云服务器都用运营商的安全组 省事
|
15
tomychen 2020-03-30 20:20:41 +08:00
因为 nat 的优先级比 filter 高,所以...filter 并不会被触发
在 forward 上做 |
16
janda OP @cev2 这个不是批量创建的、我是阿里服务器自己测试玩的!
由于使用不同的镜像、所以会导致容器内部有得防火墙都不一样、而且有得甚至都没有安装,我觉得这个维护成本更高,所以就想用一个外部的方法控制最好了 @sumika 你这个方法我试过了、好像没有生效、创建的时候依旧会出现上面这个情况! @arloor iptables 防火墙感觉特麻烦、还是 firewall 好用、有没有办法可以在控制 docker 的上面解决这个问题呢 @clague @wxch111vv 我是用的阿里云服务器、每启动一个容器就登录后台去设置安全组、还是比较麻烦、还是宿主机一个命令方便 @tomychen @des 看样子我还是对 iptables 一无所知、去学习下 |
17
youtoshell 2020-03-31 12:11:28 +08:00 via Android
@janda 用 docker-compose 啊
|
18
tomychen 2020-03-31 13:31:01 +08:00
如果想单纯阻断 32770 从外网穿到 docker:80 的话
iptables -A FORWARD -p tcp --dport 32770 -j DROP 就成了 |
19
janda OP |
20
tomychen 2020-03-31 14:58:55 +08:00
firewall-cmd 和 iptables 就是两个前端,最终操作的都是 netfilter
|
21
youtoshell 2020-03-31 15:40:10 +08:00
@janda
docker-compose.yml version: '3' services: test_jenkins: image: jenkins container_name: test_jenkins restart: always ports: - "127.0.0.1:8080:8080" docker-compose up -d |
22
janda OP @youtoshell 大佬啊、 你这一段操作我没看懂
|