Ubuntu下使用PPTPD搭建VPN
搭建PPTP服务器
参考:https://blog.csdn.net/sanve/article/details/80882731
安装
1 | apt install pptpd |
配置IP
1 | vim /etc/pptpd.conf |
查找并解开这3处的注释并修改相应配置
1 | #bcrelay eth1 |
bcrelay的意思我理解是来自虚拟局域网的广播要从哪个物理网卡转发出去
localip的意思本机是VPN服务器的IP地址
remoteip的意思是当有远程VPN客户端连接上来时被分配的IP段
我认为应该把虚拟局域网的网段和物理局域网分开,而且localip和remoteip应该在同一个网段,网上有localip和remoteip不应该在同一个网段的说法我并不认同。
配置DNS
1 | vim /etc/ppp/pptpd-options |
找到ms-dns解开注释并修改相应配置
1 | ms-dns 114.114.114.114 |
配置用户名密码
1 | vim /etc/ppp/chap-secrets |
1 | # Secrets for authentication using CHAP |
修改配置后重启PPTP服务器
1 | service pptpd restart |
打开IPv4转发
1 | vim /etc/sysctl.conf |
找到并修改或添加
1 | net.ipv4.ip_forward = 1 |
使配置生效
1 | sysctl -p service |
在网关上添加指向VPN网段的静态路由,设置下一跳地址为架设VPN服务器主机的IP,这样整个局域网都是可以通过VPN正常访问的。
如果没有操作网关的权限,也可以在需要访问的主机上添加静态路由
1 | ip route add 192.168.10.0/24 via 192.168.1.99 |
这里192.168.1.99就是架设VPN服务器的主机IP
Ubuntu PPTP客户端
参考:https://www.jianshu.com/p/1680c721f397 http://www.linuxfly.org/post/641/
1 | pptpsetup --create 连接名 --server VPN服务器地址 --username 用户名 --password 密码 --encrypt |
启动VPN连接
1 | pon 连接名 |
关闭VPN连接
1 | poff 连接名 |
查看路由表
1 | route -n |
添加路由,将通过VPN接入的物理局域网网段路由指定通过ppp0网口转发
1 | route add -net 192.168.1.0 netmask 255.255.255.0 dev ppp0 |
每次重连后路由会丢失,需要重新配置,可以用下面的方法在ppp0 up时自动添加路由
pptp连接时自启动添加路由
参考:https://blog.csdn.net/qq_27434019/article/details/102920504
1 | vim /etc/ppp/peers/连接名 |
增加ipparam一行
1 | ipparam 连接名 |
下面这步似乎不必要,不清楚作用
1 | vim /etc/network/interfaces |
增加
1 | auto tunnel |
======================================
新建脚本文件并修改权限
1 | touch /etc/ppp/ip-up.d/连接名 |
编辑脚本
1 | vim /etc/ppp/ip-up.d/连接名 |
在脚本中加入添加路由的语句
1 | route add -net 192.168.1.0 netmask 255.255.255.0 dev ppp0 |
可以poff 再 pon 再 route -n 看看路由是否自动添加