因为公司业务的需要,需要搭建一个vpn。基于PPTP搭建简单,使用方便,所以搭建基于PPTP协议的VPN。
废话不多说了,下面开整:
1、更新系统软件
sudo apt-get -y update
sudo apt-get -y upgrade
2、安装pptpd和iptables
sudo apt-get install -y pptpd iptables
3、修改配置文件/etc/pptpd.conf(配置远程vpn分配的ip)
sudo vim /etc/pptpd.conf
#找到如下两行,修改成自己想要的
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
比如我的
localip 192.168.0.1
remoteip 192.168.0.10-60
4、修改配置文件/etc/pptpd.conf(配置DNS)
sudo vim /etc/ppp/pptpd-options
找到
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
取消注释,修改成如下(根据自己需要填写):
ms-dns 223.5.5.5
ms-dns 8.8.8.8
5、修改配置文件/etc/ppp/chap-secrets(设置pptpd的账号等信息)
sudo vim /etc/ppp/chap-secrets
添加自己设置的账号等信息,各位需要修改的就是vpnuser和123456了
#Secrets for authentication using CHAP
#client server secret IP addresses
vpnuser pptpd 123456 *
以上pptpd服务器配置基本完工,简单而快速,没有任何难度。
下面开始说,影响你vpn是否能使用的配置了。
1、开启路由转发
查看系统内核是否已经开启了路由转发(新装系统一般是开启的)
sudo cat /proc/sys/net/ipv4/ip_forward
如果得到的值是1说明已经开启,如果没有就开启
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo vim /etc/sysctl.conf
找到对应参数,修改成如下:
net.ipv4.ip_forward=1
保存
sudo sysctl -p
2、配置防火墙规则
sudo iptables -A INPUT -p gre -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth0 -j MASQUERADE
NAT转发的这条信息根据自己之前的配置修改,自己的网卡叫啥自己看
因为Ubuntu是不保存iptables规则的,重启电脑就失效了,有个比较方便省事的方法:
把上面的四个规则写入到/etc/rc.local中
sudo vim /etc/rc.local
######################pptpd iptables#####################################
sudo iptables -A INPUT -p gre -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth0 -j MASQUERADE
##############################################################################
3、启动pptpd服务
sudo systemctl enable pptpd
sudo systemctl start pptpd
4、测试
使用配好的账号即可,一般不会有问题,windwos配置百度下即可。
注意,下面开始讲一个大坑,这个坑不解决,vpn就不完美。
诸位,连接上vpn后会发现有一些网站无法访问,比如百度、淘宝等。怎么回事呢?
在这里我就不卖关子了,告诉你是mtu的问题,如下图:
这个问题如何解决了,相信各位一百度会发先如下的解决建议:
我要说的是,经过本人的实际测试,以上方法除了手动修改的那个,其他都不管用,修改并不能生效;并且手动修改的只对当前连接有效。一个公司会有多个人连接vpn的这种方式明显蛋疼,不符合实际生产需要的。
那么如何解决呢?经过研究,其实很简单。只需要在一个配置文件里添加一行参数即可。
修改配置文件/etc/ppp/ip-up即可,在文件的最后一行加入如下内容即可
sudo vim /etc/ppp/ip-up
/sbin/ifconfig $PPP_IFACE mtu 1454
#mtu的值大家根据实际更改即可
大家可以看一下这个配置文件,其实很简单,一看就懂了。
修改完成后,保存退出,重启pptpd
再次连接后,可以发现mtu值就是你设置的mtu值,测试百度等网站都可以正常运行。