[VPN] openvpn 설치 및 작동
— lzo설치 ( 실시간 압축 전송 라이브러리)
#http://dag.wieers.com/packages/lzo/ 에서 적당한 버전의 rpm을 받는다.
# RHEL4 버전을 받는다.
wget http://dag.wieers.com/packages/lzo/lzo-1.08-4.2.el4.rf.i386.rpm
wget http://dag.wieers.com/packages/lzo/lzo-devel-1.08-4.2.el4.rf.i386.rpm
rpm -Uvh lzo*
— open vpn 받아서 rpm 만들고 설치
wget http://openvpn.net/release/openvpn-2.0.9.tar.gz
rpmbuild -tb openvpn-2.0.9.tar.gz
rpm -Uvh /usr/src/redhat/RPMS/i386/openvpn-2.0.9-1.i386.rpm
— 설치되는 파일 및 디렉토리들 —————-
/etc/openvpn
/etc/rc.d/init.d/openvpn
/usr/sbin/openvpn
/usr/share/doc/openvpn-2.0.9/*
/usr/share/man/man8/openvpn.8.gz
/usr/share/openvpn
/usr/share/openvpn/plugin/*
————————————————
3. 인증서 생성 – 서버
인증성 생성은 필수이다. 다음과 같이 생성한다.
1) CA 생성 (상위 인증기관)
cd /usr/share/doc/openvpn-2.0.9/easy-rsa/
#vars 파일을 열어서 맨 마지막 줄을 수정한다.!!
export KEY_COUNTRY=KR
export KEY_PROVINCE=NA
export KEY_CITY=SEOUL
export KEY_ORG=”futurebnc.com”
export KEY_EMAIL=”leejae25@futurebnc.com”
####################################
#인증서 생성시 마다 넣는게 귀찮아서 이렇게 정의 하는 것이니 하지 않아도 무관함
. ./vars
## 위 명령은 , vars내용을 include한다는 명령이다.
./clean-all
## 기존에 생성된 것이 있으면 모두 삭제한다.
./build-ca
## CA 인증서를 생성한다.
## 이렇게하면 keys라는 폴더에 ca.key(개인키), ca.crt(공개인증서)가 생성된것을 확인한다.
## ca.crt파일은 모든 클라이언트에 배포. ca.key는 서버만 가지고 있음.
2) 서버키 생성 (서버에 사용될 인증서 및 개인키)
./build-key-server server
## 뭐 많이 물어보는데 대충 대답하고 , y를 누른다.
# keys 디렉토리에 server.crt server.key 등이 생긴것을 확인할수 있다.
# 이 키들은 CA에 의해 사인된 인증서이다.
# server.crt, server.key 모두 서버에만 사용
3) 클라이언트키 생성 (클라이언트에 사용될 인증서)
./build-key client
## 뭐 많이 물어보는데 대충 대답하고 , y를 누른다.
# keys 디렉토리에 server.csr server.crt server.key 등이 생긴것을 확인할수 있다.
# 중요한건. Common Name은 client여야 한다.!!
# keys 디렉토리에 client.crt client.key 를 볼 수 있다.
# 이 키들은 CA에 의해 사인된 인증서이다.
# client.key, client.crt 모두 클라이언트에만 사용됨.
4) Diffie Hellman 파라메터 생성(암호화에 필요한 놈)
./build-dh
# keys디렉토리에 dh1024.pem 파일이 생긴것을 확인할 수 있다.
# dh1024.pem은 서버에만 가지고 있는다.
5) 클라이 언트용 파일 복사 및 보관
mkdir -p /root/client-keys
cp keys/ca.crt keys/client.* /root/client-keys
cd /root
zip client-keys.zip client-keys/*
4. 설정파일(server.conf)파일 복사 및 편집 – 서버
1) 설정파일 및 키 복사
cd /usr/share/doc/openvpn-2.0.9/
cp sample-config-files/server.conf /etc/openvpn/
cp easy-rsa/keys/server.* /etc/openvpn/
cp easy-rsa/keys/dh1024.pem /etc/openvpn/
cp easy-rsa/keys/ca.* /etc/openvpn/
2) 설정파일 편집.(/etc/openvpn/server.conf)
server 10.10.20.0 255.255.255.0
client-to-client
duplicate-cn
max-clients 100
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
## 설명
# sever 네트웍 설정은 10.1.1.0으로 한다.
# client-to-client : 클라이언트 끼리 통신 가능하게
# duplicate-cn : client인증서 하나로 여러대의 PC에서 사용할 수 있게한다.
# max-clients 100 : 연결수를 100으로 제한한다.
# plugin …. : user/pass인증을 받는다. (시스템 계정)
%% 다른 server.conf 예
—————————————————————————
port 50000
dev tap
ifconfig 10.10.20.1 255.255.255.0
ifconfig-pool 10.10.20.150 10.10.20.200
duplicate-cn
client-to-client
max-clients 200
keepalive 10 60
comp-lzo
user root
group root
persist-key
persist-tun
tls-server
dh /etc/openvpn/dh1024.pem
ca /etc/openvpn/my-ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
status /var/logs/openvpn-status.log
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
verb 4
————————————————————————-
위와 같이 설정했을경우 /etc/init.d/openvpn 스크립트의 start 부분에 –mode server 을 추가
ex) $openvpn –daemon –writepid $piddir/$bn.pid –config $c –cd $work –mode server
또한 openvpn-status.log 파일을 생성할 디렉토리도 미리 생성해 놓는다
3) G/W로 VPN서버를 쓰기 때문에 인터넷 공유 설정.
echo ‘iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE’ >> /etc/rc.d/rc.local
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -L
5. 클라이언트 설치 및 설정(Linux RH9)
# lzo 설치
wget http://dag.wieers.com/packages/lzo/lzo-1.08-4.0.rh9.rf.i386.rpm
wget http://dag.wieers.com/packages/lzo/lzo-devel-1.08-4.0.rh9.rf.i386.rpm
rpm -Uvh lzo-*
# openvpn 받아서 설치
wget http://openvpn.net/release/openvpn-2.0.7.tar.gz
rpmbuild -tb openvpn-2.0.9.tar.gz
rpm -Uvh /usr/src/redhat/RPMS/i386/openvpn-2.0.7-1.i386.rpm
# 설정파일 복사 및 설정
cp /usr/share/doc/openvpn-2.0.9/sample-config-files/client.conf /etc/openvpn/
cd /etc/openvpn
wget http://su021.suidc.com/~mons/client-keys.zip
unzip client-keys.zip
mv client-keys/* .
rm -rf client-keys*
## 설정파일 편집
remote 222.97.189.21 1194
auth-user-pass
# 위 두줄 추가!!
%% 또한 리눅스에서는
remote 211.178.61.60
port 50000
proto udp
dev tap
client
nobind
ping 10
comp-lzo
auth-user-pass /vpnclient/pass
ca /vpnclient/cert/my-ca.crt
cert /vpnclient/cert/client.crt
key /vpnclient/cert/client.key
%% 또한 윈도우에서는
remote 211.178.61.60
port 50000
proto udp
dev tap
client
ping 10
comp-lzo
dev-node “로컬 영역 연결 3”
auth-user-pass
ca c:\\\\cert\\\\my-ca.crt
cert c:\\\\cert\\\\client.crt
key c:\\\\cert\\\\client.key
#service openvpn start