★ 들어가는 글



집에서 회사의 PC에 네트워크 드라이브를 연결하고 싶거나 회사 네트웍상에 있는 것 같은 효과를 내기 위해서는 VPN(Virtual Private Network)을 사용하면 된다. 윈도우는 VPN서버에 접속할 수 있는 기능을 기본으로 내장하고 있다. 검색을 통하면 쉽게 알 수 있다.

나도 테스트를 하기 위해 윈도우의 내장 VPN을 가지고 서버에 접속해 보았다. 하지만, 접속이 되지 않았다. 아이폰으로도 집의 와이파이 상태에서 접속해 보았으나 되지 않았다. 단, 3G 상태에서는 접속이 되었다. 이상하게 생각되어 검색을 했더니 공유기 밑에 물려있는 경우는 PPTP방식의 VPN을 통과시켜주는 기능이 없어서 접속이 되지 않을 수도 있다고 결론이 났다.

그러면 방법이 없을까? 검색 끝에 OpenVPN이 있다는 것을 발견했다. 이는 NAT환경 하에서도 거의 접속 가능하다고 되었다. 그래서 테스트삼아 윈도우에 VPN서버를 구축해 보고 접속해 보았다. 처음에는 생소하여 여러 번 실패하였다. 나중에 또 실패하지 않기 위해 포스팅으로 문서화해 놓는다.



★ 서버환경



VPN서버를 구축할 환경은 다음과 같다.

환경
  1. OS : Windows7 Professional K
  2. 메모리 : 4GB



★ OpenVPN 다운로드 및 설치



VPN을 구축하기 위해서는 이를 서비스해주는 소프트웨어가 필요하다. 다음 경로로 가서 최신 버전을 다운로드 받도록 한다.


아래와 같은 화면이 나오면 윈도우용 인스톨 버전을 다운받도록 한다. 현 시점(2012.06.10)의 최신버전은 2.2.2 였다.

윈도우용 인스톨러 버전 다운로드


다운로드 하였으면 설치를 시작한다. 설치시 특별한 것은 없고 next 를 눌러서 계속 진행하면 설치가 완료된다.



★ 서버 설정



윈도우7에서 설치를 하였을 경우 프로그램 폴더의 권한을 조정해야 한다. OpenVPN이 설치된 폴더에서 우클릭하여 속성으로 들어가 다음과 같이 Users 그룹을 클릭하고 [편집] 버튼을 클릭한다.

속성


다음과 같은 화면이 나타나면 Users그룹을 선택하고 모든권한 허용을 클릭하도록 한다. 그리고 확인을 클릭한다.

폴더 접근권한 설정


이 과정을 TrustedInstaller 그룹에게도 동일하게 해준다. 모든 권한을 주어야 한다. 그렇지 않으면 이상하게도 설정파일들을 수정하고 저장하여도 저장이 되지 않는 경우가 발생한다. 이상없이 저장되면 굳이 할 필요 없는 작업이다.


작업을 수행하였으면 프로그램이 설치된 폴더(C:\Program Files\OpenVPN) 밑의 easy-rsa 폴더로 이동한다.


1. 설정파일 초기화

설정파일들을 초기화하기 위해 다음과 같이 init-config 명령을 수행한다.

init-config.bat 실행


그리고 vars 명령을 수행한다.

vars.bat 실행


다음으로 clean-all을 실행해준다. 기존의 설정 파일을 모두 삭제하기 위해서이다. 그러면 기존 설정을 모두 삭제하고 easy-rsa폴더 밑에 keys라는 폴더를 생성하게 된다.

clean-all.bat 실행


2.  Root CA (Certificatie Authority) 생성

이 작업을 하기에 앞서 vars.bat 파일을 편집기로 열어 맨 아래로 가면 국가와 시 등을 변수로 잡는 부분이 있는데 변경하여 놓으면 앞으로 인증서를 만들 때 기본값으로 사용할 수 있어 편리하다. 해도 되고 안해도 된다.

루트 CA를 생성하기 위해 build-ca를 입력하여 실행한다. 그러면 여러가지를 물어보는데 적당히 입력하면 되고, [Common Name]은 앞으로 만들 인증서와 중복되면 안되므로 유일한 값으로 정하여 입력하여야 한다.

루트 CA 생성


3. 서버키 생성

다음, 서버키를 장성하기 위해 build-key-server server 명령을 실행한다. 역시 앞에서 입력한 것과 비슷한 것이 질문으로 나오며 [Common Name]만 다르게 해서 입력한다.

서버키 작성


4. DH Parameter 생성

다음가 같이 build-dh를 실행하면 keys 폴더 밑에 dh1024.pem 파일이 생성된다.

DH Parameter 생성


5. ta키 생성

keys 폴더로 이동하여 openvpn --genkey --secret ta.key 를 수행한다. 그러면 ta.key 파일이 생성된다.

ta키 생성


6. 인증서 및 키파일 복사

c:\Program Files\OpenVPN\config 폴더에 다음 파일을 복사한다.

    • ca.crt
    • ca.key
    • dh1024.pem
    • ta.key
    • server.crt
    • server.key


7. 서버 config파일 설정

1) c:\Program Files\OpenVPN\sample-config 폴더에서 server.ovpn 파일을 c:\Program Files\OpenVPN\config 폴더로 복사한다.

2) 복사한 server.ovpn 파일을 편집기로 열어서 다음 항목을 찾아(Ctrl+F) 필요한 값을 변경한다.
    - port : VPN서비스를 위한 포트
    - proto : TCP 또는 UDP를 선택
    - tls-auth ta.key 0 : 맨 앞의 세미콜론을 제거
    - cipher BF-CBC : 맨 앞의 세미콜론을 제거

8. 서버의 실행

 c:\Program Files\OpenVPN\config 폴더에서 openvpn server.ovpn을 입력하여 서버를 실행한다. 그리고 특별한 에러메세지가 나오지 않는지 확인한다. 만약 윈도우7에서 메세지 중 권한상승 어쩌구 메세지가 보이면, 커맨드 창을 관리자 권한으로 실행하여 다시한번 수행해 보길 바란다.

이상이 없다면 커맨드 창을 종료해도 된다. VPN서버는 윈도우의 서비스로 등록되어 있으니 그 항목을 시작하면 VPN서버는 시작되게 된다. 제어판 > 관리도구 > 서비스를 클릭하면 "OpenVPN Service" 이라는 이름으로 서비스가 등록되어 있을 것이다. 시작유형을 '자동'으로 변경하면 부팅시 시작된다.

서비스로 등록된 OpenVPN


★ 클라이언트 설정



서버측 설정이 끝났으면, 클라이언트에서 사용할수 있도록 환경을 구성하여야 한다. 서버에 설치한 동일한 파일을 클라이언트 PC에 설치한다. 그리고 서버에서 생성한 클라이언트 인증서 및 키를 복사해 넣어야 한다.


1. 서버에서 클라이언트 인증서 및 키 생성

서버의 easy-rsa 폴어에서 build-key client1 라는 명령을 수행한다. 접속하는 클라이언트의 수 만큼 이 작업을 해주면 복수의 인증서 및 키가 생성되므로 각각의 클라이언트에 사용된다. 위에서 본 것과 같이 동일한 사항을 묻는데, Common Name만 다르게 해서 생성해 주면 무리없이 진행된다.

클라이언트 인증서 및 키 생성


2. 인증서 및 키파일 복사

생성된 인증서 및 키 파일을 클라이언트의 config 폴더에 복사한다. 파일 목록은 다음과 같다.

  • ca.crt
  • ca.key
  • client1.key
  • client1.crt
  • ta.key


3. 클라이언트 config파일 설정

1) 클라이언트의 c:\Program Files\OpenVPN\sample-config 폴더에서 client.ovpn 파일을 config 폴더로 복사한다.

2) 나중에 혹시 있을지 모르는 복수의 접속을 위해 client1.ovpn 으로 파일명을 변경해 준다.

3) 복사한 client1.ovpn 파일을 편집기로 열어서 다음 항목을 찾아(Ctrl+F) 필요한 값을 변경한다.
    - proto : TCP 또는 UDP를 선택(서버의 설정에 맞춘다)
    - remote : 서버의 IP. 형식은 [IP Port] 의 형식임(콜론이 없음에 주의).
    - cert : 인증서 파일. client1.crt로 변경
    - key : 키 파일. client1.key로 변경
    - tls-auth ta.key 0 : 맨 앞의 세미콜론을 제거
    - cipher : 맨 앞의 세미콜론을 제거하고  BF-CBC 로 맞춰줌



★ 접속



1. 서버에 접속

모든 작업을 했다면 서버에 접속해본다. 클라이언트의 config폴더에서 openvpn client1.ovpn를 실행하면 주르르륵~ 문자열과 함께 연결되었다는 것을 볼 수 있다. 이를 보다 쉽게 하려면 OpenVPN GUI를 실행하여 우측 하단의 트레이에서 'Connect'를 클릭하면 바로 연결된다. 이상이 없으면 녹색 불이 켜진다.

서버는 기본 설정으로 하였으므로 IP가 10.8.0.1로 잡힌다. 핑테스트를 하면 가능할 것이다(윈도우 방화벽에서 열어놨으면).


2. 사용

서버에 VPN으로 접속이 되었으면, 공유폴더를 잡아놓고 집에서 네트워크 드라이브처럼 접속하여 사용할 수 있다. 물론 윈도우 방화벽에서 적절히 해당 기능을 풀어주어야 가능하다. 이는 검색을 이용해서 해보도록 한다.


참고 사이트는 다음과 같다. 좋은 포스팅 해주신 분들께 감사드린다.







저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Life 스토리
TAG ,


티스토리 툴바