文档章节

使用PPTP配置Linux上的VPN服务器

庆沉
 庆沉
发布于 2015/06/24 14:47
字数 1216
阅读 1071
收藏 0

PPTP是一个比较简单的VPN构建方式,但是很难找到比较全的说明文档。因此,记录一篇说明文档,详细记录架设VPN服务器以及总结一些其他比较容易遇到的问题。

安装PPTP
基本上安装pptp是比较简单的了,比如在我的CentOS6.4 x64上,只需要两个命令:

rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum -y install pptpd

如果是Ubuntu的话,更加简单了:

apt-get install pptpd

配置IP地址
基本上程序的安装是全自动完成的了,下面需要进行一些简单的配置,编辑/etc/pptpd.conf ,在最后加入IP地址配置:

localip 10.0.0.1
remoteip 10.0.0.100-200

上面的IP地址是可以随便填的,ABC三类的内网地址都可以,主要兼顾其他地方的IP配置,不要出现IP冲突就可以了,后面的remoteip,默认从第一个10.0.0.100开始分配给客户,localip表示分配给服务器的内部网关地址。

localip是VPN连接成功后,VPN server(就是你启动pptpd服务)的地址
remoteip是指可分配给VPN client的地址或地址段
比如我设置:
localip 192.168.220.1
remoteip 192.168.220.100-103
VPN连接成功后,在我的mac上使用ifconfig命令可以看到:
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1444
    inet 192.168.220.100 --> 192.168.220.1 netmask 0xffffff00
这个时候你可以使用192.168.220.1来找到VPN server,比如可以用ssh登录上去。
需要注意的是:remoteip最好不用和VPN client本身所在的局域网的ip冲突。

配置客户端DNS
要配置客户端的dns,首先要确定配置文件,查看/etc/pptpd.conf中指定的option文件,如果没有指定,那就默认是 /etc/ppp/pptpd-options,下面是我的默认配置文件,因此要修改/etc/ppp/pptpd-options.pptpd
options.pptpd
在配置文件中加上:

ms-dns 202.96.128.86
ms-dns 202.96.128.166

这里配置成客户端所在地的DNS就好了。

配置VPN账号
然后是创建VPN的账号,账号保存在/etc/ppp/chap-secrets,我们打开编辑这个文件,按下面的格式加入自己的账号以及密码,依次为:账号,协议,密码,ip地址。

chap-secret

这里的ip地址如果明文表示静态分配,如果填*就表示动态分配。

启动服务
配置完毕,可以启动服务并且加入启动项了

service pptpd restart
chkconfig pptpd on

查看一下服务器是否在1723上面监听了pptp status

 配置系统转发
现在的VPN服务可以连上,但是不能通过VPN服务器进行转发,也就是不能够上网或者访问其他服务器等,需要开启系统转发和NAT。编辑系统配置文件/etc/sysctl.conf,设置如下值为1

net.ipv4.ip_forward = 1

如果未来ipv6普及了,估计应该就是改ipv6了,修改完毕之后要马上生效,使用命令

sysctl -p

配置防火墙转发

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to 115.115.115.115

其中第一种比较简单,自动伪装ip,第二种的10.0.0.0/24指的是VPN虚拟内网,而115.115.115.115代表外网地址,进行NAT。如果VPN服务器是用来代理上网的,仅有上面的配置会出现访问网站缓慢的情况,需要手动修改一下转发包的mss

iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --set-mss 1356

这样就不会出现打不开网页的问题了,最后可以保存一下防火墙。

iptables-save

常见的问题
619错误
很多人在拨VPN的时候卡在验证用户名和密码,然后会出现619的错误,这种错误90%以上是由于客户端到服务器的网络中有设备不支持GRE协议或 NAT-T造成的,最常见的是由于客户端的路由器等不支持造成的,在更换以后立马能拨上VPN。而这种错误在服务端的日志也有体现。例如

LCP: timeout sending Config-Requests

下面是双方加解密不一致的:

LCP terminated by peer (^O^XH-^@<M-Mt^@^@^@^@)

pptp需要用到的端口
pptp使用到的端口只有一个,那就是1723,网上有很多误人子弟的文章还说要开47端口,真是坑爹,因为GRE协议号是47,并不代表需要开47端 口,因此如果是要映射端口的话,1723就完全够了,不要信网上的某些教程,如果使用了iptable来作为防火墙,需要加入规则

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p 47 -j ACCEPT

如果是在内网中,需要网关转发,那么网关需要如下配置:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1723 -j DNAT --to SERVER_IP

iptables -t nat -A PREROUTING -i eth0 -p 47 -j DNAT --to SERVER_IP


© 著作权归作者所有

共有 人打赏支持
庆沉
粉丝 36
博文 405
码字总数 140470
作品 0
深圳
运维
私信 提问
阿里云Centos7.4安装vpn(pptp)服务器

阿里云Centos7.4安装vpn(pptp)服务器 2018-11-23 23:11:25 虚拟机 PPTP, VPM, 虚拟机 阅读(25) 评论(0) 前言 vpn服务器搭建,由于调用的一些接口服务加入了白名单,本地ip是每天变化的,所以...

linjin200
01/27
0
0
在Ubuntu中配置可供Windows主机访问的VPN服务器

在Ubuntu中配置可供Windows主机访问的VPN服务器 [日期:2010-01-15] 来源:xiaogaozi.blogspot.com 作者:xiaogaozi [字体:大 中 小] VPN (Virtual Private Network, 虚拟专用网) 是一种在现...

雕栏玉砌
2014/04/06
0
0
ubuntu环境下VPN服务器的配置

http://hi.baidu.com/isno/blog/item/6b740e2444c45e35c9955954.html 这里用的是Poptop,一个Linux下开源的PPTP服务器产品(http://www.poptop.org) 特性: 微软兼容的认证和加密(MSCHAPv2,...

长平狐
2012/10/16
4.9K
0
搭建Linode的 Vps pptp Vpn 服务

Linode 口碑还是不错的。只不过价格有点小贵。20刀每月,只能用信用卡支付!。不过一分钱一分货,用起来速度妥妥的 下面介绍下在Mac 下搭建Linode 的VPN 服务 首先得注册一个Linode 账号。。如...

求学ing
2014/09/15
0
0
linux-阿里云ECS部署PPTP(centos)

linux-阿里云ECS部署PPTP(centos) 请参考以下步骤:(centos6.5中测试通过) 1、服务器端安装软件 1.1 首先安装ppp,命令: [root@test ~]#yum install -y ppp 提示Complete! ,表示安装成功...

linjin200
01/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

单点登录实现原理(SSO)

简介 单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源,若用户在某个应用系统中进行注销登录,所有的应用系统都不能再直接访问保护资源,像一些...

echojson
10分钟前
0
0
介绍Python中6个序列的内置类型

1、Python中6个序列的内置类型分别是什么? Python包含6中内建的序列,即列表、元组、字符串、Unicode字符串、buffer对象和 xrange 对象。序列通用的操作包括:索引、长度、组合(序列相加)...

问题终结者
30分钟前
0
0
用python自制微信机器人,定时发送天气预报

0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己。最近无意中发现了wxpy库,用它来做再合适不过了...

上海小胖
48分钟前
7
0
深入理解java虚拟机-垃圾收集器与内存分配策略

垃圾收集器与内存分配策略 引用计数法 就是给对象添加一个计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1,计数器为0的对象就是不可能再被使用的。 缺点:无法...

须臾之余
今天
8
0
Python+Appium自动化测试环境搭建

1.Android SDK 下载SDK并配置系统环境变量ANDROID_HOME。 2.Appium 2.1 直接下载安装 官网下载安装appium-desktop-setup.exe。 2.2 通过npm下载安装 appium本质是一个nodejs库所以要先安装n...

维他ViTa
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部