Ubuntu下使用PPTPD搭建VPN

搭建PPTP服务器

参考:https://blog.csdn.net/sanve/article/details/80882731

安装

1
apt install pptpd

配置IP

1
vim /etc/pptpd.conf

查找并解开这3处的注释并修改相应配置

1
2
3
#bcrelay eth1 
#localip 192.168.10.1
#remoteip 192.168.10.234-238,192.168.10.245

bcrelay的意思我理解是来自虚拟局域网的广播要从哪个物理网卡转发出去

localip的意思本机是VPN服务器的IP地址

remoteip的意思是当有远程VPN客户端连接上来时被分配的IP段

我认为应该把虚拟局域网的网段和物理局域网分开,而且localip和remoteip应该在同一个网段,网上有localip和remoteip不应该在同一个网段的说法我并不认同。

配置DNS

1
vim /etc/ppp/pptpd-options 

找到ms-dns解开注释并修改相应配置

1
2
ms-dns 114.114.114.114
ms-dns 8.8.8.8

配置用户名密码

1
vim /etc/ppp/chap-secrets 
1
2
3
# Secrets for authentication using CHAP
# client server secret IP addresses
<username> pptpd <password> *

修改配置后重启PPTP服务器

1
service pptpd restart 

打开IPv4转发

1
vim /etc/sysctl.conf 

找到并修改或添加

1
net.ipv4.ip_forward = 1 

使配置生效

1
2
sysctl -p service
procps restart

在网关上添加指向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
2
3
auto tunnel
iface tunnel inet ppp
provider 连接名

======================================

新建脚本文件并修改权限

1
2
touch /etc/ppp/ip-up.d/连接名
chmod a+x /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 看看路由是否自动添加