如何在 Firewalld 上允许端口?

如何在 Firewalld 上允许端口?

我正在研究docker。

我在本地电脑(window)上使用 SSH 连接到我的服务器电脑(ubuntu)。

在服务器 PC 上,我从 docker hub 中提取了 nginx 镜像,并使用端口选项运行它。

{server}@{server}:~$ docker run -itd --name test -p 32769:80 nginx:latest 

这是docker进程状态。

{server}@{server}:~$ docker ps -a
CONTAINER ID   IMAGE            COMMAND               CREATED          STATUS                PORTS                                         NAMES
687b709f8675   nginx:latest  "/docker-entrypoint.…"   50 minutes ago   Up 50 minutes  0.0.0.0:32769->80/tcp, :::32769->80/tcp               test 

我也通过此命令检查端口状态

{server}@{server}:~$ netstat -ntlp | grep 32769
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:32769           0.0.0.0:*               LISTEN      -
tcp6       0      0 :::32769                :::*                    LISTEN      -     

在本地电脑上,我尝试访问服务器电脑的 32769 端口。但是没有成功。

在 chrome 上,我尝试连接“http://{server_ip}:32769/”。失败了。

并在cmd上尝试了这个命令。

C:{local_path}>tcping {server_ip} 32769
Probing {server_ip}:32769/tcp - No response - time=2003.578ms
Probing {server_ip}:32769/tcp - No response - time=2007.065ms  

所以我认为这个问题与防火墙有关,并且在服务器 PC 上,我停止了防火墙。

{server}@{server}:~$ sudo systemctl stop firewalld 

停止firewalld后,连接成功。

但是我的问题是这样。我知道如果我在防火墙上添加一些选项以允许连接,连接必须成功。就我而言,它没有成功。这是我在防火墙上添加选项的命令。

{server}@{server}:~$ firewall-cmd --permanent --add-port=32769/tcp
{server}@{server}:~$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp3s0
sources:
services: dhcpv6-client ssh
ports: 32769/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:  
{server}@{server}:~$ sudo systemctl start firewalld

但连接失败。请帮帮我。我不想通过关闭整个防火墙来解决这个问题。我想使用防火墙并允许连接到特定端口。我的命令有什么问题?

相关内容