Debian/Ubuntu上的openvpn搭建

今天总算是把OpenVPN配置好了。在diahostingmyhost123测试通过。
因为之前用的iptables规则不正确,所以一直能连接到VPN但无法访问外部网络,于是就记录一下吧.

系统有现成的包,直接安装:

$ apt-get -y install openvpn

复制配置文件和生成证书的工具

$ cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
$ cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ cd /etc/openvpn
$ gzip -d server.conf.gz
$ cd easy-rsa/2.0/

准备生成证书,如果不需要指定证书的信息,可以跳过编辑vars文件的步骤

$ vi vars
$ . ./vars
$ ./clean-all

生成ca证书,可以一路回车

$ ./build-ca

下面生成服务器和客户端的证书,每次生成到最后有2个提问必须回答y,才能真正生成证书,如果一路按回车,到最后可能发现一个空证书

$ ./build-key-server server
$ ./build-key client1

再生成一个DH PARAMETERS,OpenVPN的服务器需要这个

$ ./build-dh

OpenVPN所需要的key就生成好了.

$ cd keys
$ cp ca.crt dh1024.pem server.crt server.key /etc/openvpn/

然后就可以直接用工具把/etc/openvpn/easy-rsa/2.0/目录下的ca.crt client1.crt client1.key文件保存到本地,连接的时候要用。win平台下推荐使用winscp
之后就是修改配置文件了.先修改服务器端的/etc/openvpn/server.conf

port 1234 #连接端口
;proto tcp
proto udp #连接方式
;dev tap
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0 #ip分配,不能跟本地冲突
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8" #dns
push "dhcp-option DNS 8.8.4.4"
;duplicate-cn #如果你要多人共用一个证书的话,请开启本项。
keepalive 10 120 #连接测试,意思是10秒ping一次,120秒没有返回就断开重连
comp-lzo #开启压缩传输
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 3

然后需要在服务器端设置iptables,假设我的服务器ip是12.34.56.78

$ iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 12.34.56.78

启动服务器端

$ /etc/init.d/openvpn start

再编辑一个本地的配置文件client.ovpn,大部分信息都跟上面的server.conf对应

client
;dev tap
dev tun
;proto tcp
proto udp
remote 12.34.56.78 1234 #连接ip/域名 端口
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3

然后,下载客户端并安装
我用的是windows的客户端,安装完毕后如果安装目录下没有config和log目录,要手动建立它们
将刚刚保存的ca.crt client1.crt client1.key client.ovpn这几个文件复制到config目录下,运行桌面上的OpenVPN GUI就可以连接了.

如果出现无法连接的错误或者是连接后,不能访问外网的情况,可以尝试一下在服务器端开启一下相应的端口:

#TCP
$ iptables -A INPUT -p tcp --dport 1234 -j ACCEPT
$ iptables -A OUTPUT -p tcp --sport 1234 -j ACCEPT
#UDP
$ iptables -A INPUT -p udp --dport 1234 -j ACCEPT
$ iptables -A OUTPUT -p udp --sport 1234 -j ACCEPT

参考资料:
Linode VPS OpenVPN安装配置教程(基于Debian/Ubuntu)
官方HOWTO

Related Posts

  • Debian/Ubuntu下PPTP一键安装脚本
  • RubyMine 3.0 注册 序列号 破解 下载
  • 解决ubuntu下netbeans字体锯齿化问题
  • Aptana的中文汉化
  • Nginx访问二级目录自动添加反斜杠(/)
  • http://www.chinvo.org chinvo

    Very Cool

  • openvpn跟pptp有啥区别

    • http://parazzi.me Joe

      pptp很多设备都内置支持。openvpn需要特定的连接软件,但是openvpn的穿透力和稳定都比pptp好。
      如果没有什么特殊需求的话,安装pptp就够了。