strongswan 클라이언트 설정

strongswan 클라이언트 설치구성

  • 안드로이드 및 윈도우 pc에 ikev2 클라이언트 설치
  • 클라이언트 인증은 pubkey 및 eap-tle 방식
  • OpenWrt에서 strongswan을 이용한 vpn 서버 설치/설정은 다음을 참고하세요.

안드로이드 클라이언트 설정

앱스토어에서 strongswan 을 다운받아 설치 후 인증서 생성시 생성한 /etc/ipsec.d/cacert/cacrt.pem 화일과 /etc/ipsec.d/p12/[email protected] 화일을 scp로 다운받아 핸드폰에 옮기고 설정에서 인증서를 설치합니다. 아래는 안드로이드 폰에 설치 완료한 모습입니다.

android strongswan

윈도우 클라이언트 설정

인증서 설치

1. winkey + R 을 눌러 실행창을 띄우고 mmc 입력후 enter > 콘솔(mmc) 실행합니다.

2. 메뉴 > 파일 > 스냅인 추가/제거(ctrl+m)

3. 사용가능한 스냅인 > "인증서"를 선택한 후 > 추가

4. 컴퓨터 계정 선택 > 다음

mmc2

5. 로컬컴퓨터 선택 > 마침 > 확인

mmc3

6. 그러면 아래 왼쪽창 콘솔루트 밑에 인증서(로컬 컴퓨터)가 보입니다.

7. 오른쪽 창에서 개인용 선택 후

mmc4

8. 메뉴 > 동작 > 모든작업 > 가져오기 : 인증서 가져오기 마법사 실행 > 다음

mmc5

9. 찾아보기 버튼 눌러서 다운받은 경로의 [email protected] 을 선택 > 다음

mmc6

10. 암호 입력란은 .p12 생성시 입력한 암호를 기입합니다 > 다음

mmc7

11. 가져오기 완료되면 오른쪽 화면에 [email protected] 인증서와 Root CA가 보입니다.

mmc8

12. Root CA를 드래그 앤 드롭으로 신뢰할 수 있는 루트인증기관의 인증서로 옮깁니다.

mmc9

13. root CA가 신뢰할 수 있는 루트인증기관의 옮겨진 모습입니다.

mmc10

14. 지금까지 컴퓨터 계정에 인증서를 설치했습니다. 같은방법으로 4번 그림에 보이는 내사용자 계정에도 같은 인증서를 설치합니다.

15. 인증서 설치가 완료되었습니다.

16. 콘솔 메뉴 > 메뉴 > 저장 > 적당한 이름으로 저장합니다.

VPN 추가

  1. 설정 > 네트워크 및 인터넷 > VPN > VPN연결 추가
  • 연결이름 : myhost.duckdns.org
  • 서버이름 또는 주소 : myhost.duckdns.org
  • 서버이름 또는 주소 : myhost.duckdns.org
  • vpn종류 : ikev2
  • 로그인 정보입력 : 인증서
vpnadd

2. 저장

3. 설정 > 네트워크 및 인터넷 > 상태 > 네트워크설정변경 > 어댑터 옵션 변경

4. 해당 어댑터의 속성 변경

networkadapter

5. 네트워크탭 이동 > ipv6 해제

property5.jpg

6. 보안탭 이동

  • vpn 종류 : ikev2
  • 데이터암호화 : 최대 강도 암호화
  • 인증 : 스마트 카드 또는 기타 인증서(암호화 사용)

7. 속성 클릭

property6

8. 인증서 및 서버를 설정합니다.

  • 연결할때 : 내 스마트카드 사용
  • 인증서를 확인하여 서버의 id 확인 : check
  • 다음서버에 연결 : check > ${IPADDR};${SRVNAME} 형태로 입력 (myhost.duckdns.org;OpenWrt)
  • 신뢰할 수 있는 루트 인증기관 : 설치한 root CA인증서 선택 check
property3

9. 고급탭 클릭

  • 인증서 선택구성 : 선택한 root CA인증서 선택 check
  • EKU(확장키 사용) : check
  • 클라이언트 인증 : check
property4

10. 확인하고 저장한 후 vpn을 연결합니다.

11. 만약 vpn 연결시 정책일치 오류가 발생한다면 레지스트리를 편집합니다.

기본적으로 windows vpn 클라이언트는 AES-128-CBC, AES-192-CBC, AES-256-CBC, 3DES, SHA-1, SHA-256, SHA-384 및 MODP-1024 만 제공한다고 합니다. windows 10 특정버전 이후 부터 개선이 됬다고 들은것 같긴한데... 다음 레지스트리 키를 DWORD 키로 만들고 설정하여 AES-256-CBC 및 MODP2048에 대한 지원을 활성화(value 1), 비활성화(vlaue 0) 또는 강제적용(vlaue 2) 할 수 있습니다.

  • path : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters\
  • key : NegotiateDH2048_AES256
  • type : dword
  • value : 1

또한 필요한 경우 windows 10 이상 버전에서 powershell을 이용해서 AES-GCM이나 ECP 같은 더 많은 알고리즘을 사용할 수 있습니다. <참고>

분할 터널링(split tunneling)

위 설정을 마치고 vpn 서버에 접속한 후 인터넷으로 나의 ip를 확인해 보면 VPN 서버의 ip가 아니고 접속한 client측 ip로 확인됩니다. 이유는 split tunneling이 적용된 상태이기 때문인데 split tunneling을 적용하면 인터넷을 사용할 때는 터널링을 적용하지 않고 바로 인터넷으로 연결되도록 할 수 있기 때문에 인터넷 속도가 빨라집니다. 반대로 split tunneling을 적용하지 않으면 모든 트래픽이 VPN 서버와 연결된 터널링으로 송수신해야 되므로 사용자들은 인터넷에 접속할 때도 VPN서버을 경유해야 합니다. 이런 경우 VPN을 통해 모든 데이터를 전송하게 되어 대역폭 소모가 많아 지고 그에따라 접속 속도는 늦어지게 됩니다.

1. 분할 터널링(split tunneling) 해제 및 설정 (방법1)

Win+X, A키로 powershell을 관리자 권한으로 열고 get-vpnconnection 명령으로 VPNNAME을 확인후 set-vpnconnection 명령으로 split tunneling을 설정 또는 해제($true, $false) 할 수 있습니다.

split tunneling을 해제하는 방법은 다음과 같습니다.

get-vpnconnection
set-vpnconnection -name VPNNAME -splittunneling $false

2. 분할 터널링(split tunneling) 해제 및 설정 (방법2)

설정 > 네트워크 및 인터넷 > 상태 > 네트워크설정변경 > 어댑터 옵션 변경

networkadapter

4 thoughts on “strongswan 클라이언트 설정”

  1. 좋은 정보 감사합니다! ^^;
    혹시 Windows Client 설정 시 Strongswan UDP 500, 4500 포트를 변경하는 방법이 없을까요? ^^;
    제가 중국에 있는데, 한국 부모님 댁에 Ubuntu server에 Strongswan 서버 설정하여 잘 쓰고 있다가
    몇 달전부터 안되길래 확인해 보니 중국 정부에서 UDP 500, 4500을 막는 것 같습니다.
    그래서 인터넷을 뒤지고 뒤져서 Strongswan Server단에서 UDP port를 변경하는 방법을 알게 되었고, 실제로 잘 됩니다.
    안드로이드 Strongswan Client 접속 APP에는 UDP port 변경 메뉴가 있으니까 잘 됩니다!
    문제는 Windows 접속 Client 설정시에 UDP port를 변경하는 방법을 못 찾겠네요 ㅠ
    Windows IKEv2 접속 UDP port는 500, 4500으로 고정되어 있다는 글들만 있을 뿐..

    혹시 Windows 접속 설정 때 원하는 UDP port로 설정하는 방법이 있을까요?

    다시 한 번 좋은 정보 공유 감사드립니다! ^^;

    응답
    • 안녕하세요.
      저도 모르는 정보여서 여기저기 검색을 통해 찾아봤는데
      윈도 자체 vpn기능에는 포트변경할 수 있는 기능이 없고
      레지스트리에 의한 방법이든 뭐든 저 또한 포트를 변경할 수 없다는 글들만 검색됩니다.
      이런경우 하드코딩되어 있다는 말인데 그러면 포트변경이 불가하겠죠

      다른 방법으로는 윈도 클라이언트측 라우터에서 in/out에 대해 포트포워딩을 해보시거나
      site2site로 구성해서 연결해 보면 어떨까 합니다.
      포트포워딩이나 site2site는 관련글 참고해 보시고 혹시 잘 안되거나 막히는 부분이 있으면 댓글주세요.

      응답
      • 답변 감사드립니다! ^^;
        Windows client 쪽 라우터에서 Port forwarding을 해보란 말씀을 보고~
        순간 번쩍~ 했지요.. ㅎ
        생각을 해보면 이론상 될 듯합니다.
        저는 Server단에서 UDP 500은 8080으로, 4500은 8081로 변경했거든요
        그래서... 제가 쓰고 있는 가정용 공유기(라우터) 메뉴에서 외부 UDP 8080은 Windows PC(내부 특정 IP)의 UDP 500으로,
        8081은 4500으로 forwarding하면 될 것 같아서 잔뜩 기대를 하면서 해봤더니..
        역시나 안됩니다. 안되는 이유를 모르겠네요.. ㅠ

        혹시 가정용 공유기(라우터)의 포트 포워딩 기능이 외부 포트(8080)-> 내부(500)로만 적용되고,
        그 반대로는 적용이 안되어서 그런지? ㅠ
        제가 알기론 내부(500) -> 외부(8080)도 포워딩이 되어야 할 것 같은데요..
        아니면 라우터말고 윈도우에서 추가로 설정을 해줘야 하는게 있을까요? ^^;

        어떤 글을 읽어보니
        https://surfshark.com/ko/blog/vpn-port-forwarding

        VPN에서 포트 포워딩을 하려면 윈도우 powershell에서 특정 명령어를 입력하라고 하는데..
        딱히 상관있어 보이지도 않고..
        괜히 이거 잘못 입력했다가.. 원상복귀 안되면 윈도우를 새로 깔아야 할 것 같아서..
        못하고 있습니다. ㅠ

        site2site 방식은 저에겐 너무 어려워보이고요 ㅠ
        게다가 저는 1대의 VPN서버를 통해 다수의 PC나 휴대폰으로 접속을 해야 해서 ㅠ
        말씀하신대로 윈도우 Client쪽 라우터의 포트 포워딩을 통해 UDP포트 변경하여 접속할 수 있는 방법이 있으면 꼭 배우고 싶습니다!

        혹시 참고할만한 글이나 Site가 있을까요?

        다시 한번 감사드립니다! ^^;

        응답
        • 안녕하세요.
          말씀하신대로 내부/외부에 대한 포트포워딩을 해줘야 하는데 openwrt는 가능하지만
          openwrt환경이 아니시라면 (제가 알기로는 대부분의 공유기는 외부>내부만 포트포워딩 할 수 있는것으로 알고 있습니다.)

          외부>내부 포트포워딩은 공유기가 담당하고
          내부>외부는 윈도우 방화벽으로 아웃바운드 규칙을 추가(사용자지정) 하면 되지 않을까 싶은데요.
          (윈도우 방화벽을 많이 사용해보지 않아 자세한 방법은 알려드릴 수 없어요^^)

          응답

Leave a Comment