关于如何在Ubuntu Server上搭建VPN服务器的文章Google中随便一搜就有很多,但实际配置过程中有几个关键点很容易出错。下文将对这些关键步骤做出重点的说明。本文使用的是Ubuntu Server 14.04.4 LTS 64位版本。(http://blog.droidking.com/)
1、安装pptpd
sudo apt-get update sudo apt-get install pptpd
2、修改/etc/pptpd.conf
sudo vi /etc/pptpd.conf
在文件结尾添加下面两行,然后保存。
localip 10.10.0.1 remoteip 10.10.0.2-255
注意:localip、remoteip都应该使用Internet的保留IP,比如10.64.0.0-10.127.255.255,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255。尤其是localip,切勿填写为服务器的真实外网ip。
3、修改/etc/ppp/pptpd-options
sudo vi /etc/ppp/pptpd-options
找到ms-dns这一行,改为如下所示,其他保持默认值即可。
ms-dns 8.8.8.8
注意:网上有些文章说这个是给Windows的VPN客户端使用的,实际并非如此,如果不配置此项,VPN客户端将无法做域名解析。
4、修改/etc/ppp/chap-secrets,添加VPN帐号
sudo vi /etc/ppp/chap-secrets
添加一行,如下所示。其中username为VPN客户端连接VPN服务器时使用的用户名,password为密码,请自行改成其他值。如果需要添加多个用户,请按此格式添加多行即可。
username * password *
5、修改/etc/sysctl.conf
sudo vi /etc/sysctl.conf
找到下面这一行,去掉前面的注释后保存,启用ipv4 forwarding。
net.ipv4.ip_forward=1
执行下面的命令,使其生效:
sudo sysctl -p
6、添加以下iptables规则,启用NAT。
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
注意:服务器的网卡interface不一定是eth0,这种情况下旧必须将eth0替换为网卡真实的interface。interface可使用ifconfig -a查看,就是服务器的外网地址所对应的那个。比如我的服务器使用的是venet0。如果发现interface是venet0:0这样的,请去掉冒号和冒号后面的部分。因此,在我的服务器,实际上应该添加下面的规则:
sudo iptables -t nat -A POSTROUTING -ovenet0 -j MASQUERADE
7、重启ppptd
sudo service pptpd restart
8、使用VPN客户端测试
9、安装iptables-persistent。
很多文章都漏掉了这一步,结果重启后iptables的nat规则会丢失,导致VPN无法使用。最简单的方法是安装并使用iptables-persistent。
apt-get install iptables-persistent
保存iptables规则:
/etc/init.d/iptables-persistent save
iptables-persistent可以在重启时自动恢复保存的规则。(http://blog.droidking.com/)
阅读:999
iptables-save 这个命令就可以保存 iptables 规则~
如果用iptables-save,还得添加iptables-restore的脚本才行,比如:
$ iptables-save > /etc/iptables.conf
# 将以下命令添加到/etc/rc.local,确保重启后自动加载。
iptables-restore < /etc/iptables.conf iptables-persistent应该就是帮你干了save、restore的事。