Ubuntu Server下建立VPN服务器的方法
时间:2015-06-22 00:08 来源:linux.it.net.cn 作者:IT
我们知道,VPN有很多种,比如Windows Server系列自己就带了VPN服务器,安装配置都非常简单,而今天我要在日志中介绍部署的,是Linux下的VPN-Server,基于PPTP协议。Ubuntu系统是基于Debian构造的一版发行版,交流社区非常活跃,而且因为基于Debian,他自己带的包管理器能很好的处理依赖关系,方便我们安装软件。
其实在Ubuntu下安装VPN-Server是非常非常Easy的,一句话就能搞定:
sudo apt-get install pptpd
嘿嘿 这样就搞定了,接下来的是一些配置,我们需要改三个文件,分别为:
/etc/pptpd.conf
/etc/ppp/pptpd-options
/etc/ppp/chap-secrets
首先我们使用vi命令对第一个文件进行修改,主要是设置本地ip与拨入用户的ip地址
sudo vi /etc/pptpd.conf
如图,localip是linux主机的ip地址,remoteip是地址池,也就是远程拨进来的计算机所分配到的ip地址。
之后我们要修改/etc/ppp/pptpd-options,主要是增加dns配置的说明。
如图,我们增加了两行(ms-dns开头)
最后,我们修改/etc/ppp/chap-secrets,主要是对用户进行配置。
按照,用户名(tab)主机名(tab)密码(tab)分配到的ip地址 这样的格式来填写,其中主机名可以用“*”代替,如果不强制指定该用户分配到哪一个ip地址,可以将最后一项也改为“*”
最后,我们重启pptpd服务,执行
sudo /etc/init.d/pptpd restart
稍等片刻,嘿嘿,从远程建立一个VPN连接,试试看吧。
PS:
如果发现这样无法访问外网了,可以开启ipv4 forward。修改/etc/sysctl.conf,去掉“net.ipv4.ip_forward=1”前的注释号,之后“sudo sysctl -p”应用配置,Ok Enjoy it!
虽然可以成功建立VPN连接, 但通常情况下还不能通过VPN服务器连接到Internet. 原因有多种,先来看看客户端通过VPN服务器与Internet上的服务器通信的全过程:
client <--> client ppp0 <--> VPN server ppp0 <--> VPN server <--> VPN server eth0 <--> Internet server eth0 <--> Internet server
“ppp0
”其实是VPN虚拟的一个网络接口 (可以想象成这是一个虚拟的网卡),VPN隧道就是通过客户端与服务器的这两个网络接口建立的. 而“eth0
”则代表服务器上真实存在的物理网卡,VPN服务器与外网通信就需要通过它. 具体流程是: 客户端通过“ppp0
”向VPN服务器发出请求,VPN服务器侦测到之后, 再将请求通过“eth0
”转发出去, 当请求到达目的地之后,Internet服务器就根据请求做出相应的回复, 这个回复再按照刚才来的路径返回到客户端,这样客户端就成功与Internet服务器完成一次通信.
上面图示中的箭头部分 (“<-->
”)就是可能造成无法连接Internet的关键, 因此需要针对每个部分一一排查. 这里只对可能性最大的两个地方进行介绍,想要了解每一个关键点的检测方法的同学可以阅读“DiagnosingForwarding on pptpd”这篇文章.
-
是否已经打开IP转发?
查看“/proc/sys/net/ipv4/ip_forward
”文件中的值是否为“1”, 如果不是,则需要在“/etc/sysctl.conf
”文件中添加“net.ipv4.ip_forward=1
”,然后执行以下命令:
$ sudo /etc/init.d/procps restart
-
是否在VPN服务器上设置了对于客户端IP地址的NAT?
执行下面的命令查看表中是否有相应的表项:
$ sudo iptables --table nat -L POSTROUTING
如果没有则执行以下命令:
$ sudo iptables --table nat --append POSTROUTING --out-interface eth0 --jump MASQUERADE
在完成上面两个检查之后, 应该就可以成功通过VPN服务器与Internet进行通信, 一个VPN服务器也基本配置完毕.
参考资料: Debian pptpdHOWTO,#13, DiagnosingForwarding on pptpd.
From:http://xiaogaozi.blogspot.com/2010/01/ubuntuwindowsvpn.html
(责任编辑:IT)
我们知道,VPN有很多种,比如Windows Server系列自己就带了VPN服务器,安装配置都非常简单,而今天我要在日志中介绍部署的,是Linux下的VPN-Server,基于PPTP协议。Ubuntu系统是基于Debian构造的一版发行版,交流社区非常活跃,而且因为基于Debian,他自己带的包管理器能很好的处理依赖关系,方便我们安装软件。 其实在Ubuntu下安装VPN-Server是非常非常Easy的,一句话就能搞定: sudo apt-get install pptpd
嘿嘿 这样就搞定了,接下来的是一些配置,我们需要改三个文件,分别为: sudo vi /etc/pptpd.conf
如图,localip是linux主机的ip地址,remoteip是地址池,也就是远程拨进来的计算机所分配到的ip地址。 之后我们要修改/etc/ppp/pptpd-options,主要是增加dns配置的说明。
如图,我们增加了两行(ms-dns开头) 最后,我们修改/etc/ppp/chap-secrets,主要是对用户进行配置。
按照,用户名(tab)主机名(tab)密码(tab)分配到的ip地址 这样的格式来填写,其中主机名可以用“*”代替,如果不强制指定该用户分配到哪一个ip地址,可以将最后一项也改为“*” 最后,我们重启pptpd服务,执行sudo /etc/init.d/pptpd restart
稍等片刻,嘿嘿,从远程建立一个VPN连接,试试看吧。
虽然可以成功建立VPN连接, 但通常情况下还不能通过VPN服务器连接到Internet. 原因有多种,先来看看客户端通过VPN服务器与Internet上的服务器通信的全过程: client <--> client ppp0 <--> VPN server ppp0 <--> VPN server <--> VPN server eth0 <--> Internet server eth0 <--> Internet server
“
上面图示中的箭头部分 (“
在完成上面两个检查之后, 应该就可以成功通过VPN服务器与Internet进行通信, 一个VPN服务器也基本配置完毕. 参考资料: Debian pptpdHOWTO,#13, DiagnosingForwarding on pptpd.
(责任编辑:IT) |