OpenVPN安装配置

2009年11月11日 | 标签:

前些天利用OpenVZ的VPS安装了OpenVPN,在博客里也说明了OpenVZ下安装OpenVPN的一些注意事项,但没有给出详细的安装过程。因为有些朋友会需要,这里转载一篇OpenVPN的安装配置文章供大家参考。

其实一些配置是可以根据自己的需要灵活配置的。

摘自http://www.xiaohui.com/dev/server/20070514-install-openvpn.htm
及http://heavenmade1201.blogspot.com/2009/10/openvpn_13.html

安装为最新版本openvpn-2.1_rc20

一.OpenVPN 安装环境

1.Server 端的环境
1) centos, kernel版本: 2.6.18 ip :192.168.12.210;
2) kernel 需要支持 tun 设备, 需要加载 iptables 模块;
检查 tun 是否安装:
#modinfo tun
filename:
decription:
author:
license: “GPL”
检查iptables模块,查看是否有下列文件:
#/etc/init.d/iptables

2.Client 端的环境:
1) Windows XP PRO SP2 ;
2) OpenVPN GUI For windows 1.0.3 , 可在 openvpn.se 下载
注意: OpenVPN GUI for windows 的版本要和 OpenVPN Server 的版本配套.

二. OpenVPN 服务端安装过程
1.用SecureCRT 登录到 host, 进入根目录
cd /

2.下载 LZO,解压到lzo-2.02
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz

3.下载 OpenVPN, 解压到
wget http://openvpn.net/release/openvpn-2.1_rc20.tar.gz
4.安装 LZO
cd /lzo-2.02
./configure
make
make check
make install

5.安装 OpenVPN
cd /openvpn-2.1_rc20
./configure
# 或用指定dir: (注:下述命令, 应该在一行写完. 为了方便显示, 这里分成了四行)
# ./configure –with-lzo-headers=/usr/local/include
# –with-lzo-lib=/usr/local/lib
# –with-ssl-headers=/usr/local/include/openssl
# –with-ssl-lib=/usr/local/lib
make
make install

6.生成证书Key
初始化 PKI
(如果没有 export 命令也可以用 setenv [name] [value] 命令)
cd /openvpn-2.1_rc20/easy-rsa/1.0
#修改var文件
export D=`pwd`
export KEY_CONFIG=$D/openssl.cnf
export KEY_DIR=$D/keys
export KEY_SIZE=1024
export KEY_COUNTRY=CN
export KEY_PROVINCE=BJ
export KEY_CITY=BJ
export KEY_ORG=”NST”
export KEY_EMAIL=”test@gmail.com”

. var

./clean-all

./build-ca #Generating a 1024 bit RSA private key

./build-key-server server # 建立 server key

./build-key client01 #生成客户端 key

依次类推生成其他客户端证书/key

./build-key client02

./build-key client03

注意在进入 Common Name (eg, your name or your server’s hostname) []: 的输入时, 每个证书输入的名字必须不同.

7.生成 Diffie Hellman 参数
./build-dh

8.将 keys 下的所有文件打包下载到本地
tar -cf mykeys.tar /openvpn-2.1_rc20/easy-rsa/1.0/keys
cp mykeys.tar /home/vsftpd/heavenmade1201/pub

将 mykeys.tar 移到pub上, 然后用FTP或其他方式将其下载到本地保存, 然后将其从server删除:
rm /home/xiaohui.comsys/public_html/mykeys.tar

9.创建服务端配置文件

从样例文件创建:
cd $dir/sample-config-files/ # 进入源代码解压目录下的sample-config-files子目录
cp server.conf /usr/local/etc # cp服务器配置文件到/usr/local/etc
vi /usr/local/etc/server.conf

port 1194
proto tcp
dev tap
ca /openvpn-2.1_rc20/easy-rsa/1.0/keys/ca.crt
cert /openvpn-2.1_rc20/easy-rsa/1.0/keys/server.crt
key /openvpn-2.1_rc20/easy-rsa/1.0/keys/server.key # This file should be kept secret
dh /openvpn-2.1_rc20/easy-rsa/1.0/keys/dh1024.pem
server 10.0.0.0 255.255.0.0
client-to-client
client-config-dir //openvpn-2.1_rc20/easy-rsa/1.0/ccd
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /openvpn-2.0.5/easy-rsa/keys/openvpn-status.log
verb 4
#push “dhcp-option DNS 10.8.0.1″
#push “dhcp-option DNS 202.106.0.20″ # name server 地址, 如何获取见随后说明
#push “dhcp-option DNS 192.168.12.209″ # name server 地址, 如何获取见随后说明

说明: 有些 domain 被封掉了, 这时, 如果要访问这些网站, 应该将 server 上的 dns push 到 client.
上面示例中的 dns ip:202.106.0.20 , 192.168.12.209″可以在 /etc/resolv.conf 中找到:
cat /etc/resolv.conf

nameserver 202.106.0.20
nameserver 192.168.12.209

//openvpn-2.1_rc20/easy-rsa/1.0/ccd目录下
vim client01
ifconfig-push 10.0.0.102 255.0.0.0 #指定虚拟IP地址

10.创建客户端配置文件
cd $dir/sample-config-files/ #进入源代码解压目录下的sample-config-files子目录
cp client.conf /usr/local/etc #cp客户端配置文件到/usr/local/etc
vi /usr/local/etc/client.conf #配置文件如下所示

client

dev tap
proto tcp
remote 192.168.12.210 1194
persist-key
persist-tun
ca ca.crt
cert client01.crt
key client01.key
ns-cert-type server
comp-lzo
verb 3
#redirect-gateway def1

11.启动Openvpn: openvpn [server config file]
/usr/local/sbin/openvpn –config /usr/local/etc/server.conf &

三. OpenVPN GUI For Windows 客户端安装过程

1.安装 OpenVPN GUI For Windows, 到 http://www.openvpn.net/index.php/open-source/downloads.html 下载. 目前的版本是 2.1-rc20.

2.依屏幕指示安装openvpn gui.

3.配置 openvpn gui :
安装结束后,进入安装文件夹下的 config 目录, 然后将上面第 10 步建立的 client.conf 文件从 server 上下载到此文件夹, 并更名为 client.ovpn
同时, 将第8 步打包的 mykeys.tar 中的下列证书文件解压到此文件夹.
ca.crt
ca.key
client01.crt
client01.csr
client01.key

4.然后双击 client.ovpn 即可启动 openvpn, 或者通过 OpenVPN GUI 的控制启动 VPN.
如果双击 client.ovpn 没有反应, 则在任务栏点 OpenVPN GUI 的小图标右键, 选择 edit config, 将内容复制过去再保存. 然后再点右键中的 connect 即可.
如果需要第二台机器上使用 vpn , 进行同样的配置, 只需要将 client01.crt, client01.csr, client01.key 换成对应的 client2.xxx 即可, 然后将 client.ovpn 中的对应key文件值改掉.
很多朋友客户端处无法正常启动的原因,网络上大部分都是certificate can not load ,故需要在你client.conf的当前目录下运行客户端,因为client.conf中,ca cert key使用的是相对路径,这点务必注意。

四. OpenVPN server端快速安装配置

将之前编译好的文件以及配置文件直接拿来使用

1. 将openvpn-2.1_rc20.tar.gz复制到本地的server端上并解压

2. 将/openvpn-2.1_rc20中的server/client.conf配置文件复制到到本地/usr/local/etc,修改配置文件:
1) server.conf中,证书路径要和当前路径匹配,同时(可能需要)修改#push “dhcp-option DNS 202.106.0.20″ ,此处的IP地址修改地址参考/etc/resolv.conf里面的nameserver
2)client.conf中,注意修改新的remote 那行的IP地址为本地server IP地址

3. 将可执行文件/usr/local/sbin/openvpn复制到本地/usr/local/sbin/下

重新启动,可以正常使用新配的OpenVPN。

五. OpenVPN 访问外网的设置(#GFW必备,前提是你的 VPN 服务器不在境内)

1. 打开路由 VPN连接成功后, 还需要设置路由, 才能透过VPN访问Internet. 在 linux host 上添加路由:
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth1 -j SNAT –to-source 192.168.12.210
/etc/init.d/iptables save
/etc/init.d/iptables restart
不同的机器,-o eth1 参数可能不一样,具体可输入 ifconfig 查看,搞清 ip(192.168.12.210)所在的网卡号.
同时, 需要将 ip forward 打开. 不要用 echo 1 > /proc/sys/net/ipv4/ip_forward 的方式, 这种方式重启后无效. 先查看一下:
sysctl -a | grep for
#查看结果:
net.ipv4.conf.tun0.mc_forwarding = 0
net.ipv4.conf.tun0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.forwarding = 1
net.ipv4.ip_forward = 1
如果你的主机上列数值不是为1, 则要将其改成1
sysctl -w net.ipv4.ip_forward=1

2. 开启域名服务器
如果你需要访问一些已经被GFW封掉了域名的网站, 但你的 OpenVPN 服务器没有被封的话,那么你需要在你的主机上开启 name server, 并将 dns push 给 client。 一般的独立主机, 都带有 private dns server.
rpm -qa | grep bind
/etc/init.d/named start
另外, 必须保证 server.conf 配置中, 有这三个配置:
push “dhcp-option DNS 10.8.0.1″
push “dhcp-option DNS 202.106.0.20 ” # name server 地址
push “dhcp-option DNS 192.168.12.209″ # name server 地址
当 client 连接成功后, 在 cmd 下执行 ipconfig /all, 应该有这类似这样的输出:
Ethernet adapter 本地连接 4:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : TAP-Win32 Adapter V9
Physical Address. . . . . . . . . : 00-FF-92-1A-D0-D8
Dhcp Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.0.0.2
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . :
DHCP Server . . . . . . . . . . . : 10.0.0.0
DNS Servers . . . . . . . . . . . : 10.8.0.1
202.106.0.20
192.168.12.209
Lease Obtained. . . . . . . . . . : 2009年10月12日 星期一 13:56:56
Lease Expires . . . . . . . . . . : 2010年10月12日 星期二 13:56:56

六. 设置 OpenVPN 服务器 reboot后自动启动 openvpn
vi /etc/rc.local
然后在最后面加入此行:
/usr/local/sbin/openvpn –config /usr/local/etc/server.conf > /dev/null 2>&1 &

相关文章:

  1. 利用OpenVPN和Squid建立自己的VPN和代理服务器
  2. 在基于OpenVZ的VPS上安装OpenVPN
  3. 如何确认OpenVZ VPS中的TUN/TAP设备已正确配置
  4. OpenVPN服务自动设置客户端路由表
  5. OpenVPN的DNS设置