Posts Tagged ‘openvpn’

Windows 7(64位)的OpenVPN Client问题

Saturday, July 10th, 2010

由于Windows 7(64位)对第三方驱动需要签名,所以TAP-Win32 Adapter在没有签名的情况下无法使用。只有在OpenVPN的站点下载最新的2.1版本才能解决这个问题,我使用的是2.1_rc22这个版本,64位Windows 7下测试通过。安装完成后TAP-Win32 Adapter的版本变为V9(以前是V8),由OpenVPN Inc.签发的驱动。
下载地址:http://www.openvpn.net/release/openvpn-2.1_rc22-install.exe

Snow Leopard OpenVPN 客户端 – Viscosity

Friday, March 5th, 2010

在Mac OS(Snow Leopard)上一直在用Tunnelblick做为OpenVPN的客户端,但最新版本的客户端总是时不时的断掉,而且还不能删除已经添加的DNS记录,无奈另装了一个Viscosity的客户端。这个客户端是付费的,价格是9美金。

感觉Viscosity有2点做的比较好,一个是可以导入Tunnelblick的配置文件,另一个是有图形化的状态面板,可以直到当前连接的情况,分配的客户端和使用的流量。

Viscosity Screenshot

CentOS VPS 安装 OpenVPN

Wednesday, February 3rd, 2010

最近频繁在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….

photonvps.com VPS 试用手记

Friday, January 15th, 2010

前几天说要体验使用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。

在Gentoo安装OpenVPN Server

Wednesday, January 6th, 2010

以前的一篇关于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有关的选项都编译进去。

Ubuntu Server 安装 OpenVPN Server

Wednesday, January 6th, 2010

本来想写一篇在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上安装使用OpenVPN

Wednesday, December 16th, 2009

在虚拟机上安装了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。

在gentoo下使用openvpn client遇到kernel不支持TUN/TAP

Friday, October 23rd, 2009

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