VPN是什么?中文翻译叫做:虚拟专用网络。功能是,在公用网络上建立专用网络,进行加密通讯。
适用的场合:
1.你的公司网络在一个局域网,不能外部访问。有一天你外出度假了,想访问一下公司的内部网络,外网是不能直接访问的。如果公司的网络有一台主机设置了VPN,你就可以通过连上这台VPN主机,来访问公司内部网络啦。
2.如果你的主机是在国外,你可以在这台主机上配置VPN,然后你的电脑连上VPN之后就可以翻墙啦。
3.某台服务器(如游戏服务器)限制了一些IP连接到它上面,这时你配置VPN,连上VPN之后,就可以继续访问那台服务器咯。
4.etc…
我们以Ubuntu为例,说一下怎样配置VPN服务器。
VPN一般有比较著名的 PPTP, L2TP/IPSec 和 OpenVPN三种方式,后两种也比较安全,但是配置起来要麻烦一些,而且有的对于手机还要安装特定的客户端才能使用。
PPTP不仅配置方便,而且适用范围广,这次搭建VPN便是选择的着一种。对于Ubuntu,使用pptpd搭建VPN是搭建小型VPN服务器非常棒的选择。
首先要安装pptpd:
安装完之后再对pptpd进行一些设置,先对/etc/pptpd.conf进行设置主机IP和IP池
然后删除掉下面配置信息的注释:
第一个参数是VPN主机的IP,第二个参数是连入者的IP池。也可以不用默认的IP,自己自定义,一般会选择不常用的IP。
更改完IP相关之后在修改DNS信息,在/etc/ppp/pptpd-options。国内的话一般选择114.114.114.114,国外的主机的话当然是8.8.8.8。
找到ms-dns配置项目,删除他的注释,并重写DNS,比如:
DNS根据自己的情况填写,我的第一个DNS服务器是校内网的DNS服务器。
最后就是添加、修改用户的信息了,用户的配置文件在/etc/ppp/chap-secrets,我们再修改这个文件:
然后就看到了client(用户名)、server(服务器名)、secret(密码)、IP addresses(IP限制),根据情况写就好,如果没有要求的花就只写用户名和密码,其他全用*号代替,但要注意这几项之间需要用空格分隔。
我的配置文件如下:
然后就可以重启pptd服务了。
然后尝试来连接这个VPN服务器,一般情况下,不会出现什么问题,我也是一遍成功,而问题一般是出现下下面的步骤。
当很顺利链接上VPN之后,发现并不能连接外网,如果用连接了VPN的设备随便ping一下的话,会发现除了VPN服务器什么都ping不同,连 VPN服务器的网关都ping不通。所以我们还需要先打开ipv4 forward,它在配置文件/etc/sysctl.conf中:
在其中找到下面配置信息,并删掉它的注释使其生效:
然后使配置生效:
网上说这样就一般可以正常上网了,但是经过我的测试,这种“一般”然而并没有发生,但是VPN服务器的确是可以连接外网的,所以就有需要加一个NAT路由规则。
首先继续安装一个叫做iptables软件:
然后向 nat 表中加入一条规则:
其中有两个地方需要注意,一个是192.168.0.1那个部分,那个IP即是配置/etc/pptpd.conf信息的时候本机IP(配置文件 localip后面带的ip)。第二个就是eth0,这个是VPN能连接外网的那个网卡,可以用ifconfig来查看连接外网的到底是哪个网卡,比如我 是在一个局域网内测试的,我的VPN服务器获得的IP为192.168.1.124,ifconfig获得如下信息:
外网网卡,也就是192.168.1.124那个网卡,明显就是etho。
但是,iptables 的规则会在下次重启时被清除,所以我们还需要把它保存下来,方法是使用 iptables-save 命令:
然后修改 /etc/network/interfaces 文件,找到 eth0 那一节,在对 eth0 的设置最末尾加上下面这句:
这样当网卡 eth0 被加载的时候就会自动载入我们预先用 iptables-save 保存下的配置。
到此,一个VPN服务器配置到此完成。
最后:
在我配置这个VPS的时候遇到了一个问题,就是连接VPN的设备可以ping通任何网站,可以正常使用QQ客户端,但是却不能正常浏览网页,然后才知道有个叫MTU的东西。
最大传输单元(Maximum Transmission Unit,MTU),也就是说,如果网卡传输的大小超过这个大小,就会分开数据包。之所以会产生这种情况,可以参见上面我ifconfig的信息,ppp0的MTU是1396,太小了,所以导致大数据包上不去网,改为1496就正常了。
|
sudo ifconfig ppp0 mtu 1496
|