树莓派使用pptpd搭建PPTP服务器

1 需求及环境

学校的教务管理系统需要宿舍内网才能登录,使用外网无法访问。
打算把树莓派部署在宿舍并搭建一个VPN服务器供我连接以便访问教务管理系统。

树莓派通过有线连接到宿舍路由器,路由器拨号访问网络。


2 必要软件安装

我们需要用到ppp pptpd这2个软件

sudo apt-get install ppp
sudo apt-get install pptpd

3 配置pptpd

3.1 设置ppp连接的ip

编辑文件/etc/pptpd.conf,在文件末尾添加:

localip 192.168.1.100
remoteip 192.168.1.101-120

localip表示服务器在客户端处的ip
remoteip表示给客户端分配的ip段
此处建议ip段与树莓派所在的内网ip段相同,但是ip地址不要有任何冲突。

3.2 设置DNS及WINS

编辑文件/etc/ppp/pptpd-options,在文件末尾添加:

ms-dns 192.168.1.1
ms-wins 192.168.1.100

ms-dns表示vpn连接内的dns地址,此处应该填写路由器的内网地址
ms-wins表示要在网上邻居中显示的设备的ip,此处我填写了树莓派的ip


4 配置ppp

4.1 设置VPN的连接凭证

编辑文件/etc/ppp/chap-secrets,添加用户,一行一个:

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
用户名 * 密码 *

至此VPN已经可以连接了,但是只能访问内网。如果需要访问internet,则需要继续配置转发规则。


5 启用ip转发

编辑文件/etc/sysctl.conf,去掉下面语句前的#

net.ipv4.ip_forward=1

执行

sudo sysctl -p

使修改生效。

现在VPN已经可以正常连接,但是部分网站无法正常访问。


6 修改默认MTU

通过ifconfig可以看到,因为与peer协商出来的MTU值为1396,我们需要将MTU的值设置为1496才能顺利访问所有网站。
网上搜索到的修改MTU的方法有这两种:
1.通过iptables设置防火墙规则。
2.通过编辑ip-up相关文件实现有新连接后自动执行ifconfig指定MTU。
虽然这两种方法可行,但却是间接实现,考虑应该可以直接通过ppp配置文件来指定MTU,果然找到了办法。
编辑文件/etc/ppp/options,在文件中的相应位置或者直接在文件末尾添加:

-mru
mru 1496

第一句的意思是关闭与另一方的MRU协商,不写这句话则第二句话无效(最终MTU值会被协商结果覆盖)
第二句的意思是设置默认MRU值为1496,不写这句话则默认MRU值1500
再次执行ifconfig命令,可以看到MTU已变为1496,所有网站也已能正常访问。


7 重启pptpd

sudo service pptpd restart

大功告成,我们的VPN即可正常使用。


8 iptables设置(其他环境)

在VPS上用上述方法搭建后能连接成功却不能正常访问网络,需要配置iptables,运行下面的命令:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

由于VPS网卡的ip地址是内网地址,该命令的作用是通过MASQUERADE地址伪装进行POSTROUTING源地址转换,将源地址从内网地址转换成公网地址后才能正常访问网络。

posted @ 2016-09-21 21:53  苏青岩  阅读(3461)  评论(2编辑  收藏  举报