如何解决防火墙和容器发布的端口
在我的 RHEL8 主机的 KVM 来宾上,其 KVM 来宾运行 CentOS7,我期望防火墙默认阻止外部访问由运行 nginx 的 Docker 容器发布到的临时端口。令我惊讶的是,访问并未被阻止。
同样,主机 (myhost) 运行 RHEL8,它有一个运行 CentOS7 的 KVM 来宾 (myguest)。
myguest 上的 firewalld 配置是标准配置,没什么特别的:
[root@myguest ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: http https ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
以下是属于 firewalld 公共区域的 eth0 和 eth1 接口:
[root@myguest ~]# ip a s dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:96:9c:fc brd ff:ff:ff:ff:ff:ff
inet 192.168.100.111/24 brd 192.168.100.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe96:9cfc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@myguest ~]# ip a s dev eth1
3: eth1: <BROADCAST,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:66:6c:a1 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.111/24 brd 192.168.1.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe66:6ca1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
在我的访客上,我正在运行 Docker,并且 nginx 容器正在将其端口 80 发布到一个临时端口:
[me@myguest ~]$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06471204f091 nginx "/docker-entrypoint.…" About an hour ago Up About an hour 0.0.0.0:49154->80/tcp focused_robinson
请注意,在之前的 firewall-cmd 输出中,我不允许通过这个临时 TCP 端口 49154(或任何其他临时端口)进行访问。所以,我期待除非我这样做,否则对 nginx 的外部访问将被阻止。但令我惊讶的是,我能够从家庭网络中运行 Windows 的另一台主机访问它:
C:\Users\me>curl http://myguest:49154
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
.
.etc etc
如果一个容器将其容器端口发布到主机上的一个临时端口(在本例中为 myguest),主机防火墙实用程序是否应该像保护标准端口一样保护对该端口的访问?我错过了什么吗?
但我也注意到事实上 nginx 容器正在监听 TCP6 套接字:
[root@myguest ~]# netstat -tlpan | grep 49154
tcp6 0 0 :::49154 :::* LISTEN 23231/docker-proxy
看来,firewalld 可能不会阻止 tcp6 套接字?我很困惑。
这显然不是生产问题,也不是需要失眠的问题。我只是想弄清楚它。谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。