Posted
Filed under Computer/Linux
내 홈페이지에 있는 내용인데 ㅋㅋ 내 홈페이지는 search engine에서 검색이 안된다.... ㅋㅋ
넘신경써서 만들었던지라... ㅋㅋ

그래서 친구가 OpenVPN 설치방법을 블로그에 올려달라고해서 내 홈페이지에서 퍼다가 다시 내 블로그로 옮긴다... ㅋㅋ

2006-06-02  by cep

설치하는 방법

선 요구사항
자체 방화벽 또는 공유기등의 방화벽 기능이 있는경우
UDP 1194 포트를 열어준다. (또는 포트 포워딩시켜준다.)
( TCP 또는 UDP 1194를 사용하는데 이것은 server.ovpn 과 client.ovpn에 설정한 포트를 양쪽을
맞춰주어야 한다. 서버는 TCP이고 client는 UDP이면 안된다. 두 곳이 모두 TCP 또는 UDP로 같아야한다. VPN서버를 TCP 1194로 띄우고 또 UDP 1194로 띄우면 각각의 데몬은 서로 다른 포트로 서비를 하는 독립된 VPN 데몬들이 된다. )

필요한 패키지
openssl
lzo
pam
iptables
bridge-utils
이것이 깔려있는지 본다. (igetlinux에서 soho로 선택후 대부분 패키지 깔았을때 lzo만 없었고
나머지는 있는지 물어보지 않는다. lzo는 lzo사이트에서 다운받아 설치한다.)

openvpn은 http://openvpn.net 에서 다운받는다.


root로 계정을 변환한다.

tar zxvf openvpn-[version].tar.gz
cd openvpn-[version]
./configure --prefix=/usr/local
make
make install

cp -fr easy-rsa/2.0 /etc/openvpn
mkdir /etc/openvpn/keys
cd /etc/openvpn
vi vars
-------------------------------------------
여기서 export KEY_*** 부분을 모두 수정해준다. 자신이 원하는 걸로 적당히...
예)
export KEY_COUNTRY="KR" <=== 여기는 두자로만 써야함.
export KEY_PROVINCE="C*"
export KEY_CITY="S****"
export KEY_ORG="Y***"
export KEY_EMAIL="y**@***.***.com"
-------------------------------------------

. ./vars
./clean-all
./build-ca
./build-dh
인증서 만드는 과정으로 공통

서버 인증서발급과정
./build-key-server server
여기까지 server에 필요한 인증서 발급 완료

client에서 사용할 인증서를 여기서 만들어 두고 나중에 윈도우에서 가져다 쓴다.
./build-key client
client 인증서 발급과정 완료


cp [source-dir]/openvpn-[version]/sample-config-files/server.conf /etc/openvpn/keys
vi /etc/openvpn/keys/server.conf
-------------------------------------
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0 <==== VPN IP가 10.8.0.x로 잡힌다. 서버(10.8.0.1)
ifconfig-pool-persist ipp.txt
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
----------------------------------------------------

VPN용 가상 디바이스를 잡기위한 프로그램 다운받기 (Brigde)
http://linux-net.osdl.org/index.php/Bridge

tar zxvf bridge-utils-[version].tar.gz
cd bridge-utils-[version]
./configure --prefix=/usr/local
make
make install

cd /usr/local/sbin
vi iptables.sh
--------------------------
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
---------------------------
chmod 755 iptables.sh

vi bridge-start
----------------------------
#!/bin/bash

#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.0.2" <==== eth0(default 통신용 렌카드의 IP)였었던것의 IP 주소를 써준다.
eth_netmask="255.255.255.0"
eth_broadcast="192.168.0.255"

for t in $tap; do
openvpn --mktun --dev $t
done

brctl addbr $br
brctl addif $br $eth

for t in $tap; do
brctl addif $br $t
done

for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done

ifconfig $eth 0.0.0.0 promisc up

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
-------------------------------------
chmod 755 bridge-start

vi bridge-stop
-----------------------------------
#!/bin/bash

####################################
# Tear Down Ethernet bridge on Linux
####################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged together
tap="tap0"

ifconfig $br down
brctl delbr $br

for t in $tap; do
openvpn --rmtun --dev $t
done
--------------------------------------
chmod 755 bridge-stop

vi openvpn-start
--------------------------------------
bridge-start
iptables.sh
cd /etc/openvpn/keys
openvpn ./server.conf &
-------------------------------------
chmod 755 openvpn-start

vi openvpn-stop
------------------------------------
iptables -F
killall openvpn
bridge-stop
------------------------------------
chmod 755 openvpn-stop

openvpn-start <====== VPN 서버 실행

실행했을때 아래처럼 내용이 뜨면 성공

Sun Feb 6 20:46:38 2005 OpenVPN 2.0_rc12 i686-suse-linux [SSL] [LZO] [EPOLL] built on Feb 5 2005
Sun Feb 6 20:46:38 2005 Diffie-Hellman initialized with 1024 bit key
Sun Feb 6 20:46:38 2005 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Sun Feb 6 20:46:38 2005 TUN/TAP device tun1 opened
Sun Feb 6 20:46:38 2005 /sbin/ifconfig tun1 10.8.0.1 pointopoint 10.8.0.2 mtu 1500
Sun Feb 6 20:46:38 2005 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 gw 10.8.0.2
Sun Feb 6 20:46:38 2005 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:23 ET:0 EL:0 AF:3/1 ]
Sun Feb 6 20:46:38 2005 UDPv4 link local (bound): [undef]:1194
Sun Feb 6 20:46:38 2005 UDPv4 link remote: [undef]
Sun Feb 6 20:46:38 2005 MULTI: multi_init called, r=256 v=256
Sun Feb 6 20:46:38 2005 IFCONFIG POOL: base=10.8.0.4 size=62
Sun Feb 6 20:46:38 2005 IFCONFIG POOL LIST
Sun Feb 6 20:46:38 2005 Initialization Sequence Completed



아래는 접속할 컴퓨터의 client 설정
윈도우에서 윈도우용 openvpn-[version].exe를 다운받아 설치한다.
아까 서버에서 셋팅한 값들중 keys 디렉토리에서
ca.crt, ca.key, client.crt, client.csr, client.key 5개의 파일을 bin 디렉토리에 카피해준다.
config 디렉토리에 있는 client.ovpn 파일을 bin 디렉토리에 카피해준다.
client.ovpn파일을 조금 수정한다.
-----------------------------------
client
dev tun
proto udp
remote VPN-SERVER-IP 1194 <== VPN-SERVER-IP에 VPN 설치한 서버의 일반 인터넷 접속 IP 또는 domainname을 써준다. 예) 211.112.112.113 or abc.pvn.pe.kr
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
comp-lzo
verb 3
--------------------------------------

이 bin 디렉토리에서 윈도우 도스창을 하나 띄운후에 다음을 따라한다.
addtap <== addtap.bat를 실행하여 가상 device를 윈도우에 설치한다.
openvpn client.ovpn <== openvpn으로 서버와 접속하여준다. 이창은 사라지지 않는다.

이렇게 했을때 창에서 뭔가주루룩 올라가다가
"Initialization Sequence Completed" 이것이 떨어지면 서버와 client간에 vpn으로 연결이 된것이다.

그럼 테스트해보자
다른 도스창을 띄워서
ping 10.8.0.1 을 해본다. 그러면 ping이 날아가는것이 보일껏이다. 그럼 성공
telnet 10.8.0.1 로 접속하면 서버에 접속이 된다.


문제해결
창에서 "TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)." 이런것이 뜨면서 끝에서 " UDPv4 link remote: xxx.xx.xxx.xxx:1194"
처럼 뜨면서 계속 반복적으로 이렇게 뜰경우에....
방화벽 등에서 UDP port 1194 또는 TCP port 1194 (서버 환경에 설정한것) 가 열려있는지 봐야하고 또한 NAT인경우에는 UDP port 또는 TCP port 1194가 외부 IP (외부 인터넷에서 접속하려는 VPN 서버 바로 앞단에 있는 방화벽 또는 NAT서버의 인터넷 IP)에서 VPN 서버의 IP로 같은 protocol의 같은 포트번호로 포트 포워딩이 잘 되어 있는지 확인한다.
예)
NAT 방화벽 (공유기) 의 외부 IP : 211.112.112.112
VPN 서버의 IP: 192.168.1.100
Port forward: 211.112.112.112:(UDP 1194) ---> 192.168.1.100:(UDP 1194)


그외 해결책 또는 좀더 자세한 설명은 아래 주소를 참조한다.
http://openvpn.net/howto.html
2008/10/27 16:51 2008/10/27 16:51
[로그인][오픈아이디란?]