openVPN
openVPN은 리눅스에서 쓸수있는 open source VPN 프로그램중 하나이다.
-서버 설정
# cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
# vim /etc/openvpn/easy-rsa/2.0/vars// 인증서나 키를 만들때 그냥 엔터처도 값이 나오게 하려고
-----------------------------------------------------------------------------
...
export KEY_COUNTRY="KR"// 국가
export KEY_PROVINCE="KB"// 지방
export KEY_CITY="GUMI"// 도시
export KEY_ORG="KOTHS"// 기관명
export KEY_EMAIL="web@skill.com"// 메일 주소
-----------------------------------------------------------------------------
# cd /etc/openvpn/easy-rsa/2.0
/etc/openvpn/easy-rsa/2.0# . ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
/etc/openvpn/easy-rsa/2.0# ./clean-all
/etc/openvpn/easy-rsa/2.0# ./build-ca// 개인키(ca.key)와 공개인증서(ca.crt) 생성 과정
->계속 엔터 입력하다가 common이 나오면 server를 적어줌
/etc/openvpn/easy-rsa/2.0# ./build-key-server server// 서버 키(server.key), 서버인증서
(server.crt)생성 과정
->계속 엔터 입력 하다가 common이 나오면 server을 입력 그리고 y/n선택이 나오면 y를 입력
/etc/openvpn/easy-rsa/2.0# ./build-key client1// 클라이언트 키 생성
->계속 엔터 입력 하다가 common이 나오면 client1을 입력 그리고 y/n선택이 나오면 y를 입력
/etc/openvpn/easy-rsa/2.0# ./build-dh
# mkdir /client
# cd /etc/openvpn
/etc/openvpn# cp easy-rsa/2.0/keys/server.* .
/etc/openvpn# cp easy-rsa/2.0/keys/ca.crt .
/etc/openvpn# cp easy-rsa/2.0/keys/dh1024.pem .
/etc/openvpn# cp easy-rsa/2.0/keys/client.* /client
/etc/openvpn# cp easy-rsa/2.0/keys/ca.crt /client
-> 클라이언트 디렉토리에 옴긴것은 클라이언트(컴퓨터)에 옴겨 줘야함(인증해야 하기 때문에)
# gunzip /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn
# vim /etc/openvpn/server.conf
-----------------------------------------------------------------------------
port 1194// vpn 포트 설정
proto udp// 프로토콜 설정(tcp로 하려면 udp에 주석 뒤 tcp에 주석제거), 권장 값:UDP
dev tun// 클라이언트와 통신할 가상 인터페이스 지정(tun과 tap이 있음)
ca ca.crt// 인증서 이름 입력
cert server.crt// 서버 인증서 이름 입력
key server.key// private key 이름 입력
dh dh1024.pem// Diffie Hellman 이름 입력
ifconfig 10.10.1.1// 서버 아이피 설정 tap어댑터 방식은 10.10.1.1 255.255.0.0이고 tun방식은 10.10.1.1 10.10.1.2다
server 10.8.0.0 255.255.0.0// 서버모드로 운영, 사설망으로 10.8.0.0/16 네트워크 사용
ifconfig-pool-persist ipp.txt// 고정 아이피를 해줄 목록
push "dhcp-option DNS 10.8.0.1"// 클라이언트의 dns주소를 10.8.0.1로 설정
client-to-client// vpn 클라이언트끼리 통신 가능하게 설정
keepalive 10 120// 10초마다 ping을 해서 120초 동안 응답불가시 원격지가 다운 된걸로 판단
comp-lzo// 압축 알고리즘을 사용(서버가 사용 시 클라이언트도 사용해야함)
persist-key//
persist-tun//
status openvpn-status.log// 로그파일 설정
verb 3// 로그 레벨 설정
-----------------------------------------------------------------------------
※ 딱히 수정할것은 없고 아이피나 파일등 자신에 입맛에 맞게 맞춰주면 된다.
# /etc/init.d/openvpn restart
- 클라이언트 설정
·클라이언트에 openvpn을 설치한다.
·아까 서버에 client폴더에 담긴 파일들을 "시작"-"모든 프로그램"-"openvpn"-"openvpn configuration file directory"를 클릭하여 그곳에 옴겨 놓는다.
·“시작”-"모든 프로그램"-"openvpn"-"openvpn sample configuration Files"를 클릭하여 client.ovpn(client)파일을 "시작"-"모든 프로그램"-"openvpn"-"openvpn configuration file directory"에 옴겨놓는다.
·client.ovpn(client)파일을 열어 remote 어쩌고저쩌고 되있는 부분을 remote <서버IP> <포트>로 적어준다. (예 remote 192.168.0.1 1194)
TAP 은 이더넷 디바이스(2계층)로 작동하고, TUN (TUNnel)은 IP계층(3계층) 디바이스로 작동한다.
TAP 은 네트워크 브리지를 생성하는데 사용할 수 있고, TUN 은 라우팅에 사용할 수 있다.