ubuntu 16.04 搭建pptpd vpn服务器

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/pptpd-vpn-on-ubuntu/

背景

正常人的上网始于花钱买宽带,而非正常人,比如程序员的上网始于自力更生。

  • 我们的内网机器经常不能上网,又没有IT部门的人帮忙,只好自己装个vpn,把流量转发到可以上网的机器上;
  • 内网上的服务器不想暴露在公网上,如公司的oa系统,那么在外出差的人怎么办? 搭建一个vpn服务器,满足随时随地常回家看看的需求。

要求

搭建vpn服务器的,一般都是在Linux系统上,推荐Ubuntu 16.04.

步骤

安装PPTPD服务

sudo apt-get update
sudo apt-get install pptpd

配置pptpd.conf

sudo vim /etc/pptpd.conf
#确保如下选项的配置
option /etc/ppp/pptpd-option                    #指定PPP选项文件的位置
debug                                           #启用调试模式
localip 192.168.0.1                             #VPN服务器的虚拟ip
remoteip 192.168.0.200-238,192.168.0.245        #分配给VPN客户端的虚拟ip

配置PPP

sudo vim /etc/ppp/pptpd-options
#确保如下选项的配置
name pptpd                      #pptpd服务的名称
refuse-pap                      #拒绝pap身份认证模式
refuse-chap                     #拒绝chap身份认证模式
refuse-mschap                   #拒绝mschap身份认证模式
require-mschap-v2               #允许mschap-v2身份认证模式
require-mppe-128                #允许mppe 128位加密身份认证模式
ms-dns 8.8.8.8                  #使用Google DNS
ms-dns 8.8.4.4                  #使用Google DNS
proxyarp                        #arp代理
debug                           #调试模式
dump                            #服务启动时打印出所有配置信息
lock                            #锁定TTY设备
nobsdcomp                       #禁用BSD压缩模式
logfile /var/log/pptpd.log      #输出日志文件位置

添加用户

sudo vim /etc/ppp/chap-secrets
#格式:用户名   服务类型   密码   分配的ip地址
test    *    1234    *
#第一个*代表服务可以是PPTPD也可以是L2TPD,第二个*代表随机分配ip

重启PPTPD服务

sudo service pptpd restart

配置网络和路由规则 转发ipv4

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sysctl -p

设置iptables NAT转发

#注意这里wlp4s0b1代表你的外网网卡,请用ifconfig查看或者咨询网络管理员
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o wlp4s0b1 -j MASQUERADE

配置MTU,可以转发大数据包,提高网速

sudo iptables -I FORWARD -s 192.168.0.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1300

注意:经实测,配置完iptables NAT转发之后手机可以上网,但是电脑不能。配置完MTU之后,电脑手机都可以上网。

我的测试条件:

  • 手机:nubia z9 max(NX512J), Android 5.1.1, QQ浏览器
  • 电脑:联想小新锐7000,win10, chrome浏览器 客户主机配置:

按照正常流程设置VPN即可,服务器地址填写服务主机所在的校园网地址。

TroubleShooting:

如果VPN连接出错,可能是防火墙问题,关掉防火墙

sudo ufw disable

可以参考官方pptp说明排除问题。

或者参考这里允许1723端口以及其他可能需要开放的端口。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小闫笔记

crontab定时执行python脚本不成功解决方案

Learn the rules like a pro, so you can break them like an artist.

14920
来自专栏LAMPer 技术栈

蓝默空间のLvBlog-1.1.2.20191030_release开源啦~

The LvBlog Application is open-source software licensed under the MIT license.

10620
来自专栏中科院渣渣博肆僧一枚

Linux xargs 命令

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读...

6210
来自专栏中科院渣渣博肆僧一枚

numpy.logical_or

numpy.logical_or(x1, x2, /, out=None, *, where=True, casting='same_kind', order=...

8540
来自专栏PHP专享栏

thinkphp执行计划任务crontab

tp5.1中的php 计划任务的实现,本质上可以分为两种第一种封装在框架内部,在crontab -e中只要添加一条,然后在框架内去扩展内容就好了(Laravel...

11320
来自专栏eguid开源技术分享

mybatis批量增、删、改(更新)操作oracle和mysql批量写法小记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

21230
来自专栏C/C++基础

Linux 命令(82)—— chgrp 命令

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

7910
来自专栏C/C++基础

Linux 命令(81)—— chmod 命令

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

6810
来自专栏Java架构师历程

Nginx多个子域名映射到不同的端口或 ip

我决定采用采用 子域名区分服务 的方式,然后使用 nginx 做反向代理,分发到不同的端口。

24810
来自专栏中科院渣渣博肆僧一枚

numpy.logical_and()

numpy.logical_and(x1, x2, /, out=None, *, where=True, casting='same_kind', order...

4730

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励