strongswan 클라이언트 설치구성
- 안드로이드 및 윈도우 pc에 ikev2 클라이언트 설치
- 클라이언트 인증은 pubkey 및 eap-tle 방식
- OpenWrt에서 strongswan을 이용한 vpn 서버 설치/설정은 다음을 참고하세요.
안드로이드 클라이언트 설정
앱스토어에서 strongswan 을 다운받아 설치 후 인증서 생성시 생성한 /etc/ipsec.d/cacert/cacrt.pem 화일과 /etc/ipsec.d/p12/[email protected] 화일을 scp로 다운받아 핸드폰에 옮기고 설정에서 인증서를 설치합니다. 아래는 안드로이드 폰에 설치 완료한 모습입니다.

윈도우 클라이언트 설정
인증서 설치
1. winkey + R 을 눌러 실행창을 띄우고 mmc 입력후 enter > 콘솔(mmc) 실행합니다.
2. 메뉴 > 파일 > 스냅인 추가/제거(ctrl+m)
3. 사용가능한 스냅인 > "인증서"를 선택한 후 > 추가

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

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

6. 그러면 아래 왼쪽창 콘솔루트 밑에 인증서(로컬 컴퓨터)가 보입니다.
7. 오른쪽 창에서 개인용 선택 후

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

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

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

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

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

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

14. 지금까지 컴퓨터 계정에 인증서를 설치했습니다. 같은방법으로 4번 그림에 보이는 내사용자 계정에도 같은 인증서를 설치합니다.
15. 인증서 설치가 완료되었습니다.
16. 콘솔 메뉴 > 메뉴 > 저장 > 적당한 이름으로 저장합니다.
VPN 추가
- 설정 > 네트워크 및 인터넷 > VPN > VPN연결 추가
- 연결이름 : myhost.duckdns.org
- 서버이름 또는 주소 : myhost.duckdns.org
- 서버이름 또는 주소 : myhost.duckdns.org
- vpn종류 : ikev2
- 로그인 정보입력 : 인증서

2. 저장
3. 설정 > 네트워크 및 인터넷 > 상태 > 네트워크설정변경 > 어댑터 옵션 변경
4. 해당 어댑터의 속성 변경

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

6. 보안탭 이동
- vpn 종류 : ikev2
- 데이터암호화 : 최대 강도 암호화
- 인증 : 스마트 카드 또는 기타 인증서(암호화 사용)
7. 속성 클릭

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

9. 고급탭 클릭
- 인증서 선택구성 : 선택한 root CA인증서 선택 check
- EKU(확장키 사용) : check
- 클라이언트 인증 : check

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)
설정 > 네트워크 및 인터넷 > 상태 > 네트워크설정변경 > 어댑터 옵션 변경



