OpenVPN 101 简明教程
本指南仅仅是保证OpenVPN服务能够正常运作起来,并打开Internet转发,文末附送iPhone OS使用OpenVPN简短指南。
安装 OpenVPN
我使用的是系统是GNU/Linux Debian,所以以下安装方式和一些配置文件位置并不能应用在所有Linux系统上,不过既然大家都自己搭VPS了,装个软件包找个配置文件应该不在话下了。
apt-get update
对于Debian来说,这个是每次安装前必做的事情。
apt-get install openvpn udev
除了安装openvpn外,我们还需要添加tun设备,所以装个udev比较方便。
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
OpenVPN包附带的easy-rsa工具可以用于方便的生成密钥,这个步骤只是把工具copy到/etc/openvpn下方便操作。
在生成密钥前,我建议先修改一下vars的默认内容,以便以后每次生成密钥的时候需要重复输入信息。
File: /etc/openvpn/easy-rsa/2.0/vars
export KEY_COUNTRY=”CN”
export KEY_PROVINCE=”Shanghai”
export KEY_CITY=”Shanghai”
export KEY_ORG=”FGFW”
export KEY_EMAIL=”test@test.com”
这些值在每次生成密钥时都会询问,所以预先设置成常用的比较好。话说回来,如果只是为了看看外面的世界,这些内容随便你写什么。
初始化 Public Key Infrastructure (PKI)
cd /etc/openvpn/easy-rsa/2.0/
. vars
. clean-all
. build-ca
这些命令是用来初始化公钥的基本结构。
生成证书和私钥
. build-key-server server
生成服务器私钥,这个时候就会问你一些刚才vars里设置的信息,如果已经在vars里设置过只要一路回车下去就行。其中”password”和”company name”是可选项,个人建议”password”留空,因为像iPhone上面如果使用带有密码的证书会比较麻烦。
. build-key client1
生成客户端使用的证书,”client1″请用自己容易辨识的字符串替代,比如”desktop1″”iphone”之类的。虽然一份证书到处都可以用,不过为了安全期间还是一个用户一份证书比较好。创建用户证书只要重复这条命令就可以了。
生成Diffie Hellman
. build-dh
移动密钥文件到它该去的地方
以上内容命令会生成一大堆证书、密钥之类的文件。位置就在/etc/openvpn/easy-rsa/2.0/keys/目录下。
首先是用户需要的文件,3个:
ca.crt
client1.crt
client1.key
这些文件是复制在客户端使用的,不要多复制其它的,我看有些教程连ca.key都复制出去。
下面这些是服务器用的:5个:
ca.crt
ca.key
dh1024.pem
server.crt
server.key
这些文件需要复制到/etc/openvpn目录。
cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn
撤回证书的操作
. /etc/openvpn/easy-rsa/2.0/vars
. /etc/openvpn/easy-rsa/2.0/revoke-full client1
如果有需要可以随时撤回证书,用以上命令就可以。
配置VPN
cd /usr/share/doc/openvpn/examples/sample-config-files
gunzip -d server.conf.gz
cp server.conf /etc/openvpn/
cp client.conf ~/
Debian下的OpenVPN包带有一些示例的配置文件,我们直接拿来用就好了。把解出来的client.conf一并和客户端的3个密钥分发给用户就行。
client.conf里需要配置的注意以下四条就行:
remote server.com 1194
把”server.com”改成你的服务器域名或者ip地址,1194是openvpn的默认端口,如果有需要请按需更改。
ca ca.crt
cert client1.crt
key client1.key
这个就是指名那3个文件的位置,一般就扔在一个目录里比较方便。
当然config.conf并不是必须的,一些gui客户端都有比较好的向导来填写这些内容。不过如果打算在cli或者类似iPhone OS这样的设备商使用还是写写client.conf比较好。
启动OpenVPN
/etc/init.d/openvpn start
对于Debian来说这样就行了,我唯一赞赏Debian死板的官僚制度部分就是所有的程序、配置文件都在它该在的地方。
正常情况下现在客户端已经能够正常连接到服务器了。
配置OpenVPN实现Internet转发
做完上面那些虽然可以连接到VPN网络,但是并不能访问Internet。所以需要再配置点东西。(要是我教程不写这个估计会被跑过来看的人道毁灭的)
File: /etc/openvpn/server.conf
push “redirect-gateway def1”
一般来说在server.conf里会有这样一条现成的配置,只要去掉前面的分号让它起作用就行了。
File: /etc/sysctl.conf
net.ipv4.ip_forward=1
增加这条来启用转发。
最后增加以下iptables规则:
iptables -A FORWARD -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
如果更改过server.conf中关于ip的配置,请自行更改以上命令。由于这几条命令会把所有的DNS请求都转发给VPN来处理,所以我们还需要安装dnsmasq。
apt-get install dnsmasq
修改/etc/openvpn/server.conf:
push “dhcp-option DNS 10.8.0.1”
重启openvpn服务:
/etc/init.d/openvpn restart
Tip: 如果启动openserver失败,很可能是因为缺少tun设备,用以下命令建立设备:
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
随文附赠:iPhone OS启用OpenVPN支持
- iPhone OS需要越狱。
- 安装tunemu,tunemu有iPhone可以用的deb包,请自行安装。
- 安装Sbsettings中的OpenVPN Toggle。
- 把密钥和配置文件扔到/var/mobile/Library/OpenVpn/
- 把client.conf改名为conf.ovpn
如果你对Linode有兴趣可以用这个地址注册:http://www.linode.com/?r=2423bd4b1aea90e0163241cd71513fe1b81108d3或者在注册的referral code中填2423bd4b1aea90e0163241cd71513fe1b81108d3,大约在三个月后我能得到一些好处,当然你直接跑去注册也没问题,以上链接并不会给你带来更多的优惠(当然也没什么坏处)。我个人在这里提供一个首月返还$10的Promo Code:storecrowd,这个是实在的优惠。
7 Responses to “OpenVPN 101 简明教程”
-
请问下,VPN架好了,客户端也设置好了,也连接成功了,可是为什么没有作用呢?pptp方式的话,如果连接成功,所有网络连接和流量都走pptp了。这个openVPN连接好后貌似没有反应嘛?网络还是走的原有的连接,没有走openVPN呐!试了官方的客户端和gui那个都是一样的结果,难道还需要其他设置?糊涂了……
-
[…] 先按这个教程把系统收拾好,我用的是Ubuntu 10.04 64位,安装OpenVPN参照官方文档的这个,或者Kdolphin的中文教程。一步一步来,没什么问题的。 […]
-
[…] 第一步:按照Linode官方的OpenVPN配置指南(中文版在这里),配置服务器端 […]
-
[…] 第一步:按照Linode官方的OpenVPN配置指南(中文版在这里),配置服务器端 […]
感觉复杂了点。我现在用ssh,有机会学习下vpn的用法。