Posts Tagged ‘iptables’

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有关的选项都编译进去。