在openvz上的ubuntu中配置pptp vpn教程

1. 确定你的vps支持ppp,切记第一步务必首先完成!!!
这里可以使用命令:cat /dev/ppp
如果显示 “cat: /dev/ppp: No such device or address” 表示ppp的模块已经加载,那么就可以进入下一步了。
如果显示类似于“permission denied”说明没ppp模块,请联系你的vps提供商让其帮忙开启。我使用的ramnode.com的vps可以登陆到control panel中开启。

2.第一步完成后就可以开始安装了
2.0 sudo -i 获取root权限

2.1 安装pptpd服务: apt-get install pptpd

2.2 修改配置文件:
vim /etc/ppp/pptpd-options
在其中找到ms-dns的位置,修改为你希望传递给client的DNS地址,这里我使用的google的DNS:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

2.3 然后修改 vim /etc/pptpd.conf 找到文件最下端的

localip 
remoteip 10.0.0.100-199

这里的localip是只vps的外网ip,remoteip是指分配给客户端的内网IP,这里可以按照实际需要分配。

2.4 修改 vim /etc/ppp/chap-secrets
这个文件是用来存储用户名和密码的,顺序是 pptpd *
这里的pptpd是服务器名称,是在“/etc/ppp/pptpd-options”中定义的,默认是pptpd
* 代表允许此用户从任何ip连接,所以你也可以指定一个或一段ip地址

这样pptpd的配置就完成了,现在可以使用service pptpd restart 重启服务。现在客户端应该已经可以连接到vpn,但是还不能上网。

3. 设置转发和NAT

3.1 vim /etc/sysctl.conf
找到 net.ipv4.ip_forward=1,将其前面的“#”去掉,使代码生效。如果要使用ip v6也需要做相应的修改。
完成后:sysctl -p 重新加载设置。
在很多网络环境下,配置到这里vpn就已经可以正常运作了,不过我使用的vps还不行,需要继续进行下一步。

3.2 使用iptables设置NAT

iptables -P FORWARD ACCEPT
iptables --table nat -A POSTROUTING -o venet0 -j MASQUERADE

现在vpn就可以正常运作了,你可以连接一下试试;但是还没有完成,因为一旦重启iptables的设置就会丢失,所以让系统自动加载iptables的设置。

4 储存iptables rules. 由于我使用的ramnode.com的openvz vps会自动重置 “/etc/network/interface” 所以这里不能使用简单的“pre-up”的方法,需要使用比较复杂的方法,下面会详细介绍。

4.1 使用 “iptables-save > /etc/iptables.rules” 把现有的rules储存成文件

4.2 新建文件 vim /etc/network/if-pre-up.d/iptables
在其中加入一下脚本

#!/bin/sh
 iptables-restore < /etc/iptables.rules
 exit 0

这样自动加载的脚本就完成了
再添加执行权限: chmod +x /etc/network/if-post-down.d/iptables

4.3 新建文件 vim /etc/network/if-post-down.d/iptables
在其中加入自动保存的脚本

 #!/bin/sh
 iptables-save -c > /etc/iptables.rules
 if [ -f /etc/iptables.rules ]; then
 iptables-restore < /etc/iptables.rules
 fi
 exit 0

同样添加执行权限:chmod +x /etc/network/if-pre-up.d/iptables

到这里就全部完成了,重启一下试试效果吧!

最后如果设置了防火墙,还要开启两个端口:

# Port 1723 is used by pptp. For secure operations limit the
# source IP via -s x.x.x.x as well!
iptables -A INPUT -p tcp –dport 1723 -j ACCEPT
# PPTP used not tcp or udp, but gre (protocol number 47).
# Let it in as well.
iptables -A INPUT -p 47 -j ACCEPT

Some usefull tips for Ubuntu

Actually, this is a note for myself, because I cannot remember a lot of things which only used when I setting up a new VPS.

1. Autocomplete not working in ubuntu:
There are 2 parts need to check. 1st, check package “bash-completion” installed or not.
2nd, open the file “/etc/bash.bashrc”, and find the lines below.

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Uncomment those lines, if you don’t have them, add it in.

2.Stop nginx response to unknown domains:
Edit “/etc/nginx/nginx.conf”, add a server before it start to add servers from site-enabled folder.

server{
		listen 80 default_server;
		server_name	_;
		return	444;
	}
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;

3. About pptp VPN
Because I am using openvz, make sure turn ppp module before you install pptpd. Otherwise will need to use “apt-get –purgef” to remove all package and config files, and then start again.
Also, it seems ramnode.com restore /etc/network/interface to default after each restart. So you cannot use “pre-up” & “post-up” in that file to save and restore iptables rules. Alternatively, we can write 2 scripts in “/etc/network/if-post-down.d/iptablessave” & “/etc/network/if-pre-up.d/iptablesload” to save and reload the rules.