在Linode主机搭建VPN
最近购入了Linode 的VPS ,确实很不错.自己尝试了搭建VPN,这样以后就能自由的上网了.最近把自己搭建Server方面的知识记录下来.
本来OS方面,自己一直用Ubuntu,但是在折腾了好几天后,还是选择了CentOS 5.3.因为稳定性方面还是centos更胜一筹,另外夸一句Linode VPS确实是非常好的VPS,加上他们自己开发的管理后台,很强大,也很实用,提供OS系统也很多,本来选了CentOS5.3 64位的,但发现64位内存使用量确实很高,我这个初级VPS320M的内存还是吃不消,最候选择了32位的.
建立OpenVPN一开始自己摸索了半天,后来发现Linode提供的文档很全,基本涉及了搭建服务器的方方面面,看来得认真看文档啊.
不说废话了,直接上笔记.
1.添加EPL镜像
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
更新系统
yum update
安装openvpn
yum install openvpn
拷贝openvpn的配置工具
cp -R /usr/share/openvpn/easy-rsa/ /etc/openvpn
修改var文件成你的文件
source var ./clean-all ./build-ca
生成服务端的key
./build-key-server server
这里的server可以随便起名字,只要conf文件里指定就可以,随便你起什么,但中文的估计不行,呵呵。
生成客户端的key
./build-key clent1
生成dh文件
./bulid-dh
拷贝server端的key
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn
配置server.conf
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key # This file should be kept secret dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1" push "dhcp-option DNS 你的DNS IP" keepalive 10 120 comp-lzo persist-keypersist-tun status openvpn-status.log verb 3 ;mute 20
编辑 /ec/sysctl.conf 文件 支持ipv4
net.ipv4.ip_forward = 1
添加防火墙验证规则
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
将规则添加进 /etc/rc.local
#!/bin/sh # # [...] # 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 touch /var/lock/subsys/local
安装dnsmasq,不安装的话多人使用VPN可能不行。
yum install dsnamasq
启动dnsmasq
/rubyetc/init.d/dnsmasq start chkconfig dsnsmasq on
启动openvpn服务
/etc/init.d/openvpn start chkconfig openvpn on
配置客户端配置文件
client dev tun proto udp remote 你服务器IP 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 3
wiki:openvpn定义如下
OpenVPN允许参与建立VPN的单点使用共享金鑰,電子證書,或者用户名/密碼来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函式庫。
目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista上运行,並包含了許多安全性的功能。
它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。OpenVPN提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。IANA(Internet Assigned Numbers Authority)指定给OpenVPN的官方端口为1194。OpenVPN 2.0以后版本每个进程可以同时管理数个并发的隧道。
OpenVPN使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISP(Internet service provider)过滤某些特定VPN协议的情况下。
在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。
客户端 win下可以选择openvpn带的OpenVPN GUI for Windows 虽然样子难看点,但很好用
MAC下可以选择Tunnelblick OS X OpenVPN Client 很有趣的软件,连接上VPN后,门就打开了,很像在长城上开了个洞,呵呵,有翻墙的味道哈。

Linode很不错 除了不可避免的线路抽风