
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을 통해서만 트래픽을 라우팅할 수 있습니다.
ufw disable
(예상대로 UFW를 비활성화하여 VPN이 서버에 연결되도록 허용)- VPN에 연결(연결이 성공적으로 설정됨)
ufw enable
(UFW를 다시 활성화) -지금까지는 예상대로 트래픽이 tun0을 통해 아무런 문제 없이 전송될 것으로 기대합니다. 하지만 그렇지 않습니다. 이제 다음을 수행해야 합니다...- 모든 인터페이스를 통해 나가는 모든 연결을 허용하는 규칙을 추가합니다.
ufw insert 1 allow out from any to any
- 어디서나 연결을 설정하세요 - 예
ping 1.1.1.1
.이는 중요한 단계입니다. 이 단계가 없으면 tun0을 통한 후속 연결이 실패합니다. - 규칙 삭제 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
이 기괴한 행동이 왜 발생하는지 아시나요?