您的位置: Zeddicus Blog pptp

RasHost之Centos+PPTP+Freeradius+Mysql全自动VPN配置

  首先,必须感谢 RasHost 的客服们,在这几天里面,帮我Rebuild了无数次。
  其次,我还必须感谢 badb0y 大侠,在我配置VPS的过程中,给予我许多帮助。
  本文只能说是一篇文章,而并不是所谓的“教程”,因为本文讲述的,完全是这几天,我总结的经验教训。本文的主要内容是,在Centos上,使用 badb0y 大侠的AutoVPN一键安装包,配置基于PPTP的VPN。需要注意的是,由于每个VPS服务商编译的初始系统都有一些不同之处,所以本文,只适合 RasHost 用户,其他VPS服务商本人并没有测试。

目的:

  在VPS上配置VPN,并使用freeradius进行用户管理。

基础环境:

  1. RasHost 美国VPS-VL256型(128M的内存有点拮据,建议使用256M内存的,机房建议用硅谷数据中心的。)
  2. CentOS 5.3(Final) x86(本测试基于32位CentOS 5.3 Final)

配置步骤:

1.下载 badb0y 大侠的AutoVPN-1.0.0

  这是我无意中发现的一个自动配置方案,由 badb0y 大侠提供,发布页位于Google Code,>>点此进入<<

2.将AutoVPN-1.0.0上传至VPS

  这里的基础条件是您拥有一台自己的VPS,建议大家到 RasHost 购买VL256型,机房选择“硅谷数据中心”。上传方法我不多说了,最方便的方法是把这个安装包下载下来以后,上传到一个网站上去,然后在登录VPS的ssh以后,使用wget获取。当然也可以选择比较麻烦的方法,就是先在VPS上配置个FTP。(其实也可以使用SCP在本地UPLOAD,不过我没试过,在此就不谈了。)

3.解压AutoVPN-1.0.0.tar.gz

  在配置过程中,我把AutoVPN-1.0.0.tar.gz放在我的一个网站上面,然后WGET,保存于/tmp目录。具体操作如下:

cd /tmp
wget http://zhaiweb.com/AutoVPN-1.0.0.tar.gz
tar -zxvf AutoVPN-1.0.0.tar.gz

4.打开autovpn文件

  在第三步,我在/tmp目录解压了AutoVPN-1.0.0.tar.gz,接着,/tmp目录将会出现AutoVPN-1.0.0这个目录,我们进入这个目录,并且编辑autovpn这个文件。具体操作如下:

cd AutoVPN-1.0.0
vim autovpn

对于不熟悉vim的朋友,在这里提醒一下,vim之后,如果要进入编辑模式,要按”i”键。退出的时候,如果要保存退出的话,先按”ESC”,然后按”Shift+:”,然后输入”wq”,回车。

5.编辑autovpn中的默认配置

  来到第120行和121行,将这两行的第一个字符,即”#”号去掉。

  修改第121行的”192.168.10.0/24″,为你需要的IP段。比方说,我喜欢”192.168.0.0/24″,因为我本地网络内网的网段是”10.0.0.0/24″,这两个网段最好别重合~

  修改第121行的”999.999.999.999″,修改成你的VPS的独立IP地址,为外网IP,比方说:211.162.78.2。

  保存退出(先按”ESC”,然后”Shift+:”,最后输入”wq”并回车)

以上两个修改十分重要!必须记住,否则最后配置完毕有可能无法上网!

6.为autovpn提供执行权限

chmod +x autovpn

7.安装需要的库和组件

  RasHost为我们安装的Centos是最简的版本,很纯净,但是AutoVPN安装过程需要编译环境,同时,我们要编译的程序,又需要其他的组件配合,因此我们必须给系统打个补丁。具体操作如下:

  首先,执行:

yum -y install patch make gcc gcc-c++ libtool libtool-libs autoconf libjpeg libjpeg-devel libpng libpng-devel
yum -y install freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel
yum -y install bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5
yum -y install krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap
yum -y install openldap-clients openldap-servers

  其次,在安装完上述组件后,执行:

yum -y install ppp iptables

  此时最好reboot一下(由于我用的是128M的,内存十分拮据,在进行上述操作后,”free -m”一看,内存剩下10M),reboot完毕进入第8步。

8.执行autovpn

cd /tmp/AutoVPN-1.0.0
./autovpn

  此时,脚本会提示你输入”LocalIP”,这个LocalIP就是你VPS的IP地址,跟本文第5步提到的一样,必须完全一样。

  输入完”LocalIP”以后,要输入内网网段,这是分配给连入VPN的每个用户的。如192.168.0.100-200,这里要跟本文第5步相对应。

  输入完毕,提示“Press Any Key to Start”,激动人心的时刻到来,直接回车,安装开始!

9.安装完毕,保存iptables设置

service iptables save

10.重启VPS

  重启后,执行/start.sh脚本:

./start.sh

  此时可以使用默认的admin/admin123账户密码登入你的VPN了!

11.上传AutoVPN附带的WEB管理客户端到任意支持PHP的主机

  AutoVPN附带了一个WEB管理客户端,可以在线添加、删除用户,或者修改密码等,详细情况请参考AutoVPN压缩包内的帮助文件。

  最后,再次感谢 RasHost 的客服!并推荐各位使用 RasHost 的VPS服务!

点此:通过我的推荐链接访问 RasHost 并购买相关产品(我将得到5%的提成)

点此:直接访问 RasHost (不给我提成)

Debian中设置开机自动执行指令

  我在《架设属于自己的VPN》中提到:

在执行/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE后,必须执行:sysctl -p,否则转发不生效。

  在使用过程中,我发现,倘若重启了VPS,就必须再次执行上述指令,否则重启后依然无法正常使用VPN。而有时候,因为某些原因,我必须重启VPS,因此,在实际使用过程中,每次重启都必须执行这些指令(这是我的情况,不知道其他使用者怎样。),显得有点麻烦。因此,我们可以通过编辑脚本,让linux在启动时自动执行该指令。

  首先创建一个脚本:

  1. cd /etc/init.d/
  2. vi setiptables.local
cd /etc/init.d/
vi setiptables.local

  在脚本中输入上述两条指令(要以#!/bin/sh开头):

  1. #!/bin/sh
  2. /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
  3. sysctl -p
#!/bin/sh
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
sysctl -p

  接着,保存该文件并退出编辑模式,并给予该文件可执行的权限。

  1. chmod +x /etc/init.d/setiptables.local
chmod +x /etc/init.d/setiptables.local

  接着,让脚本自动运行,并创建链接。

  1. update-rc.d setiptables.local start 98 2 3 4 5 .
  2. mkdir /etc/rc.d/
  3. ln -s /etc/init.d/setiptables.local /etc/rc.d/rc.local
update-rc.d setiptables.local start 98 2 3 4 5 .
mkdir /etc/rc.d/
ln -s /etc/init.d/setiptables.local /etc/rc.d/rc.local

  这样,每次重启,便会自动执行了。本例中使用的是Debian 5.0 x64