본문 바로가기

Linux/Ubuntu

OpenVPN 사용하기

클라이언트 키 생성하기

회사의 OpenVPN 서버(192.168.0.98)의 /usr/share/openvpn/easy-rsa/2.0/ 로 가서 아래를 실행 (root 로그온 필요함)

$> . vars
$> ./build-req <user_ID> --> 키 생성
$> ./sign-req <user_ID> --> 키에 대하여 서명

위를 실행하면 ./keys 에 user_ID.key와 user_ID.crt 가 생성되며, 이 두 키와 ca.crt를 함께 클라이언트 configuration 디렉토리로 옮겨서 사용한다.

 - build-req 실행 예
-----------------------------------------------------------------------------------
$> ./build-req client
Country Name (2 letter code) [KO]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [SEOUL]:
Organization Name (eg, company) [VPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:client-test
Email Address [vpn-admin@vpn-test.com]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Windows OpenVPN Client

다운로드 및 설치

http://openvpn.se/download.html 에 들어 가서 openvpn-2.0.9-gui-1.0.3-install.exe를 다운 받아 설치합니다.

관리자로 부터 인증키 받기

서버 관리자로부터 {$client_ID}.crt, {$client_ID}.key, ca.crt를 받습니다. {$client_ID}.crt/.key 은 짝이며 사용자마다 발급될 수 있고 ca.crt(압축해제)는 공용입니다.

client.ovpn 설정

클라이언트를 설치하면 C:\Program Files\OpenVPN\ 폴더가 생성됩니다. 이 최상위 폴더에 config라는 하위 폴더가 있습니다. 이곳에 관리자로 부터 받은 인증키를 옮겨놓고 client.ovpn 파일을 sample-config 폴더로부터 가져와 간단하게 편집해줍니다. windows 용 설정 파일의 확장자는 .ovpn을 사용하며 리눅스는 .conf 사용합니다. 파일을 열어서 아래의 항목만 변경해주면 연결이 가능합니다.

remote 123.142.29.86 1194
ca ca.crt
cert client.crt
key client.key

remote는 접속하고자 하는 서버의 ip와 포트 번호를 설정합니다. 외부에서 회사 서버에 접속하고자 할 때 위의 고정 아이피로 접속하면 됩니다. 이 아이피는 회사의 방화벽 주소이며 1194 포트로 들어오는 패킷을 회사 서버로 포워딩하도록 설정되어있습니다. 나머지 세 개의 항목은 발급 받은 인증키 이름에 맞게 고쳐주면 됩니다.

OpenVPN GUI 실행

윈도우즈 시작 매뉴로 가서 OpenVPN GUI를 실행합니다. 일단 실행을 해서 성공하면 서버로부터 가상 ip를 할당받게 됩니다. ping 10.8.0.1 로 테스트를 해서 제대로 결과를 받으면 성공입니다. 10.8.0.1은 서버의 가상 ip입니다. 이 가상 주소를 이용해 회사 밖에서도 subversion 서버에 접속할 수 있습니다.


Windows Vista 문제

비스타에서는 connection이 된 상태로 나오지만 정상 동작 하지 않는 경우가 있었습니다. 아래와 같이 시도해 보세요.

  • config 폴더의 설정 파일(*.ovpn) 맨 아래 부분에 아래 2줄을 추가 합니다
route-method exe
route-delay 2
  • 설정 파일을 변경하였는데도 정상 연결이 안될 경우, 프로그램을 모두 내립니다. 그리고 아래와 같이 실행 시킵니다.
bin폴더의 “tapinstall.exe”를 관리자 권한으로 실행 시킵니다.
bin폴더의 “openvpn-gui.exe”를 관리자 권한으로 실행 시킵니다.

Linux OpenVPN 클라이언트

OpenVPN 설치

Linux용 OpenVPN은 서버와 클라이언트가 통합되어있습니다. OpenVPN 사이트( http://openvpn.net/download.html )에 가서 소스 tarball을 다운받습니다. 소스를 컴파일하는 방법 외에 RPM과 YUM등으로도 다운과 설치가 가능합니다.

    tar xfz openvpn-[version].tar.gz
cd openvpn-[version]
./configure --prefix=/usr/local/openvpn
make
make install

관리자로부터 인증키 받기

Windows 클라이언트에서와 마찬가지로 관리자로부터 인증키({$client_name}.crt, {$client_name}.key, ca.crt(압축해제))를 발급 받습니다. 인증키를 받아서 client 설정을 보관할 적당한 디렉토리를 옮깁니다. 예를들어 "/home/user_name/openvpn_client"를 생성합니다.

client.conf 설정

/usr/share/doc/openvpn-[version]/sample-config-files 에 가서 예제 설정 파일 client.conf를 가져다가 앞에서 생성한 설정 디렉토리로 옮기고 편집합니다. 변경할 내용은 Windows 클라이언트와 동일합니다.

remote 123.142.29.86 1194
ca ca.crt
cert client.crt
key client.key

클라이언트 실행

아래와 같이 터미널에서 클라이언트를 실행합니다.

# sudo openvpn --config /home/user-name/openvpn_client/client.conf
위와 같이했는데도 안된다면, 직접 해당 폴더에 가서 다음과 같이 실행하도록 하자.
home/user-name/openvpn_client$openvpn client.conf

ping 10.8.0.1 로 테스트를 해서 제대로 결과를 받으면 성공입니다. 10.8.0.1은 서버의 가상 ip입니다. 이 가상 주소를 이용해 회사 밖에서도 subversion 서버에 접속할 수 있습니다.

NetworkManager를 이용하여 접속

  • NetworkManager를 이용하여 VPN접속 하는 방법 설명
그림:NetworkManagerVPN 00.jpg
VPN탭에서 Add버튼을 선택한다.

그림:NetworkManagerVPN 01.jpg

Gateway주소를 123.142.29.86으로 설정하고 User Certificate에는 *.crt, CA Certificate ca.crt Private Key *.key를 설정한다.그리고 Advanced버튼을 선택한다.

그림:NetworkManagerVPN 02.jpg

USE LZO Data compression을 선택한다.

그림:NetworkManagerVPN 03.jpg

그림:NetworkManagerVPN 04.jpg

IPV4 Settings에서 Routes를 선택한다.

그림:NetworkManagerVPN 05.jpg

현재 물리적으로 연결되어 있는 IP와 Gateway주소를 추가해주고 사용하면 된다.

Hosts 의 변경

  • 외근이 잦은 경우 98서버의 주소를 직접 사용하지 않고 hosts를 수정하고 접속시 hosts에 등록한 이름으로 접속하면 된다.
  • 리눅스
 /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.98 src-svr
#10.8.0.1 src-svr
  • Windows
C:\Windows\System32\drivers\etc\hosts
# Copyright (c) 1993-2006 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

127.0.0.1 localhost
::1 localhost
192.168.0.98 src-svr
#10.8.0.1 src-svr

'Linux > Ubuntu' 카테고리의 다른 글

리눅스용 파일 비교 GUI  (0) 2009.04.07
vim explorer plug-in  (0) 2009.04.03
무선랜 설정  (0) 2009.03.11
gstreamer  (0) 2009.02.27
TFTP 서버 사용  (0) 2009.02.26