CentOS上搭建V*N

pw36 10年前

1.检查服务器是否有必要的支持。如果检查结果没有这些支持的话,是不能安装pptp的。命令:
modprobe ppp-compress-18 && echo ok
 这条执行执行后,显示“ok”则表明通过。不过接下来还需要做另一个检查,输入指令:
cat /dev/net/tun
 如果显示如下信息,说明通过,如果不支持,可以给vps商发ticket开通tun,大部分美国vps商都可以支持:
cat: /dev/net/tun: File descriptor in bad state
 上面的两个只要一条通过,就能安装VN(pptp)

2.准备环境
PPTPD要求Linux内核支持mppe,一般来说CentOS安装时已经包含了;下面安装ppp与iptables:
yum install ppp iptables
 
3、安装PPTPD
对于32位CentOS,执行
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm
对于64位CentOS,执行
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm
上面两个是el5内核的rpm包,如果是el6,执行
rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/i386/pptpd-1.4.0-1.el6.i686.rpm
如果想要从yum直接安装,可以 
rpm -Uvh http://poptop.sourceforge.net/yum/stable/pptp-release-current.noarch.rpm
yum search pptpd
如果上诉url都失效了,可以直接访问http://poptop.sourceforge.net找找看

4.修改配置
编辑PPTP配置文件 /etc/ppp/options.pptpd 添加内容如下:
ms-dns 8.8.8.8 
ms-dns 8.8.4.4 
编辑配置文件 /etc/pptpd.conf ,添加内容如下:
/etc/ppp/options.pptpd
localip 192.168.254.1
remoteip 192.168.254.100-254
其中localip与remoteip定义了客户端连接VN服务器后被分配到的内网IP地址,可根据需要自己修改。
现在对用户认证文件 /etc/ppp/chap-secrets 进行配置,内容如下:
testuser pptpd testpwd

testuser、testpwd对应修改为自己希望的VN登录用户名和密码
将 /etc/sysctl.conf 文件中net.ipv4.ip_forward设置为 1 (如果没有,则按照格式新建一行):
net.ipv4.ip_forward = 1
同时在“net.ipv4.tcp_syncookies = 1”前面加# 变成:
# net.ipv4.tcp_syncookies = 1
保存退出。执行
/sbin/sysctl -p
使之生效。
 
5.设置iptables转发
/etc/init.d/iptables start
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.254.0/24 -j MASQUERADE
/etc/init.d/iptables save
/etc/init.d/iptables restart 
注意,上面的192.168.254.0应该与之前设置的网段对应。
 
6.去除加密(部分VPS不支持加密)
这一步,一般可以省略,主要看你那是什么VPS。
编辑/etc/ppp/options.pptpd(vim /etc/ppp/options.pptpd),在require-mppe-128前面加个#(# require-mppe-128);
V
N连接属性里,加密方式选择为可选加密,并允许未加密的密码。
最后重启下PPTPD即可:

7.设置开机启动
chkconfig pptpd on
chkconfig iptables on

重启服务器即可进行连接,并且能够正常上网。
如果重启服务器后,无法连接VN,首先检查服务器的PPTP服务1723端口是否已打开(注意设置防火墙允许此端口);如果可以连接VN,但是无法正常上网,则检查iptables是否正常转发。
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT
service iptables save
service iptables restart