ubuntu下用pptp搭建vpn服务器及相关上网配置
这次建立vpn服务器遇到的问题太多了,现在把基本流程和遇到问题总结一下,先说下遇到的问题
- vpn连上但上不了网
- vpn电脑可以连上,但手机却连不上(iptables问题)
- 重启vpn连不上
- crontab通过curl发送post上网登陆命令总是不成功
- 限制ssh登陆ip
以上问题都总结到以下流程中
本文环境
ubuntu 15.10 64位
安装配置PPTPServer
- 安装pptp服务
1 | sudo apt-get install pptpd |
- 修改/etc/pptpd.conf
1 | sudo vim /etc/pptpd.conf |
增加本地Ip和远程ip,此处ip与本机Ip及外网Ip没有关系,相当于路由器的网关Ip和内网Ip。
1 | localip 192.168.11.1 |
- 修改/etc/ppp/pptpd-options
1 | sudo vim /etc/ppp/pptpd-options |
修改内容
1 | name pptpd |
主要问题都出现在这个文件中,可以通过日志观察
1 | tail -f /var/log/syslog |
- 修改/etc/ppp/chap-secrets
1 | sudo vim /etc/ppp/chap-secrets |
增加vpn连接的用户名密码,例如
1 | vpn pptpd vpn * |
重启pptp服务
1 | sudo service pptpd restart |
- 修改/etc/sysctl.conf
1 | sudo vim /etc/sysctl.conf |
增加ipv4转发
1 | net.ipv4.ip_forward=1 |
配置生效
1 | sudo sysctl -p |
- iptables设置
手机连不上,连上了vpn上不了网主要是因为iptables.
1 | sudo iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -o eno1 -j MASQUERADE |
注意,以上的eno1为网卡名,可以通过ifconfig
来查看;ip段为客户端的ip端。
查看iptables规则
1 | iptables -nvL --line-number |
更详细的可以使用
1 | man iptables |
设置开机启动定时任务等
- 修改/etc/rc.local
1 | sudo vim /etc/rc.local |
增加启动项
1 | service pptpd start |
注意,rc.local文件默认是以root权限运行程序的
- 设置crontab定时任务
学校的网页认证是早上定时断连,所以用curl定时post一个认证即可
1 | # crontab -l #列出当前用户定时任务 |
增加一行
1 | 0 5,6,7,8 * * * /home/username/tools/usernamelogin |
然后在相应文件写入命令
1 | #! /bin/bash |
限制ssh登陆ip
在/etc/hosts.allow输入
(其中192.168.10.88是你要允许登陆ssh的ip,或者是一个网段192.168.10.0/24)1
sshd:192.168.10.88:allow
在/etc/hosts.deny输入(表示除了上面允许的,其他的ip 都拒绝登陆ssh)
1
sshd:ALL
更改ssh登陆端口
1
vi /etc/ssh/sshd_config
客户端设置
手机端连接时要需要取消ppp加密选项。电脑端要选择pptp加密选项
参考
https://www.digitalocean.com/community/tutorials/how-to-setup-your-own-vpn-with-pptp
https://help.ubuntu.com/community/PPTPServer
https://github.com/viljoviitanen/setup-simple-pptp-vpn/blob/master/setup.sh
http://www.dabu.info/centos6-4-structures-pptp-vpn.html