- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 RHEL8 主机的 KVM guest 上,其 KVM guest 运行 CentOS7,我希望 firewalld 默认阻止外部访问由运行 nginx 的 Docker 容器发布的临时端口。令我惊讶的是,访问并未被阻止。
同样,主机 (myhost) 正在运行 RHEL8,它有一个运行 CentOS7 的 KVM guest (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 公共(public)区域的 eth0 和 eth1 接口(interface):
[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,MULTICAST,UP,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
在 myguest 上,我正在运行 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 套接字?我很困惑。
这显然不是生产问题,也不是失眠的问题。我只是想弄明白它。谢谢。
最佳答案
多年来,docker 和 firewalld 之间的集成发生了变化,但根据您的操作系统版本和 CLI 输出,我认为您可以通过设置 AllowZoneDrifting=no
来获得您期望的行为 /etc/firewalld/firewalld.conf
1在 RHEL-8 主机上。
由于zone drifting ,在带有 --set-target=default
的区域(例如 public
区域)接收到的数据包可能会漂移到带有 --set-target 的区域=accept
(例如 trusted
区域)。这意味着在区域 public
中收到的 FORWARDed 数据包将被转发到区域 trusted
。如果您的 docker 容器使用的是真正的桥接接口(interface),则此问题可能适用于您的设置。 Docker 默认为 SNAT,所以通常这个问题是隐藏的。
较新的防火墙 2版本已完全消除此行为,因为正如您所发现的那样,它既是意外的又是安全问题。
关于docker - Firewalld 和容器发布的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65499792/
在我的 RHEL8 主机的 KVM guest 上,其 KVM guest 运行 CentOS7,我希望 firewalld 默认阻止外部访问由运行 nginx 的 Docker 容器发布的临时端口。
从 firewalld 手册页: –permanent [–zone=zone] --set-target=target Set the target of a permanent zone. tar
我尝试将以下内容添加到 Ansible 剧本中: firewall-cmd --permanent --new-zone dockerc firewall-cmd --permanent --zone
我正在尝试从 firewall-cmd 中删除一些丰富的规则,它似乎有效: firewall-cmd --remove-rich-rule 'rule family="ipv4" source
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
我需要为 SCOM 监控打开端口 1270/tcp。 所以,我创建了一个新区域 020_scom (因为我知道字母顺序会导致偏好问题......我用数字开头的名字制作我的) 然后将端口 1270/tc
我正在设置 Cuckoo Sandbox,我有几个 IPTables 规则需要转换为 Firewalld 规则。 这是 Cuckoo Sandbox 安装指南的引用页:http://docs.cuck
我有一个 Centos7 的小集群。我正在尝试如何使用新的 firewalld。 我需要一个规则来允许这些服务器之间的所有流量。我能够做到这一点: sudo iptables -A INPUT -s
我正在尝试使用 a guide 将 LAMP 设置为 CentOS7 .我尝试运行这些命令以允许 HTTP 和 HTTPS 流量: sudo firewall-cmd --permanent --zo
我正在尝试从我的 Fedora 客户端通过 Ansible 在我的 Fedora 23 服务器上设置我的防火墙(是的,我喜欢 fedora :D )。 但是,每次我尝试使用包括 firewalld 在
我在centos 7中用ansible向firewalld添加了一些规则。但我必须重新加载 firewalld 守护程序,以便服务正常工作。有什么想法吗? 这是我的ansible代码: - name:
我是法兰绒和 K8s 的新手。我在我的 1 个主节点和 2 个节点集群(从 KVM 创建)上玩弄它们。 我用法兰绒网络插件初始化了我的集群。然后我发现我无法到达内部。 结果证明我的网络或 DNS 进程
我已经设置了一个 pi-hole docker 容器并在 CentOS7 上暴露了 dns 端口和端口 80。然而,这些端口现在可用于所有源,这不是很方便,因为它在 VPS 上运行。 所以我试图让fi
我正在本地网络中运行 MySQL 服务器。也连接到同一网络的多个客户端应用程序使用 MySQL cppconn 连接器与此服务器进行通信。我想模拟服务器的物理断开连接,并监视客户端的响应。 服务器运行
我有一个 CentOS 7 服务器,它运行了 600 多天,直到它最近重新启动,之后传入的 Web 请求收到 HTTP523(源不可访问)错误代码(通过 Cloudflare,如果这有什么不同?)除非
我需要将端口 8080 重定向到我的 Linux 服务器上的端口 80。我的问题与以下相同: https://askubuntu.com/a/579540 唯一的区别是我没有 iptables - 有
我正在尝试按照 https://www.ovirt.org/documentation/installing_ovirt_as_a_self-hosted_engine_using_the_cockp
我的 ansible-playbook 脚本中有一个任务是打开远程机器上的 TCP 端口。但是当我运行我的 ansible 剧本时,它会抛出一个错误。但是当我运行 "firewall-cmd --pe
我的目标是使用 Python 在 CentOS 7 机器上自动配置防火墙。 该操作系统带有firewalld,所以这就是我正在使用的。我调查了一下,发现它使用了 dbus(我从来没有听说过或处理过这些
我正在尝试让 MPI 在 Centos 7 操作系统的小型集群上运行。防火墙阻止它运行。这是我得到的错误: $ mpirun -np 30 -hostfile hosts.txt mpi_sa
我是一名优秀的程序员,十分优秀!