你的位置:首页 > 操作系统

[操作系统]banwagong vps 亲手搭建vpn历程


一、检查
1.0 # modprobe ppp-compress-18 && echo ok(用模块方式支持MPPE加密模式浏览,如果内核支持检测不到。)

这条执行执行后,显示“ok”则表明通过,如果显示“Module ppp_mppe not found.”,那我们先手动升级mppe
  1)首先切换到 cd /tmp 目录
  2)下载:wget http://poptop.sourceforge.net/yum/stable/packages/dkms-2.0.17.5-1.noarch.rpm
       wget http://poptop.sourceforge.net/yum/stable/packages/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

         dkms是一个新的软件,能让你在不编译内核的基础上,外挂一些内核的模块。
                  kernel_ppp_mppe就是mppe支持的内核模块了。
  3)安装
       rpm -ivh dkms-2.0.17.5-1.noarch.rpm
       rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

                 以上二个是为CENTOS加载MPPE[MICROSOFT的加密协议] ..不安装的话就不能使用加密连接

  4)如果没有出现错误, gcc is needed by kernel_ppp_mppe-1.0.2-3dkms.noarch,则跳过这一步

      yum -y install gcc gcc-c++

      ps:(rpm的安装方式比较原始,如果依赖的库不存在,就是提示错误;yum的安装方式相对先进,如果依赖的库不存在,就会关连下载安装

         网上有很多用rpm的方式装gcc坑了我不少啊,老师not found such file,不知道我等小白只懂得复制粘贴,我去哪给你找这个file再rpm安装啊)

      成功之后,我们再安装刚才失败的那一步,

      rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

2.0 检查ppp和tun有没有启用

  cat /dev/ppp
  cat /dev/net/tun

显示结果为:

  1. cat: /dev/ppp: No such device or address
  2. cat: /dev/net/tun: File descriptor in bad state 

则通过,否则

你可以给VPS提供商Submit 一个 Ticket请求开通:

  1. Hello   
  2. Could you enabled TUN-TAP for me? I want run pptp-vpn on my VPS.   
  3. Thank you.  

--结束

二、安装ppp和iptables。默认情况下,完整的CentOS是带有这两个组件的,但是精简版的系统可能没有。我们输入下面的命令来确认,如果没有则进行安装,有的话系统不会做任何动作:

  yum install -y ppp iptables  

三、安装pptp。这个软件在yum源里是没有的,我们需要手动下载。我们先切换到tmp目录:

#cd /tmp

然后执行下面的命令来下载pptp安装包:

#wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm (32位系统使用)

#wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm (64位系统使用)

如果你的CentOS是32位的,则执行32位的那条指令;如果是64位的CentOS,则执行64位的那条指令。注意不要搞错了。

接下来安装pptp,同样分32位和64位系统:

#rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm (32位系统使用)

#rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm (64位系统使用)

  1)出现” ppp = 2.4.4 is needed by pptpd-1.3.4-1.rhel5.1.x86_64“的错误

    运行命令,查看ppp版本:yum list installed ppp

结果显示:ppp.x86_64                                                    2.4.5-5.el6 

在网上搜索了一下ppp跟pptp版本的对应关系如下:

  

ppp 2.4.4——————>pptpd 1.3.4

ppp 2.4.5——————>pptpd 1.4.0

也就是说我们之前安装的pptpd1.3.4的版本太低了不行,要1.4.0的才行。

看来只能让电脑自动选择对应的pptpd版本了。

首先先加入yum源:#rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm

然后用yum安装pptpd:

#yum install pptpd

一般电脑都会成功安装pptpd,

结果显示pptpd.x86_64                                               1.4.0-1.el6   

四、修改配置文件

  1.0配置文件/etc/ppp/options.pptpd

    #cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak

先备份一个文件到bak,在再原来的文件上修改

    #vim /etc/ppp/options.pptpd

 

在末尾加入,两行google的dns服务器。

  ms-dns 8.8.8.8
  ms-dns 8.8.4.4

在这里有些朋友会不懂得编辑加入这两行数据,补补编辑的命令吧:

 

1.0 按i可以进入编辑模式(左下角会有--insert--标记),要想结束编辑可以按esc可以进入命令模式,在命令模式下输入 : 进入末行模式 。

2.0 xshell 保存文件常用命令
保存,但不退出 vi
:w

保存并退出 vi
:wq

退出 vi,但不保存更改
:q!

用其他文件名保存
:w filename

在现有文件中保存并覆盖原文件
:w! filename

最好打开这个文件里的debug选项(去掉debug前面的“#”),以方便我们在出错的查看日志排错。错误日志在/var/log/messages里,用命令:cat /var/log/messages | grep pptpd 查看有关PPTP的错误信息

2.配置文件/etc/ppp/chap-secrets

 

  #cp /etc/ppp/chap-secrets   /etc/ppp/chap-secrets.bak
  #vim /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client server secret IP addresses

name pptpd pwd *

格式:用户名+空格+pptpd+密码+*,*表示对任何ip都可以使用这个vpn,记得不要丢了这个星号。

一行表示一个账户密码,可以多行,如果前面自动补了#记得删除#,因为#表示注释。

3.配置文件/etc/pptpd.conf

#cp /etc/pptpd.conf     /etc/pptpd.conf.bak
#vim /etc/pptpd.conf

添加下面两行

localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245 //表示vpn客户端获得ip的范围

 

关键点:1.pptpd.conf这个配置文件必须保证最后是以空行结尾才行,否则会导致启动pptpd服务时,出现“Starting pptpd:”,一直卡着不动的问题,无法启动服务,切记呀!2.这里的IP段设置,将直接影响后面的iptables规则添加命令。

 

4.配置文件/etc/sysctl.conf

#vim /etc/sysctl.conf //修改内核设置,使其支持转发

将net.ipv4.ip_forward = 0 改成 net.ipv4.ip_forward = 1

保存修改后的文件,

并执行下面的命令来生效它:

#sysctl -p

接着又蹦出了下面的错误:(有错误我们一定先解决错误,对吧)

error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
net.netfilter.nf_conntrack_max = 64000
error: permission denied on key 'net.nf_conntrack_max'

又在网上七找八翻的终于找到了,据说是openvz模版的问题(谷歌翻译是这样说的),要进行修复操作, 执行下面四个命令

修复modprobe的:

rm -f /sbin/modprobe
ln -s /bin/true /sbin/modprobe

修复sysctl的:

rm -f /sbin/sysctl
ln -s /bin/true /sbin/sysctl

再次执行 

#sysctl -p

好了,终于没报错了。

五、启动pptp与iptables

1.0 启动pptp 

#service pptpd start

显示ok,表明成功,到这一步我们终于可以连上vpn啦,赶紧测试一下吧(能连接上去,但是还没有网速)

连接提示:

ip:你vps的ip

用户名,密码:刚才在 /etc/ppp/chap-secrets里面设置,忘记了的可以运行一下命令查看

 #vim /etc/ppp/chap-secrets

2.0启动iptables和nat转发功能(很关键的哦!!!!!)

#/sbin/service iptables start //启动iptables

#/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.9.0/24 -j MASQUERADE 或者使用下面的一种:

#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.9.0/24 -j SNAT --to-source 207.210.83.140

//注意:命令中的 "-o eth0"是指定网卡名称,如果是多个网卡,就根据需要将 -o eth0 改成你  -o ethXX (ehtXX是你网卡的名称)   ,可以通过ifconfig 查看有哪那些连通外网的网卡,一般vps都是单网卡的,而且大都网卡默认名都叫eth0  。但是事情总是多样的,所以如果你的上网的网卡不是 叫 eth0  ,那么就必须去掉 -o eth0  。直接让系统判断你用的网卡,所以将上面的命令改成:

iptables -t nat -A POSTROUTING    -s 192.168.9.0/24 -j SNAT --to-source 207.210.83.140

(为什么我的网卡就叫venet0呢!!!所以我决定采用这种方式iptables -t nat -A POSTROUTING    -s 192.168.9.0/24 -j SNAT --to-source 207.210.83.140)

接着

#/etc/init.d/iptables save //保存iptables的转发规则

#/sbin/service iptables restart //重新启动iptables

最后一步:重启pptp vpn

#service pptpd restart

如果你走到了这一步恭喜你,vpn已经配置成功啦,赶紧上Google测试一下吧。

另外:可以设置pptp vpn 开机启动

有的人懒的重启后手动开启服务,所以下面我再补上开机自动启动pptp vpn 和 iptables的命令

#chkconfig pptpd on //开机启动pptp vpn服务

#chkconfig iptables on //开机启动iptables

 

 

 

最后感谢@大步:http://www.dabu.info/centos6-4-structures-pptp-vpn.html

    @逍遥:http://blog.xaoyo.net/post/359/