Как разрешить порт на Firewalld?
Я изучаю докер.
Я использую SSH на своем локальном компьютере (окно) для подключения к серверу (ubuntu).
На серверном ПК я извлек образ nginx из Docker Hub и запустил его с параметром порта.
{server}@{server}:~$ docker run -itd --name test -p 32769:80 nginx:latest
Это статус процесса докера.
{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
Я подумал, что проблема связана с брандмауэром, и на серверном ПК я останавливаю firewalld.
{server}@{server}:~$ sudo systemctl stop firewalld
После остановки firewalld соединение удалось.
Но вот мой вопрос. Насколько я знаю, если я добавлю некоторые параметры в 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
Но соединение не удалось. Пожалуйста, помогите мне. Я не хочу решать эту проблему, а не просто отключать весь firewalld. Я хочу использовать firewalld и разрешить подключение к определенному порту. Что не так с моими командами?