首页 > Linux > VPS上基于Debian搭建和配置OpenVPN

VPS上基于Debian搭建和配置OpenVPN

2011年4月15日 LTNS     访问次数 630 发表评论 阅读评论

前两天买了个廉价vps,openvz的128M的那种,折腾了一下搭建openvpn,现把过程记录下来以备忘。

准备工具:
ssh客户端 Putty,据说还有个中文界面的PieTTY。
sftp客户端 winscp,类似win界面,方便编辑、剪切、复制和粘贴等操作。

购买了vps后供应商会发一份邮件,内有dashboard(面板)的访问地址(http和https的各一,以及对应的登录用户名和密码),还有你的vps固定ip(以及对应的ssh用户名和密码)。登录面板后可查看vps的状态,reinstall OS重装系统(vps预装了centos,我对它不熟悉所以改选debian),修改面板登录密码和ssh登录密码,等等。

reinstall OS后一般需要开通tun权限和iptables NAT功能,找vps供应商的客服开通(我用的这家vps供应商默认已开通NAT,所以只需开通tun权限即可),另,记得登录面板修改一下面板登录密码和ssh登录密码。

1. 先用putty登录vps(固定ip的那个,非访问面板的那个ip地址)的ssh,执行

apt-get update

如有出错提示就用winscp登录vps,检查一下 /etc/apt/sources.list 文件里的源是否如下,不是的话请修改然后保存关闭文件

deb http://ftp.debian.org/debian lenny main contrib non-free
deb http://security.debian.org/debian-security lenny/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

注:原文件里的某行内容如果不想要最好别直接删掉,只需在最左边加一个 # 就可以注释掉不让该行起作用,以便日后恢复

2. 然后putty登录vps后,执行(可以直接复制命令然后到putty里右键粘贴再回车)

apt-get update  #更新一下
apt-get install openvpn  #安装openvpn
cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/  #复制配置文件
cd /etc/openvpn/easy-rsa/2.0  #进入配置目录
source vars  #初始化
./clean-all
 
./build-ca  #生成CA证书,遇到提示问题都可直接回车,用默认参数
./build-key-server server  #生成服务器端证书和密钥,服务端名字server可自定义
    #另,也会提示一些问题,前面都可以直接回车,除最后的两个[y/n]问题需键入Y再回车
./build-dh  #生成Diffie Hellman参数
 
./build-key client  #生成客户端证书和密钥,client名字可自定义,遇到提问同样处理
./build-key client2  #生成另一个客户端的证书和密钥,名字不能和前面的重名

3. 用winscp在vps上新建一个服务端配置文件 /etc/openvpn/server.conf (如之前的服务端名字不是server,这里的文件名必须修改一致),内容如下

local x.x.x.x  #x.x.x.x就是你的vps的ip地址,也是ssh登录的那个ip地址
port xx  #xx是自定义的端口号,官网样例是1194,建议改掉
proto udp
dev tun

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt  #服务端名字必须一致
key /etc/openvpn/easy-rsa/2.0/keys/server.key  #服务端名字必须一致
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

ifconfig-pool-persist ipp.txt
server 10.168.1.0 255.255.255.0  #私有网段可自定义,但勿和客户端已有的冲突
push "redirect-gateway"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

;client-to-client  #是否允许vpn客户端相互可见,我关掉了
;duplicate-cn      #注释掉,不允许多人使用同一证书登录
keepalive 20 60
comp-lzo
;max-clients 50
max-clients 10  #vpn客户端最大数量,请自行修改
persist-key
persist-tun

status openvpn-status.log
log-append openvpn.log  #需定期手动清理该log文件,或者注释掉本行
verb 3
mute 20

注:自定义端口号建议尽量大些,但不要和已开放的端口冲突,可在putty里键入 netstat -ln 命令检查vps上已开放的端口

4. 在winscp上修改 /etc/init.d/openvpn 这个文件,在最上面加入一行

iptables -t nat -A POSTROUTING -s 10.168.0.0/16 -j SNAT --to-source x.x.x.x
#x.x.x.x是你vps的ip

5. 在putty上,执行openvpn的重启
/etc/init.d/openvpn restart

 

到这里,服务器端的工作就算完成了,建议用winscp把 /etc/openvpn/easy-rsa/2.0/ 这个目录备份到电脑上,若以后vps系统重装就无需再执行步骤2里的

./build-ca
./build-key-server server
./build-dh

这三步了,这样客户端也就不用换证书,到时在执行初始化命令之前把备份的目录复制回vps上的 /etc/openvpn/easy-rsa/2.0/ 目录即可。另外, /etc/openvpn/server.conf 这个文件最好也备份一下。

顺便提一下,如vps重启过,如需生成新的客户端CA证书,之前只需在putty里执行一下初始化命令即可

cd /etc/openvpn/easy-rsa/2.0
source vars  #初始化
./build-key client3  #生成client3的证书

 

6. 电脑上下载openvpn客户端  32位 64位

安装完成后,用winscp把vps上的 /etc/openvpn/easy-rsa/2.0/keys 目录下的三个文件

ca.crt
client.crt
client.key #client证书名必须一致

复制到电脑上的 C:\Program Files (x86)\OpenVPN\config 目录下,然后在该目录下新建一个客户端配置文件 client.ovpn (client这个名字必须和证书名一致),内容如下

client #这个不要改,不是client客户端证书名
dev tun

ca ca.crt #如下三行指定了证书和key的位置
cert client.crt #这里的client名就是客户端证书名,必须一致
key client.key #这里的client名就是客户端证书名,必须一致

proto udp
remote x.x.x.x xx #vps的ip地址和端口号,之间有空格
keepalive 20 60
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
#cipher BF-CBC
comp-lzo
verb 3
redirect-gateway
mute 20
route-method exe
route-delay 2

7. 在电脑右下角的任务栏右键点击openvpn的gui图标,点击右键菜单中的客户端证书名就可以登录到vpn服务器了,登录成功后会得到一个10.168.1.x的vpn客户端ip。

8. 其他客户端证书同样处理,需搞齐四个文件

ca.crt
client2.crt
client2.key
client2.ovpn #该文件里面的证书位置和客户端名必须一致

 

补充:
关于客户端证书的注销可见 官网HOWTO

cd /etc/openvpn/easy-rsa/2.0
source vars  #初始化
./revoke-full client3  #注销client3的证书
#应类似如下显示
  Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf
  Revoking Certificate 05.
  Data Base Updated
  Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf
  client3.crt: /C=US/ST=CA/L=SanFrancisco/O=Fort-Funston/CN=client3/emailAddress=me@myhost.mydomain
  error 23 at 0 depth lookup:certificate revoked

校验client3.crt时出现了error 23,表示该证书已注销,然后在服务端配置文件 /etc/openvpn/server.conf 里添加一行

...
crl-verify /etc/openvpn/easy-rsa/2.0/keys/crl.pem
...

注:删除该行,被注销的证书可恢复使用,即,所谓的注销只是通过crl.pem文件中的记录屏蔽证书。

如果有更多的证书需要注销,重复执行 “./revoke-full 证书名” 即可,此次和以往注销的证书都会记录在crl.pem文件中,最后重启OpenVPN服务

/etc/init.d/openvpn restart

 

参考文章
http://www.douban.com/note/97996409
http://www.vpser.net/build/linode-install-openvpn.html

 

分类: Linux 标签: , , , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
12 + 5 = (必填)