Snow Leopard OpenVPN 客户端 – Viscosity
在Mac OS(Snow Leopard)上一直在用Tunnelblick做为OpenVPN的客户端,但最新版本的客户端总是时不时的断掉,而且还不能删除已经添加的DNS记录,无奈另装了一个Viscosity的客户端。这个客户端是付费的,价格是9美金。
感觉Viscosity有2点做的比较好,一个是可以导入Tunnelblick的配置文件,另一个是有图形化的状态面板,可以直到当前连接的情况,分配的客户端和使用的流量。

Open Source、Python、Flex/ActionScritp、Linux、CouchDB和云计算
Posts tagged ‘openvpn’
在Mac OS(Snow Leopard)上一直在用Tunnelblick做为OpenVPN的客户端,但最新版本的客户端总是时不时的断掉,而且还不能删除已经添加的DNS记录,无奈另装了一个Viscosity的客户端。这个客户端是付费的,价格是9美金。
感觉Viscosity有2点做的比较好,一个是可以导入Tunnelblick的配置文件,另一个是有图形化的状态面板,可以直到当前连接的情况,分配的客户端和使用的流量。

最近频繁在CentOS的VPS上安装OpenVPN,安装过程中还是颇有周折。首先是要和客服人员沟通开通TUN/TAP、iptables和NAT。有的VPS只开通iptables却没有NAT的支持,iptables设置postrouting的时候还是会失败。不管你在开通的时候怎么要求,VPS开通的时候还是要提交个ticket来处理这些事情。
默认CentOS的源里面只有很少的软件,需要安装EPEL(Extra Packages for Enterprise Linux),这样源里面的就有openvpn了。
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
然后再执行安装openvpn的命令。
yum install openvpn剩下的配置文件和别的一样,启动iptables的命令是:
#1.2.3.4改成VPS分配的Main IP iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 1.2.3.4
这次要再评论photonvps.com一下,购买的VPS分配的IP被Google误认为是德国的IP,看Youtube的时候总是有些影片受限制,看hulu.com的时候就没有什么问题。跟他们沟通更换IP,最后到另外一台机器上新安装了一个VPS。觉得photonvps.com的服务还是不错,是值得推荐的一家VPS厂商。
—————————————————————————————–
杯具了,新换的IP被Google认为是法国的IP….
前几天说要体验使用VPS,现在就把第一个体验的经历记录一下。第一次购买的对象就是photonvps.com,购买了它最便宜的VPS练练手。每月500G的流量应该够几个人用VPN呢,这个要试一个月才知道。系统的目标是搭建起OpenVPN和一个简易的Web环境。
购买的过程都差不多,这个订单的系统应该是大多数VPS厂商都在用的。在订购的结束有一个电话通知pin code的防欺诈流程。目前这个电话还不支持国内联通的186电话,电信的189电话倒是顺利收到。这个过程在去DMEHosting.com尝试的时候总是说输入错误,最后只得放弃它那个1000G每月流量的VPS。photonvps.com是支持支付宝付款的,而且整个界面有繁体的版本可选,客服都可以用中文交流,这应该对很多人都有吸引力。
开始选的是Gentoo 2008的系统,因为最近工作都在用Gentoo做环境,对各种配置都烂熟于心了,觉得选Gentoo最容易,最后证明这是个错误的决定。第一天晚上购买成功后,第二天中午醒来的时候就收到已经开通VPS的邮件。上去折腾的时候发现是个64位的系统,内核确实是支持TUN/TAP的,但是iptables怎么都不好用。跟客服沟通的结果是这个版本的Gentoo确实有问题,iptables在上面不好用。搜了一下才发现大多数VPS厂商使用的OpenVZ是多个虚拟机共用内核的,你在虚拟机内部是没有办法定制内核的,所以只得换系统了。本想换Ubuntu试试,后觉得客服推荐CentOS肯定是在上面有成功的解决经验,所以还是商定换CentOS。
第三天中午收到开通的邮件后开始折腾CentOS,原来这个是比Gentoo 2008还老的环境。Python的环境是2.4的,网上搜了一下还是决定放弃升级Python的想法。OpenVPN安装的倒是顺利,没有大的问题,只是在安装rails的时候选用rubyworks带来的噩梦。本计划用Nginx+Rails做简单的站点,但是rubyworks安装却不成功,它的script执行失败。只得放弃它,删掉ruby相关的包,从头安装ruby,gem等。安装rails倒是顺利,安装当装thin的时候要求装C++。rubyworks安装的时候会对libstdc++的包进行升级,再安装gcc-c++的时候就会和它冲突,折腾了许久未果,只得提交一个Ticket重装了CentOS。
安装OpenVPN的时候要注意的是执行iptables命令和Gentoo下有点不同:
#1.2.3.4改成VPS的IP地址 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 1.2.3.4
据说如果使用UDP协议的OpenVPN,那绑定的地址应该是VPS分配的主IP地址,否则会有问题。
photonvps.com服务还不错,Ticket相应比较及时,怪不得很多人推荐他们的VPS。
以前的一篇关于OpenVPN在Gentoo上运行需要编译内核的TUN/TAP选项,如果仅仅是使用OpenVPN作为客户端没有什么问题,要用作OpenVPN Server就需要安装iptables,并且编译对iptables支持的新内核。
iptables内核的编译选项在:
Networking options ---> [*] Network packet filtering framework (Netfilter) ---> Core Netfilter Configuration ---> <*> Netfilter connection tracking support -*- Netfilter Xtables support (required for ip_tables)
在这个下面有很多个match support,搞不清楚到底哪个和openvpn有关,所以全部选上。
安装openvpn的命令:
emerge -avt openvpn到/usr/share/openvpn/easy-rsa/目录下制作证书文件,这个过程和在Ubuntu下是一样的,请参考Ubuntu Server下安装OpenVPN Server。将生成好的配置文件拷贝到/etc/openvpn下,余下的设置过程和在Ubuntu上是一样的,只不过配置文件的名字要改为openvpn.conf,这个配置文件的名字是可以通过编辑/etc/init.d/openvpn这个脚本进行修改的。
修改/etc/sysctl.conf文件中的net.ipv4.ip_forward = 0,将0改为1,并用命令sysctl -p让其立即生效。然后执行:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables的命令能否正确执行,检验了内核的编译结果。如果不放心,最好将NAT有关的选项都编译进去。
本来想写一篇在Gentoo下安装OpenVPN Server的文章,可是Gentoo下还没有测试成功,所以先写一篇Ubuntu Server下安装OpenVPN Server。OpenVPN在Linux下作为Server还是Client,就看配置文件怎么写了。
Ubuntu下安装OpenVPN还是那句经典的apt-get:
sudo apt-get install openvpn
配置证书的过程稍微复杂一点,先拷贝/usr/share/doc/openvpn/examples/easy-rsa/2.0目录到/etc/openvpn目录下或者home目录里。修改目录里面的vars文件中的几个配置项:
export KEY_COUNTRY="" export KEY_PROVINCE="" export KEY_CITY="" export KEY_ORG="" export KEY_EMAIL=""
注意:KEY_COUNTRY使用2个大写字母来表示国家。
source ./vars ./clean-all ./build-ca ./build-key-server <servername> ./build-key <clientname> ./build-dh
build-ca是创建根证书,除非是打算重置全部的证书,否则第一次运行完这个命令后就不要再运行了。build-key-server和build-key的命令可以多次运行,最好是为每一个用户做一个client的key。
拷贝示例的server.conf文件到/etc/openvpn目录,进行修改:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz
server.conf文件中对每个选项都有详细的解释,根据自己需要进行修改。下面是一个删除注释的配置文件示例:
#OpenVPN的监听地址 local xxx.xxx.xxx.xxx #OpenVPN的监听端口 port 1194 #使用UDP Server proto udp #使用tun通道 dev tun #相对路径 /etc/openvpn ca ca.crt cert server.crt key server.key dh dh1024.pem #OpenVPN的子网地址 server 10.8.0.0 255.255.255.0 #客户端的Internet访问使用OpenVPN通道 push "redirect-gateway def1" #Windows客户端会使用此DNS地址 push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" #记录客户端分配的ip地址情况,如果OpenVPN服务重启, #客户端重新连接的时候会按照此文件分配原先的地址。 ifconfig-pool-persist ipp.txt #每10秒ping一次,120秒内客户端没有动作就断开连接 keepalive 10 120 #客户端之间可以互相访问 client-to-client #对OpenVPN链接进行压缩,客户端的配置文件必须同时使用 comp-lzo #OpenVPN的用户和用户组 user nobody group nobody #如果user和group的用户和用户组没有访问key的权限 #避免产生权限不足的bug persist-key persist-tun #日志文件 status openvpn-status.log #日志文件的记录级别 verb 3
OpenVPN的安装设置完成,还需要设置数据包转发:
sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
这两个命令如果不执行,OpenVPN的客户端虽然能连接成功,但不能访问Internet。iptables需要内核的支持,如果在Gentoo系统下就需要编译内核的一些选项了。
在虚拟机上安装了Windows 7尝试一下,感觉安全管理确实比以前有了很大的进步。很多程序现在都没有Windows 7的版本,很多都要用兼容Windows XP的模式安装和使用,OpenVPN的Windows客户端就是这样的。安装文件要在属性选择中的兼容性选择Windows XP和以管理员的身份运行,安装好的运行文件也同样选择这两个选项。如果还是不能连接到VPN的网络,需要在配置文件中加入:
route-method exe
route-delay 2这样才能正确的在机器中添加路由,否则会在Log文件中看到类似的信息:
ROUTE: route addition failed using CreateIpForwardEntry: 至少有一个参数不正确。 Route addition via IPAPI failed
这个问题的解决同样适用于Vista。
openvpn会在系统内创建虚拟网卡,但是我默认安装kernel没有设置支持TUN/TAP,所以必须在内核里面重新加入这个模块的支持。
cd /usr/src/linux make menuconfig
在菜单里面选择Device Drivers -> Network device support -> Universal TUN/TAP device driver support 为这个选项选择M。然后保存退出,进行编译:
make && make modules_install
安装openvpn后在/etc/openvpn目录编写你的openvpn.conf文件,下面的例子是个client的示例:
client dev tun proto udp remote my-server-2 1194 resolv-retry infinite nobind persist-key persist-tun ca /etc/openvpn/client/ca.crt cert /etc/openvpn/client/client.crt key /etc/openvpn/client/client.key log /var/log/openvpn/client.log status /var/log/openvpn/client-status.log comp-lzo verb 3