[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

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

1 Response

  1. 2024년 9월 13일

    … [Trackback]

    […] Find More Info here to that Topic: nblog.syszone.co.kr/archives/2985 […]

페이스북/트위트/구글 계정으로 댓글 가능합니다.