今天蛋疼,发现以前PPTP的VPN不能用了,于是呼自己想OPENVPN来试试!GOOGLE了一翻之后开始动手,大致步骤也挺简单的.
1.kernel 需要支持 tun 设备, 需要加载 iptables 模块.
检查 tun 是否安装:
modinfo tun filename: /lib/modules/2.6.32-279.el6.i686/kernel/drivers/net/tun.ko alias: char-major-10-200 license: GPL author: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> description: Universal TUN/TAP device driver srcversion: 5A72C0DB4EBDF9E4B1D5016 depends: vermagic: 2.6.32-279.el6.i686 SMP mod_unload modversions 686
估计是支持了...( 这个第一步抄的网上的。结果输出的是俺VPS上的. )
2.安装一些依赖包
yum install iptables openssl lzo pam openssl-devel lzo-devel pam-devel
如果你是rpm安装,后面的三个开发包可以不用安装,这儿我们编译安装。。。。
3.下载openvpn的源码
从http://openvpn.net/index.php/open-source/downloads.html下载。国内打不开,你懂的,我下载了一个tar.gz包在VPS上,2.2.2的,自己有办法从官网下就下载,没有可以暂时用我这个连接,不要外传哟!!
wget http://d.lvtao.net/linux/lib/openvpn-2.2.2.tar.gz
当前的目录是/root/懒得动....(^_^)
4.安装openvpn
tar zxvf openvpn-2.2.2.tar.gz cd openvpn-2.2.2 ./configure make && make install
说明一下,有些人这步还提示错误,如果你要是安装的centos6.3 mini版,请记得安装gcc 和 make
yum install gcc make
至于原因,不解释
4.制作证书
先把easy-rsa拷贝到/etc/openvpn下
mkdir –p /etc/openvpn cp -R easy-rsa /etc/openvpn cd /etc/openvpn/easy-rsa/2.0
用自己熟悉的编辑工具打开vars文件,根据实际情况修改以下几个变量:
export KEY_COUNTRY=”CN” export KEY_PROVINCE=”CA” export KEY_CITY=”BJ” export KEY_ORG=”MY_ORG” export KEY_EMAIL="admin@lvtao.net"
什么意思,我们第二页介绍
配置openssl,根据系统所安装的openssl版本,把对应的openssl-version.cnf文件拷贝一份,目标文件名为openssl.cnf,或建个文件链接
查看版本
rpm -q openssl openssl-1.0.0-25.el6_3.1.i686 cp openssl-1.0.0.cnf openssl.cnf
然后执行以下命令 . ./vars 前有两个点,且中间有一个空格
. ./vars ./clean-all ./build-ca
一路按回车就可以
ls keys
看是否生成了一些文件
ca.crt ca.key index.txt serial
生成server key
./build-key-server ttvps 这里的ttvps是指定的名字标签,如果没指定,执行过程中会提示输入
一路回车到
Sign the certificate? [y/n]:y [这儿请y]
1 out of 1 certificate requests certified, commit? [y/n]y [这儿也请y]
生成client端key
./build-key client1 其中client1是客户端的名字,如果有多个客户端,就需要生成多个key
一路回车到
Sign the certificate? [y/n]:y [这儿请y]
1 out of 1 certificate requests certified, commit? [y/n]y [这儿也请y]
生成Diffie Hellman参数 这一步在服务端需要,可能耗时比较长:
#./build-dh
到目前,我们已经建立了完整的密钥和证书文件,在keys目录下
将服务端证书拷到/etc/openvpn/目录下
cd keys cp ca.crt ca.key ttvps.crt ttvps.key dh1024.pem /etc/openvpn/
将客户端文件打包或直接下载本地
ca.crt ca.key client1.crt client1.csr client1.key
以便客户端vpn
5.配置服务端
拷贝配置文件
cp /root/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/openvpn.conf
第二页介绍参数的大概意思.
port 1194 proto tcp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/ttvps.crt key /etc/openvpn/ttvps.key dh /etc/openvpn/dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" push "route 172.16.0.0 255.255.255.0" client-to-client keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 4 script-security 3
编辑
/etc/sysctl.conf
找到net.ipv4.ip_forward = 0 改成net.ipv4.ip_forward = 1保存
然后执行
sysctl -p
添加路由规则:172.16.0.65为你的服务器IP
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 172.16.0.65
或者
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
这样也可以
#iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
开放openvpn端口:
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT
保存iptables规则并重启服务
/etc/init.d/iptables save /etc/init.d/iptables restart
启动openvpn
/usr/local/sbin/openvpn --daemon --config /etc/openvpn/openvpn.conf
使用netstat -ln 查看1194openvpn的端口是否已经起来
6.客户端
将下载的5个文件拷贝到OpenVPNconfig目录下.然后新建一个文件 client1.ovpn 内容如下.其中*.*.*.* 为你的服务器IP
client dev tun proto tcp remote *.*.*.* 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key ns-cert-type server comp-lzo verb 4 route-method exe route-delay 2
然后连接即可!
我在第一次安装使用的时候,遇到过几个问题,第一个是不能正常连接到openvpn服务端,经核查是因为服务端的iptables 设置问题
然后就是连接上了,不能访问facebook youtue 等一些GFW屏蔽的网站,这个原因比较多,我所遇到的是 server端没有设置
push "dhcp-option DNS 8.8.8.8" push "redirect-gateway def1 bypass-dhcp"
vars文件,要修改的各项属性:
export KEY_COUNTRY="CN" #国家 export KEY_PROVINCE="SH" #省份 export KEY_CITY="shanghai" #城市 export KEY_ORG="ttvps.net" #组织 export KEY_EMAIL="admin@lvtao.net" #邮件地址 export KEY_EMAIL=sale@ttvps.net#可以不做修改 openvpn.conf文件配置中 push "redirect-gateway def1 bypass-dhcp" #在客户端添加默认路由到vpn服务器 push "dhcp-option DNS 8.8.8.8" #为客户端分配dns服务器 proto tcp #将默认的udp改为tcp user xxx #创建运行openvpn守护进程的用户 group xxx #组 ca /etc/openvpn/xxx.crt #指定ca、cert(服务器证书)、key(服务器私钥)、dh文件的详细路径 最后加上 script-security 3
我在本地客户端使用的是NetVPN绿色版的!
openvpn配置文件
使用的端口,默认1194
使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议
ca:使用build-ca生成的,用于验证客户是证书是否合法
cert:使用build-key-server,Server使用的证书对应的key,注意安全,防止被盗
dh:生成的加密文件
通过VPN Server往Client push路由,client通过pull指令获得Server push的所有选项并应用
可以让客户端之间相互访问直接通过openvpn程序转发
如果Client使用的CA的Common Name有重复了,或者说客户都使用相同的CA #和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN
对数据进行压缩
定义用户
openvpn状态log
每次重新启动openvpn后保留原有的log信息,新信息追加到文件最后
/usr/local/sbin/openvpn --daemon --config /etc/openvpn/openvpn.conf
使用netstat -ln 查看1194openvpn的端口是否已经起来
暂无评论
写评论