标签归档:vpn

Linux CentOS 快速安裝 VPN Server (PPTP)

[VPN]是一种常用于中、大型企业或团体与团体间的私人网路的通讯方法。借由VPN所建立的加速通道,可以让你从外部存取公司内部的资源,或透过连线到VPN的Server当跳板,去存取被限制的外部资源(俗称[翻墙]).

在使用VPN之前,你得先有一台提供服务的VNP Server,现在蛮多人回去租用国外的VPS当Server。(遵纪守法是公民的义务)。

以下把握几个中点击快速完成Linux的PPTP的VPN Server架设:

  • PPP – 点对点协定(Point-to-Point Protocol)
  • PPTP – 点对点通道协定 (Point-to-PointTunneling Protocol)
  • iptables – 设定封包转发规则

安装步骤:

1.判断 ppp 是否可用

$ cat /dev/ppp
cat: /dev/ppp: No such device or address

如果出现跟上面一样的讯息【No such device or address】,那不用担心,这表示ppp是可用的,可以正常架设pptp。

如果出现的是【Permission denied】,表示ppp是关闭的,下面的步骤就可以不用再看了。

2.安装ppp与iptables

$ yum -y install ppp iptables
$ cp -rpf /etc/sysconfig/iptables /etc/sysconfig/iptables.pptpsave
$ cd /usr/src

3.请依照你的系统环境下载适合的pptp套件:

# for CentOS 6.x 32bit
$ wget http://here.vixual.net/files/linux/pptpd/pptpd-1.3.4-2.el6.i686.rpm
# for CentOS 6.x x64
$ wget http://here.vixual.net/files/linux/pptpd/pptpd-1.3.4-2.el6.x86_64.rpm
# for CentOS 5.x 32bit
$ wget http://here.vixual.net/files/linux/pptpd/pptpd-1.3.4-2.rhel5.i386.rpm
# for CentOS 6.x x64
$ wget http://here.vixual.net/files/linux/pptpd/pptpd-1.3.4-2.rhel5.x86_64.rpm

上面这些站点如果失效,有可能是更新版本了,请自行google or baidu安装包。

4.安装一个步骤所下载的pptp套件:

$ rpm -ivh pptpd-1.3.4-2.el6.i686.rpm

5.编辑/etc/sysctl.conf,找到

net.ipv4.ip_forward = 0

将后面的 0 改成 1

6.下面的指令全部给他执行下去:

sysctl -p
echo "localip 192.168.240.1" >> /etc/pptpd.conf
echo "remoteip 192.168.240.101-200" >> /etc/pptpd.conf
echo "ms-dns 8.8.8.8" >> /etc/ppp/options.pptpd
echo "ms-dns 8.8.4.4" >> /etc/ppp/options.pptpd
iptables --flush POSTROUTING --table nat
iptables --flush FORWARD
iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.240.0/24 -o eth0 -j MASQUERADE
service iptables save
service pptpd restart
service iptables restart
chkconfig pptpd on
chkconfig iptables on

这样就大功告成了!!!

上面这些质量会创造一个 192.168.240.* 的网段给连上来的 vpn 用户使用,并透过 Server 上的 eth0 转送对外上网的封包(你可以自行将 192.168.240 与 eth0 改成符合你需求的设定)。(有的vps并没有eth0网段,请随机应变,ifconfig自行查找)

加入 VPN 账号

接着我们要加入 VPN 的连线账号。

编辑 /etc/ppp/chap-secrets 以加入 VPN 账号,一个账号一行,格式为:

账号名称  pptpd  密码  *

例如:我要新增一个账号为【vpn】,密码为【test123】,则只要在 /etc/ppp/chap-secrets 加入一行:

vpn pptpd test123 *

加入之后不用重新启动 pptpd,你就可以在 Client 端以 pptp 协定用VPN 连线至这台 Server 了。

连线测试

连线成功后,你可以连到 ip.calm9.com 查看你的是否用 VPN Server 的IP 在上网。

下面这张图的连线咨询是我用我的账号所建立的 VPS, 位置在【美国】:

3747E0D4-2CC1-4F91-A9F1-00449A712566

iptables 规则说明

在上面的指令中,最重要的是这三条 iptables 规则:

iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.240.0/24 -o eth0 -j MASQUERADE

说明 pptp 是以 GRE (Generic Routing Encapsulation)封包透过1723 Port 进行传输,并且设定VPN的网段是由那个网路界面转送对外的封包。

错误处理

807错误

在连接至 VPN 时,如果出现807错误(在您的电脑与 VPN 服务器之间的网路连线已经中断),或是其它在确认账号、密码之前出现的错误,如果确定不是自己电脑的问题,你可以编辑啊Server的 /etc/sysconfig/iptables ,查看这两条规则是否有正确出现在档案里面。

-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -p gre -j ACCEPT

并且,这两条规则的位置不能在任何 【-A INPUT -j REJECT …】 的规则下面。如有这种情形,请把它一到【-A INPUT -J REJECT …】的上方。

储存之后,再重新启动 iptables:

service iptables restart

734错误

在连接至 VPN 时,如果出现734 错误 (已经终止PPP连接控制通讯协定),请修改Windows的VPN安全性设定:

  1. 将资料加密改为【可省略加密】
  2. 勾选【未加密的密码】
  3. 勾选【challenge Handshake 验证通讯协定】

vpn-settings

http://www.vixual.net/blog/archives/32

http://www.dabu.info/centos6-4-structures-pptp-vpn.html