FirewallD solta pacotes do Docker

0

[RESOLVIDO] - Veja a atualização abaixo.

Instalei o servidor de contorno ( link ) no meu servidor e, infelizmente, o FirewallD descarta todos os pacotes provenientes de cliente.

Meu sistema:

Ubuntu 18.04 x64
Linux x 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Versão do FirewallD: 0.4.4.5

Versão do Docker: Docker version18.05.0-ce, build f150324

Regras do FirewallD:

root@x:~# firewall-cmd --get-active-zones
public
  interfaces: ens3 docker0

root@x:~# firewall-cmd --list-ports
{outline_server_port}/tcp {outline_server_port}/udp

A resposta sobre isso link também não ajuda.

O Outline-Manager funciona bem, por exemplo: eu posso criar chaves e elas se conectam com sucesso, mas o Outline Client me dá o seguinte erro:

A networking error occurred. If this happens again, please submit feedback.

Assim que eu paro o FirewallD usando o seguinte comando:

systemctl stop firewalld.service

O

outline-client funciona bem, e quando eu inicio o FirewallD, ele não funciona novamente.

O seguinte é do status do FirewallD

root@x:~# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-05-15 23:37:31 CEST; 8s ago
     Docs: man:firewalld(1)
 Main PID: 2479 (firewalld)
    Tasks: 2 (limit: 1113)
   CGroup: /system.slice/firewalld.service
           └─2479 /usr/bin/python3 -Es /usr/sbin/firewalld --nofork --nopid

May 15 23:37:31 x systemd[1]: Starting firewalld - dynamic firewall daemon...
May 15 23:37:31 x systemd[1]: Started firewalld - dynamic firewall daemon.
May 15 23:37:32 x firewalld[2479]: WARNING: COMMAND_FAILED: '/sbin/iptables -w2 -t filter -n -L DOCKER-USER' failed: iptables: No chain/target/match by that name.
May 15 23:37:32 x firewalld[2479]: WARNING: COMMAND_FAILED: '/sbin/iptables -w2 -t filter -C DOCKER-USER -j RETURN' failed: iptables: Bad rule (does a matching rule exist in that chain?).
May 15 23:37:32 x firewalld[2479]: WARNING: COMMAND_FAILED: '/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-USER' failed: iptables: No chain/target/match by that name.

Eu habilitei

  1. Mascaramento no FirewallD também ( firewall-cmd --add-masquerade )
  2. E também ativou o encaminhamento de pacotes ipv4 ( vim /etc/sysctl.conf & net.ipv4.ip_forward=1 )

Agora, minha pergunta é: Como posso configurar o FirewallD para permitir pacotes do cliente de contorno?

Muito obrigado.

Outline uses docker.

UPDATE [2018.05.16]:

O problema reside na porta exclusiva que o contorno cria no contêiner docker para cada novo cliente AKA de chave, portanto, para corrigir o problema, faça o seguinte:

execute o seguinte comando (muito obrigado @abe)

ss -tlp

agora, todos os ss-servers com sua porta relacionada serão mostrados, por exemplo, o meu se parece com o seguinte:

root@dockerTest:~# ss -tlp
State              Recv-Q              Send-Q                            Local Address:Port                               Peer Address:Port                                                                      
LISTEN             0                   128                                     0.0.0.0:12615                                   0.0.0.0:*                  users:(("ss-server",pid=1162,fd=5))                    
LISTEN             0                   128                               127.0.0.53%lo:domain                                  0.0.0.0:*                  users:(("systemd-resolve",pid=617,fd=13))              
LISTEN             0                   128                                     0.0.0.0:ssh                                     0.0.0.0:*                  users:(("sshd",pid=824,fd=3))                          
LISTEN             0                   128                                        [::]:ssh                                        [::]:*                  users:(("sshd",pid=824,fd=4))                          
LISTEN             0                   128                                           *:47515                                         *:*                  users:(("node",pid=1103,fd=12))                        

agora, como podemos ver na saída, o ss-server usa a porta "12615", devemos permitir essa porta no FirewallD. Para fazer isso, execute os seguintes comandos:

firewall-cmd --add-port=12615/tcp
firewall-cmd --add-port=12615/udp

Verifique o contorno do cliente, ele deve se conectar.

se tudo funcionar como esperado, execute os seguintes comandos, para tornar as alterações permanentes

firewall-cmd --add-port=12615/tcp --permanent
firewall-cmd --add-port=12615/udp --permanent

Muito obrigado @abe, agradeço muito sua ajuda.

    
por nobody 15.05.2018 / 23:42

2 respostas

0

Eu instalei o docker em um novo servidor do Ubuntu 18.04 e verifiquei como funciona o firewalld ao executar o docker de maneira simples.
A imagem é httpd que eu usei.

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:        18.04
Codename:       bionic

# uname -a 
Linux my_hostname 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ sudo docker image list
REPOSITORY     TAG                 IMAGE ID            CREATED             SIZE
httpd          latest              fb2f3851a971        2 weeks ago         178MB
$ sudo docker run -d -i -t -p 80:80 httpd
$ sudo docker ps -a
CONTAINER ID   IMAGE      COMMAND              CREATED             STATUS             PORTS                NAMES
43b398cfa5b9   httpd      httpd-foreground"   31 minutes ago       Up 31 minutes       0.0.0.0:80->80/tcp   loving_northcutt
# ss -tlp
State      Recv-Q         Send-Q         Local Address:Port    Peer Address:Port
LISTEN      0              128                 *:http                 *:*          users:(("docker-proxy",pid=2101,fd=4))
# firewall-cmd --list-all
public
  target: default
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:    

Sinto muito pelas minhas sugestões erradas. Eu poderia conectar esse httpd do meu pc sem quaisquer alterações foram feitas.
Por favor, veja o "PORTS" do sudo docker ps -a saída e docker-proxy do ss -tlp output.
Acho que espero que funcione para resolver problemas.

obrigado

    
por 16.05.2018 / 20:08
0

Que tal adicionar porta http ou https ao firewalld?

firewall-cmd --add-service=https --permanent

Acho que o jason é um aplicativo da web, portanto, o cliente se conecta ao servidor com o
protocolos http ou https.

    
por 16.05.2018 / 01:55