1. 개요
얼마 전에 누가 OpenVPN을 사용해 보라고 해서, 셋팅을 해서 사용해 해본 결과 쓸만 하고 또
GPL 라이센스라 무료로 사용할 수 있고 한번도 뚤리적이 없을 정도로 안전하다고 합니다.
사용법도 간단하여 원격 작업을 위한 터널을 만들어도 좋을 것 같아 여러분들과 공유 하고 싶어
간단하게 사용법을 정리 하였습니다.
원론적인 것 보다 실제로 사용 하는데 필요한 부분만 간단하게 정리 하였구요, 많이 활용하시기
바랍니다.
OpenVPN 사이트 ( http://openvpn.net )
2. 설치
1) FreeBSD
- 커널 빌드 할때 아래의 옵션을 넣어 주세요. (Generic 커널에는 들어 있을 것 같음)
------------------
device tun
device tap
------------------
- Ports를 이용 하여 설치
/usr/ports/security/openvpn 에서 make install
- 설치후 생성 되는 디렉토리/파일
/usr/local/bin/openvpn --> 실행파일
/usr/local/share/doc/openvpn/easy-rsa --> 키 생성을 하기 위한 디렉토리
/usr/local/etc/rc.d/openvpn.sh --> openvpn 구동을 위한 파일
2) Linux (Fedora Core 3 에서 테스트)
- 다운로드
http://dag.wieers.com/packages/openvpn/
--> openvpn-2.0.2-1.1.fc3.rf.i386.rpm (버전에 맞는 것을 다운 받음)
- 설치
rpm -Uvh openvpn-2.0.2-1.1.fc3.rf.i386.rpm
- 설치후 생성 되는 디렉토리/파일
/usr/sbin/openvpn
/usr/share/doc/openvpn/easy-rsa
3) Windows
- 다운로드
http://openvpn.net 에서 openvpn-2.0.5-install.exe 다운로드
윈도우에서 사용 할 때는 그냥 openvpn 을 사용 하는 것 보다 OpenVPN-GUI 를 사용
하면 구동 하기가 더 편리 합니다.
(홈페이지에 Graphical User Interface 에 들어가면 다양한 종료가 있습니다.)
- 설치
일반적인 위도우 응용프로그램과 같이 설치 하면 됩니다.
- 설치후 생성 되는 것
TAP-Win32 Adapter 가 생깁니다. (바탕화면의 "내 네트워크 환경" 에서 속성 보면 됨)
C:\Program Files\OpenVPN --> OpenVPN관련 파일 생성됨
4) 기타
디렉토리 구조만 조금씩 다른 뿐이지 어떤 OS 이던 똑 같은 구조로 동작 합니다.
기타 다른 OS에서도 특별한 문제 없이 사용 할 수 있을 것입니다.
http://openvpn.net/install.html (여기를 참조 하시기 바랍니다.)
* 특별히 다른 것은 없지만 이해를 돕기 위해 다음의 환경 셋팅 등에서도 3개의
OS 위주로 설명을 합니다.
3. 환경 셋팅
1) 설정 파일
a. FreeBSD
- 설정파일과 키값이 저장될 디렉토리 생성
# mkdir /usr/local/etc/openvpn
# mkdir /usr/local/etc/openvpn/keys
- /usr/local/etc/openvpn/openvpn.conf (설정파일)
다른 OS도 동일하게 생성 하므로 아래의 키생성에서 같이 설명함
서버와 클라이언트에 따라서 다르게 설정함
- 구동을 위한 환경 설정
/etc/rc.conf 에 다음을 추가
----------------------------------------------------------
openvpn_enable="YES"
openvpn_if="tap"
openvpn_configfile="/usr/local/etc/openvpn/openvpn.conf"
openvpn_dir="/usr/local/etc/openvpn"
----------------------------------------------------------
- 실행방법
# cd /usr/loal/etc/rc.d
# ./openvpn.sh start
b. Linux
- 설정파일과 키값이 저장될 디렉토리 생성
# mkdir /etc/openvpn
# mkdir /etc/openvpn/keys
- 구동을 위한 환경 설정
# chkconfig --list | grep openvpn --> 확인한 후
# chkconfig --level 3 openvpn on
- 실행
# /etc/init.d/openvpn start
c. Windows
- 디렉토리 생성
C:\Program Files\OpenVPN\config
C:\Program Files\OpenVPN\config\keys
- 실행 (cmd 쉘에서 실행)
cmd> openvpn --config openvpn.conf
* OpenVPN-GNU 를 설치 하면 트레이에서 시작하고 종료 할 수 있습니다.
(OpenVPN 홈페이지에서 좌측에 "Graphical User Interface" 로 들어가서 받으세요.)
2) 설정 파일 생성
- 서버용 (openvpn.conf)
----------------------------------------------------------------------------------
dev tap
proto tcp-server
ifconfig 192.168.0.1 255.255.255.0 --> 서버의 vpn 주소
verb 1
mode server
tls-server
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
ifconfig-pool 192.168.0.101 192.168.0.200 --> 클라언트로 DHCP로 받을때 IP범위
user root
group wheel
#inactive 600
client-to-client
------------------------------------------------------------------------------------
- 클라이언트용 (openvpn.conf)
-----------------------------------------------------------------------------------
remote 100.100.100.1 --> openvpn 서버 주소
dev tap --> 사용 장치명
proto tcp-client
ifconfig 192.168.0.10 255.255.255.0 --> IP를 고정 할때 사용,
verb 2 없으면 DHCP방식으로 서버에서 받음
tls-client
ca keys/ca.crt --> 아래의 3개는 서버에서 생성 된 것을 받아와야 함
cert keys/client.crt
key keys/client.key
------------------------------------------------------------------------------------
3) 키 생성
- 아래의 디렉토리로 이동
# cd /usr/local/share/doc/openvpn/easy-rsa (FreeBSD)
# cd /usr/share/doc/openvpn/easy-rsa (Linux)
- vars 수정 (아래와 같이 적당히 수정, 중요한 것은 동일한 값을 가져야 한다는 것임)
----------------------------------------------------------------------------
export KEY_DIR=/usr/local/etc/openvpn/keys
export KEY_COUNTRY=KO
export KEY_PROVINCE=NA
export KEY_CITY=SEOUL
export KEY_ORG="VPN-TEST"
export KEY_EMAIL="vpn-admin@vpn-test.com"
-----------------------------------------------------------------------------
- 서버측의 키 생성 (bash 쉘에서 실행 하기 바람)
# . vars
# ./clean-all --> index 생성을 위해서 함
# ./build-ca --> 변경 되면 모든 인증서가 파기되어야 함으로 최초 한 번만 실행
# ./build-dh --> 랜덤암호화를 위해 생성
# ./build-key-server server
- 클라이언트 용 key 생성
# . vars
# ./build-req <사용자ID> --> 키 생성
# ./sign-req <사용자ID> --> 키에 대하여 서명
- 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 []:
-----------------------------------------------------------------------------------
주의 사항 :
Common Name 은 로그 분석시 구별 되는 값 임으로 알 수 있는 이름으로 설정함
Organizational Unit Name 까지 동일한 값으로 해야 인증키가 먹음
challenge password 는 PPP인증등에서 사용 됨으로 설정 하지 않음
- 키를 클라이언트로 복사 (client 라는 이름으로 생성 했을때)
/usr/local/etc/openvpn/key 아래에 생성된 3개의 파일을 복사
ca.crt , client.crt , client.key
* 사용자 키는 서버에서 생성해서 클라이언트로 복사해야 함, 따라서 모든 키생성은
서버에서 해야 함.
4. 전체 구성

- 서버로 접속을 하여 키 인증등을 거쳐서 상호 VPN 터널을 완성 시킴
- VPN서버가 방화벽 내부에 있다면 TCP1194로의 연결 만큼을 허용해 주어야 함
5. 기타 참고 사항
- 물리적인 서버를 바꾸려면
/usr/local/etc/openvpn/keys 키가 들어 있는 디렉토리를 통체로 옮겨서 사용 하면
클라이언트의 키를 다시 발급 하지 않고 사용 할 수 있음
- 기타 다양한 활용에 대해서는 openvpn.net 을 보면 많이 도움이 됩니다.
작성 : 마그마(필명) putter@naver
'OS > LINUX' 카테고리의 다른 글
rpm으로 커널 업그레이드 하기 (0) | 2008.03.12 |
---|---|
[linux] CentOS4 XManager 연결 가능하게 하기 (0) | 2008.03.10 |
REDHAT 9 설치후 기본 셋팅 (0) | 2008.02.27 |
redhat 9.0 에서 한글이 깨질때..조치 (0) | 2008.02.27 |
[LINUX] rpmbuild (0) | 2008.02.11 |