Ubuntu 20.04의 UFW OpenVPN 문제

Ubuntu 20.04의 UFW OpenVPN 문제

Ubuntu 20.04에서 궁금한 OpenVPN/UFW 문제가 있습니다.

tun0: 을 통해 나가는 트래픽을 허용하도록 설정된 규칙이 있습니다 ufw insert 1 allow out on tun0 from any to any. UFW 기본값은 in & out 모두 거부로 설정되어 있습니다: ufw default deny outgoing& ufw default deny incoming.

VPN에 연결하려고 할 때마다 다음과 같은 이상한 동작을 수행하면 UFW가 실행 중인 tun0을 통해서만 트래픽을 라우팅할 수 있습니다.

  1. ufw disable(예상대로 UFW를 비활성화하여 VPN이 서버에 연결되도록 허용)
  2. VPN에 연결(연결이 성공적으로 설정됨)
  3. ufw enable(UFW를 다시 활성화) -지금까지는 예상대로 트래픽이 tun0을 통해 아무런 문제 없이 전송될 것으로 기대합니다. 하지만 그렇지 않습니다. 이제 다음을 수행해야 합니다...
  4. 모든 인터페이스를 통해 나가는 모든 연결을 허용하는 규칙을 추가합니다.ufw insert 1 allow out from any to any
  5. 어디서나 연결을 설정하세요 - 예 ping 1.1.1.1.이는 중요한 단계입니다. 이 단계가 없으면 tun0을 통한 후속 연결이 실패합니다.
  6. 규칙 삭제 I방금 추가됨모든 인터페이스를 통해 나가는 모든 연결을 허용합니다(분명히 우리가 원하는 것은 아니기 때문에 기존 규칙에 따라 tun0에 대한 연결을 제한하려는 의도입니다).ufw delete 1

이제 예상대로 VPN 터널을 통해 연결을 설정할 수 있습니다. 그러나 4, 5단계가 없으면 모든 연결이 UFW에 의해 차단됩니다. tun0을 통해 연결할 수 없습니다 - 이를 허용하도록 명시적인 UFW 규칙이 설정되어 있음에도 불구하고.

여기 내 UFW user.rules 파일이 있습니다(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

이 기괴한 행동이 왜 발생하는지 아시나요?

관련 정보