networkmanager-strongswan VPN - IKEv2 라우팅 문제

networkmanager-strongswan VPN - IKEv2 라우팅 문제

현재까지 내 회사에 대한 VPN 연결은 networkmanager-strongswan을 사용하여 기본적으로 작동합니다.

하지만 현재(커널 5.8.0-38이 설치된 Linux Mint 20.1) VPN 호스트에 연결할 수 있지만 원격 서비스(웹, git, rdp...)에는 액세스할 수 없습니다. 원격 IP에 대한 핑(Ping)도 작동하지 않습니다.

나는 인터넷에서 많은 기사와 튜토리얼을 읽고 어리석은 일을 많이 시도했지만 문제를 해결할 수 없었습니다. 그래서 지금 도움을 요청하는 것입니다.

작동하는 유일한 방법은 Charon-cmd를 다음과 같이 사용하는 것입니다.

sudo charon-cmd --cert <path_to_cert> --host <host_ip> --identity <identity>

그러나 저는 NetworkManager를 GUI 방법으로 연결/연결 해제하는 것을 좋아하고 이 솔루션을 사용하면 LAN 서비스에 대한 액세스가 손실되기 때문에 이 솔루션을 해결 방법으로 생각합니다.

저는 네트워크 구성에 능숙하지 않지만 charon-cmd는 라우팅 기반 연결을 정의하고 ipsec 및 networkmanager는 정책을 사용하므로 라우팅 문제일 수 있다는 것을 알고 있습니다. 또한 Charon-cmd는 ipsec이나 networkmanager가 사용하지 않는 ipsec0 장치를 사용한다는 사실도 확인했습니다.

Network Manager를 사용하여 VPN에 연결할 때 추가되는 정책은 다음과 같습니다.

src 10.x.x.x/32 dst 0.0.0.0/0 
    dir out priority 383615 
    tmpl src 192.168.1.55 dst <host_ip>
        proto esp spi 0xc4ec728f reqid 14 mode tunnel
src 0.0.0.0/0 dst 10.x.x.x/32 
    dir fwd priority 383615 
    tmpl src <host_ip> dst 192.168.1.55
        proto esp reqid 14 mode tunnel
src 0.0.0.0/0 dst 10.x.x.x/32 
    dir in priority 383615 
    tmpl src <host_ip> dst 192.168.1.55
        proto esp reqid 14 mode tunnel

이것은 iptable-save 출력입니다:

*mangle
:PREROUTING ACCEPT [58835:28708461]
:INPUT ACCEPT [58835:28708461]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [55809:6989866]
:POSTROUTING ACCEPT [55985:7014824]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
*nat
:PREROUTING ACCEPT [306:39378]
:INPUT ACCEPT [5:2408]
:OUTPUT ACCEPT [1193:105475]
:POSTROUTING ACCEPT [1119:99608]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 192.168.122.0/24 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [12:1454]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8:916]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWX - [0:0]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
-A INPUT -j LIBVIRT_INP
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j LIBVIRT_FWX
-A FORWARD -j LIBVIRT_FWI
-A FORWARD -j LIBVIRT_FWO
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j LIBVIRT_OUT
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ACCEPT
COMMIT

감사해요!


편집하다:

VPN 없이 라우팅(표 220)

192.168.1.0/24 dev enp3s0 proto static src 192.168.1.55 
192.168.122.0/24 dev virbr0 proto static src 192.168.122.1 linkdown

NetworkManager를 통해 VPN을 사용한 라우팅(표 220)

default via 192.168.1.1 dev enp3s0 proto static src 10.x.x.x 
192.168.1.0/24 dev enp3s0 proto static src 192.168.1.55 
192.168.122.0/24 dev virbr0 proto static src 192.168.122.1 linkdown

Charon-cmd를 통해 VPN을 사용하는 경로(표 220)

default dev ipsec0 proto static src 10.x.x.x 
<host_ip> via 192.168.1.1 dev enp3s0 proto static src 192.168.1.55 
192.168.1.0/24 dev ipsec0 proto static src 192.168.1.55 
192.168.122.0/24 dev ipsec0 proto static src 192.168.122.1 

참고: charon-cmd는 ipsec0 장치를 정의하는 반면 NetworkManager는 가상 IP 주소만 생성합니다.

답변1

드디어 우연히 문제를 해결했습니다! :)

이번 주말에 집을 비워서 @ecdsa가 제안한 대로 통계를 보려고 합니다(감사합니다!). NM을 사용하여 VPN에 연결하면 작동하는 것 같습니다. 내 문제는 구성 문제가 아니라 ISP 문제라는 결론을 내렸습니다.

검색을 몇 번 해보니 내 프랑스 ISP "무료"가 IP v4를 4명의 고객과 공유하고 있다는 사실을 알게 되었습니다(포트 범위를 4개의 하위 범위로 분할). 해결책은 내 IPS에 "풀 스택 ipv4"를 제공하도록 요청하는 것이었습니다.

원천:

검색 엔진용 프랑스어 키워드:
연결 문제VPN IKEv2 Strongswan avec Network Manager - 무료 freebox

관련 정보