Dec
7

vps下安装openvpn

个人感觉成功一次后,会觉得同pptp一样简单。 (常见问题见文结尾)

环境: openvz型vps
centos

关键点: 开启TUN/TAP, iptables正确设置

简略步骤:

1. 安装iptables等:

yum install gcc gcc-devel openssl openssl-devel iptables

2. 下载Openvpn和lzo

mkdir /opt/software
          cd /opt/software
          wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
          wget http://openvpn.net/release/openvpn-2.0.9.tar.gz

3. 安装Openvpn和lzo

#cd /opt/software
       #tar -zxvf lzo-2.03.tar.gz
        #cd lzo-2.03
       #./configure
       #make && make install
      #cd ../
     #tar -zxvf openvpn-2.0.9.tar.gz
      #cd openvpn-2.0.9
     #./configure 
     #make && make install

4. 生成CA证书、Server Key和Client Key
1.)初始化参数

#cd /opt/software/openvpn-2.0.9/easy-rsa
#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=GD
#export KEY_CITY=GZ
#export KEY_ORG="xxxx" (设置为自己的)
#export KEY_EMAIL=”xxx@xxx.com”(设置为自己的)

2.)生成CA证书

./clean-all   //这行命令是清空Keys文件夹下的所有文件
./build-ca

接下来的信息你可以自己填写

3)建立Server Key

./build-key-server server

按提示设置填写信息就可以了

4)生成客户端 key

#./build-key client1  //client1为客户用户名,可以随便取

如果要创建多个vpn帐户,则同样如client1一样生成其他客户端证书/key
如: ./build-key client2

关键点: 注意在进入 Common Name (eg, your name or your server’s hostname) []: 的输入时, 每个证书输入的名字必须不同.server以及client证书这个填写要一样

5). 生成Diffie Hellman参数

/build-dh

(如果这里发生错误,请尝试:openssl dhparam -out ./keys/dh1024.pem 1024)

6). 将 keys 下的所有文件打包下载到本地 (主要是里面的客户端证书等)

5. 创建Openvpn vps服务器配置文件(vi /usr/local/etc/server.conf)
(可以复制/opt/software/openvpn-2.0.9/sample-config-files目录下的server.conf 进行修改),可以直接复制下面内容
注意修改:ip、端口、对应目录

local 2.2.2.2 (改为你的VPS IP地址)
port 1194
proto udp
dev tun
ca /opt/software/openvpn-2.0.9/easy-rsa/keys/ca.crt
cert /opt/software/openvpn-2.0.9/easy-rsa/keys/server.crt
key /opt/software/openvpn-2.0.9/easy-rsa/keys/server.key
dh /opt/software/openvpn-2.0.9/easy-rsa/keys/dh1024.pem
server 10.8.0.0 255.255.255.0   //自己设定
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"  //<font color="red">有些资料上是push "redirect-gateway def1 bypass-dhcp",多一个bypass-dhcp时我自己测试是失败的。 此行的作用是通知客户端使用openvpn服务端设置的路由,如果没有的话,客户端不知道走哪个路由</font>
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 208.67.220.220"
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3

6. 启动OpenVPN (注意,后台开启模式)

setsid /usr/local/sbin/openvpn --config /usr/local/etc/server.conf   (加上服务端配置文件启动)
(或者 /usr/local/sbin/openvpn --config /usr/local/etc/server.conf &)

  如果需要开机启动 (vi /etc/rc.local,在最后面加入:
/usr/local/sbin/openvpn –config /usr/local/etc/server.conf &)

7. iptables转发设置
添加转发

iptables -t nat -I POSTROUTING -s 10.8.0.0/16 -j SNAT --to-source [vpsip] (openvz型vps用这个)
(如果是xen型vps,输入这个 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE 其中venet0是vps网卡. 有的文章说openvz也可以用这个,我没有进行测试)

保存规则

/etc/init.d/iptables save

重启iptables生效

/etc/init.d/iptables restart

8. 查看系统有没有实现ip4转发。

sysctl -a | grep for

如果以下是1就行

net.ipv4.ip_forward = 1

如果不是,就用下面命令进行修改

sysctl -w net.ipv4.ip_forward=1

9. Opnevpn windows 客户端安装设置
1)下载安装和服务器端配套的OpenVPN GUI For Windows:(http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe)
并安装。
2)将下载下来的key目录压缩包中的ca.crt client1.key client1.crt文件复制到你的OpenVPN GUI安装路径\OpenVPN\config文件夹下
3)修改client.ovpn
把你的OpenVPN安装路径\OpenVPN\sample-config下的client.ovpn文件复制到你的OpenVPN安装路径\OpenVPN\config文件夹下,用记事本打开client.ovpn

找到remote my-server-1 1194,把my-server-1改成你的VPS IP地址
找到 cert client.crt 把 client.crt改为client1.crt
找到 key client.key 把 client.key 改为 client1.key

4.) 双击 client.ovpn 即可启动 openvpn, 或者通过 OpenVPN 的控制启动 VPN

5)出现 Initialization Sequence Completed 表示成功

常见问题:
1. 如何确定自己的vps是XEN还是openvz
答:一般通过ifconfig命令,看网卡,XEN一般为eth0,而openvz为venet0
2. 如何确定openvz型vps是否开启TUN/TAP
答: 判断tun/tap有没有开启,可以用此命令cat /dev/net/tun,若出现 cat: /dev/net/tun: File descriptor in bad state 说明开启成功

3. 如何通过openvpn服务端设置客户端路由以及常用网站使用原来路由,而不因用了vpn减速。
答:在openvpn的服务端配置文件server.conf中使用push命令。
如:push "redirect-gateway def1" 告诉客户端使用服务端作为路由
push "dhcp-option DNS 8.8.8.8" 设置客户端的dns服务器
高级的可以用 push “route 24.0.0.0 255.0.0.0″ 设置此ip段用vpn的路由,而之外的将是用客户端原来线路。

共计 0 条评论

NAME:

required

E-MAIL:

required, will not be published

HOMEPAGE:

CONTENT: