OpenVPN 을 통한 VPN 구현

OpenVPN 을 통한 VPN 구현

0. 내가 원한는 것.

1) 내가 어디에 있든 사설망에 접속할 수 있어야 한다.

    – 사설망 모든 자원 활용(사설의 모든 IP, 모든 PORT)

    – 요즘 ISP에서는 특정 포트를 막는다(예) samba, MS-SQL 포트)

2) 사설망은 인터넷을 통해도 안전해야 한다. (SSL 암호화 제공)

3) 사설망의 다른 PC(클라이언트)들과 통신이 가능해야 한다.

4) 접속에 있어 ID/PASS인증을 거친다. (인증서 뿐만 아니라)

5) 어디에 있든 사설망의 게이트웨이를 통해 인터넷에 접속한다.

    (외부에 알려지는건 내부 게이트웨이 IP가 보인다.)

1. 시스템 구성

  한대의 VPN서버에 여러대의 VPN 클라이언트들이 붙는 형태

  각 VPN클라이언트 끼리 통신 또한 가능해야 한다.

  -서버 : 리눅스 (SULinux 1.0)

  -클라이언트 : Windows XP, Linux (RedHat 9.0)

  -네트웍 : 10.1.1.0 (10.1.1.1 ~ 10.1.1.255)

  -사용포트 : 1194/UDP

2. OpenVPN설치(서버)

## lzo설치 ( 실시간 압축 전송 라이브러리)

#http://dag.wieers.com/packages/lzo/ 에서 적당한 버전의 rpm을 받는다.

# 난 SULinux 1.0 이니 , 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.7.tar.gz

rpmbuild -tb openvpn-2.0.7.tar.gz

rpm -Uvh  /usr/src/redhat/RPMS/i386/openvpn-2.0.7-1.i386.rpm

### 설치되는 파일 및 디렉토리들

  /etc/openvpn

  /etc/rc.d/init.d/openvpn

  /usr/sbin/openvpn

  /usr/share/doc/openvpn-2.0.7/*

  /usr/share/man/man8/openvpn.8.gz

  /usr/share/openvpn

  /usr/share/openvpn/plugin/*

###############################

3. 인증서 생성 – 서버

  인증성 생성은 필수이다. 다음과 같이 생성한다.

1) CA 생성 (상위 인증기관)

   cd /usr/share/doc/openvpn-2.0.7/easy-rsa/

   #vars 파일을 열어서 맨 마지막 줄을 수정한다.!!

     export KEY_COUNTRY=KR

     export KEY_PROVINCE=NA

     export KEY_CITY=BUSAN

     export KEY_ORG=”superuser.co.kr”

     export KEY_EMAIL=”doly@suidc.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.7/

    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.1.1.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인증을 받는다. (시스템 계정)

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.7.tar.gz

rpm -Uvh  /usr/src/redhat/RPMS/i386/openvpn-2.0.7-1.i386.rpm

# 설정파일 복사 및 설정

cp  /usr/share/doc/openvpn-2.0.7/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

# 위 두줄 추가!!

/etc/rc.d/init.d/openvpn start

이렇게 시작하면, user/ pass 를 묻는다.!!

예의상ㅇ!! ping 10.1.1.1 을 해 본다.!!! — OK!

6. Windows XP에 설치!!

http://www.openvpn.se/files/install_packages/openvpn-2.0.7-gui-1.0.3-install.exe

위 파일을 받아서 설치!

  http://su021.suidc.com/~mons/vpn-client-win.zip

이 키를 받아서.

시작 -> 프로그램 -> OpenVPN -> Open VPN configuration file directory

을 열고 거기에 복사한다.!

서진우

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

You may also like...

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