树莓派使用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源地址转换,将源地址从内网地址转换成公网地址后才能正常访问网络。