February 3, 2010, 9:24 pm
最近频繁在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的命令。
剩下的配置文件和别的一样,启动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….
January 6, 2010, 2:43 pm
以前的一篇关于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的命令:
到/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有关的选项都编译进去。
January 6, 2010, 2:17 pm
本来想写一篇在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系统下就需要编译内核的一些选项了。
October 23, 2009, 8:39 am
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