ubuntu 搭建VPN服务器

源:http://www.cnblogs.com/wicrecend/p/5218756.html

$ sudo apt-get install pptpd

如果你的Linux的内核版本低于2.6.15, 那么需要先检查一下是否支持MPPE:

$ sudo modprobe ppp-compress-18 && echo "success"

若是没有输出“success”则证明内核不支持, 可以跟随这里的步骤进行内核的配置.

Poptop安装完毕之后需要简单配置一下, 打开“/etc/pptpd.conf”文件, 添加下面两行, 或者这个文件已经有了一些示例, 只需要去掉注释符号.

localip 192.168.0.1 remoteip 192.168.0.234-238,192.168.0.245

“localip”表示VPN隧道中服务器 (server) 的IP地址, “remoteip”表示VPN隧道中客户端 (client) 可以分配的IP地址. 关于“pptdp.conf”文件的更多选项, 可以阅读它的man page.

编辑好这个文件后,我们需要编辑 /etc/ppp/pptpd-options 文件,这里绝大多数参数只需维持原来的默认值即可,我们只需要改变其中的 ms-dns 选项,为 VPN 客户端指派 DNS 服务器地址:
    ms-dns 8.8.8.8

然后设置用于登录的用户名和密码, 打开“/etc/ppp/chap-secrets”文件, 添加下面一行, 中括号部分代表需要配置的地方:

[username] pptpd [password] *

最后重启Poptop:

$ sudo /etc/init.d/pptpd restart

现在试试用其它电脑是否可以成功连上, 注意客户端填写的IP地址是VPN服务器的外网IP, 而不是刚才配置的“localip”.

虽然可以成功建立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的关键, 因此需要针对每个部分一一排查.

    是否已经打开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服务器的1723(TCP)端口是否开放

    $lsof -i:1723 或者 netstat -ntpl|grep 1723

   如果有显示说明已经开放了,如果没有显示说明没有开放。
    
   如果没有:
   安装iptables(已安装请忽略)

   sudo apt-get install iptables

   开放1723端口

    sudo iptables -I INPUT -p tcp –dport 1723 -j ACCEPT

   重启pptpd

    sudo /etc/init.d/procps restart


在完成上面两个检查之后, 应该就可以成功通过VPN服务器与Internet进行通信, 一个VPN服务器也基本配置完毕

猜你喜欢

转载自blog.csdn.net/baixiaozhe/article/details/77311872