Problema UFW OpenVPN no Ubuntu 20.04

Problema UFW OpenVPN no Ubuntu 20.04

Tenho um problema curioso de OpenVPN/UFW no Ubuntu 20.04.

Eu tenho uma regra definida para permitir o tráfego de saída por tun0: ufw insert 1 allow out on tun0 from any to any. Os padrões do UFW são definidos para negar, tanto dentro quanto fora: ufw default deny outgoing& ufw default deny incoming.

Só consigo rotear o tráfego através do tun0 com o UFW em execução, se eu passar pela seguinte dança estranha toda vez que quiser me conectar à VPN:

  1. ufw disable(desative o UFW, como seria de esperar, para permitir que a VPN se conecte ao servidor)
  2. Conecte-se à VPN (a conexão é estabelecida com sucesso)
  3. ufw enable(reativar UFW) -Até agora, como esperado - agora espero que o tráfego seja enviado via tun0 sem problemas... mas não. Agora tenho que fazer o seguinte...
  4. Adicione uma regra para permitir todas as conexões de saída através de qualquer interface:ufw insert 1 allow out from any to any
  5. Estabeleça uma conexão em qualquer lugar - por exemplo ping 1.1.1.1.Este é o passo vital - sem o qual as conexões subsequentes através do tun0 falharão
  6. Exclua a regra IAcabou de adicionarque permite todas as conexões de saída através de qualquer interface (já que claramente não é isso que queremos - a intenção é limitar as conexões a tun0 conforme a regra existente):ufw delete 1

Agora consigo estabelecer conexões através do túnel VPN, conforme esperado. No entanto, sem as etapas 4 e 5, todas as conexões serão bloqueadas pelo UFW; Não consigo me conectar por meio do tun0 - embora haja uma regra UFW explícita definida para permitir isso.

Aqui está meu arquivo UFW user.rules (também tenho uma regra SSH):

*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-logging-deny - [0:0]
:ufw-logging-allow - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES ###

### tuple ### allow any 22 0.0.0.0/0 any 192.168.0.0/16 in
-A ufw-user-input -p tcp --dport 22 -s 192.168.0.0/16 -j ACCEPT
-A ufw-user-input -p udp --dport 22 -s 192.168.0.0/16 -j ACCEPT

### tuple ### allow any any 0.0.0.0/0 any 0.0.0.0/0 out_tun0
-A ufw-user-output -o tun0 -j ACCEPT

### tuple ### deny any any 0.0.0.0/0 any 0.0.0.0/0 out
-A ufw-user-output -j DROP

### tuple ### deny any any 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -j DROP

### END RULES ###

### LOGGING ###
-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-output -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10
-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
### END LOGGING ###

### RATE LIMITING ###
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### END RATE LIMITING ###
COMMIT

Alguma ideia de por que esse comportamento bizarro está ocorrendo?

informação relacionada