Encaminhamento do Firewalld entre zonas que não funcionam

1

Eu tenho um hipervisor centos 7 kvm executando várias VMs que estão configuradas para usar a rede NAT.

Essas VMs executam seus serviços, dos quais o ssh é o mais importante para fins de administração. Eu gostaria de atribuir portas no hipervisor que são encaminhadas para as VMs usando o firewalld.

Meu hipervisor tem as seguintes interfaces:

3: wlp8s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 94:0c:6d:c4:b8:12 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.30/24 brd 192.168.1.255 scope global dynamic wlp8s1
       valid_lft 2627sec preferred_lft 2627sec
    inet6 2a02:a03f:268e:3e00:960c:6dff:fec4:b812/64 scope global noprefixroute dynamic
       valid_lft 345640sec preferred_lft 345640sec
    inet6 fe80::960c:6dff:fec4:b812/64 scope link
       valid_lft forever preferred_lft forever
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 52:54:00:64:af:d6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

wlp8s1 é minha interface sem fio conectada à minha rede doméstica, virbr0 é a interface de rede interna kvms.

O encaminhamento de IPV4 está ativado:

firewall-cmd --zone=external --add-forward-port=port=2022:proto=tcp:toport=22:toaddr=192.168.122.13

Estou usando duas zonas: external e dmz :

dmz
  interfaces: virbr0
external
  interfaces: wlp8s1

Uma das VMs é um servidor de banco de dados com a seguinte configuração de rede:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:df:79:1e brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.13/24 brd 192.168.122.255 scope global dynamic eth0
       valid_lft 2634sec preferred_lft 2634sec
    inet6 fe80::5054:ff:fedf:791e/64 scope link
       valid_lft forever preferred_lft forever

e está executando sshd ouvindo na porta 22:

# systemctl status sshd
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2016-05-22 20:08:45 CEST; 45min ago
...

# ss -ntl
State       Recv-Q Send-Q              Local Address:Port                             Peer Address:Port
LISTEN      0      128                             *:22                                          *:*
LISTEN      0      128                            :::22                                         :::*

Então eu tentei seguir o tutorial e a documentação oficial, o que me levou à seguinte cadeia de comandos (no hipervisor):

# firewall-cmd --zone=external --add-port=2022/tcp
success
# firewall-cmd --zone=external --add-forward-port=port=2022:proto=tcp:toport=22:toaddr=192.168.122.13
success

mas infelizmente (do meu laptop conectado à minha rede doméstica):

$ ssh 192.168.1.30 -p 2022
ssh: connect to host 192.168.1.30 port 2022: Connection refused

Coisas que testei:

O Tcp despeja ao emitir ssh 192.168.1.30 -p 2022 no meu laptop:

No hipervisor:

# tcpdump -i wlp8s1 port 2022
21:02:50.661181 IP laptop.38052 > hypervisor.down: Flags [S], seq 885834855, win 29200, options [mss 1460,sackOK,TS val 4732781 ecr 0,nop,wscale 7], length 0

Na vm, nenhum pacote é recebido

Eu posso ssh do hipervisor para a VM

Se eu alterar o comando forward do firewalld para:

firewall-cmd --zone=external --add-forward-port=port=2022:proto=tcp:toport=22:toaddr=192.168.1.30

Eu posso ssh no hipervisor usando sua porta 2022. Isso pode significar que tem algo a ver com as zonas?

Qualquer ajuda ou coisas extras que eu pudesse testar seriam muito apreciadas! Obrigado!

P.S.

Eu encontrei essa pergunta semelhante indicando que o firewalld foi quebrado: Fedora 21 Port Forwarding com firewalld (firewall-cmd); Como isso realmente funciona? Ou então?

mas estou esperando encontrar uma solução aqui, dada a informação extra que esperamos ter fornecido:).

    
por Gargamel 22.05.2016 / 21:12

1 resposta

0

Você pode querer verificar algumas configurações, Você ativou o encaminhamento de ip no kernel e.x. net.ipv4.ip_forward = 1 = > /etc/sysctl.conf? Também pode ser necessário executar um comando como este para ativar o mascaramento: firewall-cmd --zone = external --add-masquerade.

    
por 28.12.2016 / 12:14