linux VPS架设V P N(PPTP V*PN安装教程含OpenVZ)
【小知识】什么是V*P*N?
VPN的英文全称是“Virtual Private Network”,中文名叫做“虚拟专用网络”。VPN可以通过特殊加密的通讯协议连接到Internet上,在位于不同地方的两个或多个内部网之间建立一条专有的通讯线路。他能提供的功能包括:防火墙功能、认证、加密、隧道化。还有什么功能,我就不细说了,大家发掘吧。
【安装】(本次教程架设在之前免费申请的一个月Xen V*P*S 256MB上,系统为centos5/32位,PPTP VPN一键安装包对系统要求为centos5 32 /64)
首先,我们putty用root密码登录,键入下面的指令:
wget http://dl.zrblog.net/pptpd.sh
下载安装脚本之后,安装就可以了,一键安装,不用输入什么,非常方便。
sh pptpd.sh
附图:
安装完成后,大家要注意,最后一行是你的用户,密码,要记住。如果你需要添加用户,只要直接编辑/etc/ppp/chap-secrets文件,按照相同格式添加用户名和密码即可。
【后记】
OpenVZ用户请先检查
虚拟网卡(TUN/TAP)支持(代码如下)
cat /dev/net/tun
如果返回信息为:
cat: /dev/net/tun: File descriptor in bad state 说明正常
检测是支持ppp模块
cat /dev/ppp
如果返回信息为:cat: /dev/ppp: No such device or address 说明正常
【后续】
有些OpenVZ,直接安装了一键包之后,仍然不能使用VPN。这里,我补充几点。
1.首先,我们确认VPS已经开启了TUN和PPP,关于确认的方法,上面已经给出;
2.安装好一键包之后,可以编辑VPN链接的用户信息(vim /etc/ppp/chap-secrets);
3.去加密。编辑/etc/ppp/options.pptpd(vim /etc/ppp/options.pptpd),在require-mppe-128前面加个#(# require-mppe-128);
4.本地设置加密方式为可选加密,并允许未加密的密码。
5.最后重启下PPTPD:/etc/init.d/pptpd restart
6.有朋友遇到安装报错的问题(内容大约为etc/ppp文件夹找不到),并提出解决方案,有类似情况的朋友可参考之:
编辑 /etc/yum/pluginconf.d/fastestmirror.conf 将enabled=1修改为enabled=0
============================================================================
CentOS 安装 daili,附一键安装shell
对于拥有一个美国vps的人来说,如果不在你的 vps搞一个daili方便自己用用,那真的是浪费了vps啊……………………
搭建daili最方便的就是使用ppp咯
其实pptpd-1.3.3不怎么好用的,所以 我们这里使用1.3.4咯
吼 吼, 这一段就不解释了哈,就是如果原来有的话,就直接清除咯,以免你之前安装失败了的影响到现有的安装哦,并下载了一些依赖包的。
01 |
yum remove -y pptpd ppp |
02 |
iptables --flush POSTROUTING --table nat |
03 |
iptables --flush FORWARD |
04 |
rm -rf /etc/pptpd .conf |
08 |
wget http: //poptop .sourceforge.net /yum/stable/packages/pptpd-1 .3.4-2.el6.$arch.rpm |
10 |
yum -y install make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers dkms kernel_ppp_mppe ppp |
11 |
rpm -Uvh pptpd-1.3.4-2.el6.$arch.rpm |
上面的代码已经安装好了pptpd哦,接下来就需要配置咯
2 |
echo 1 > /proc/sys/net/ipv4/ip_forward |
3 |
echo "mknod /dev/ppp c 108 0" >> /etc/rc . local |
4 |
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc . local |
5 |
echo "localip 172.16.36.1" >> /etc/pptpd .conf |
6 |
echo "remoteip 172.16.36.2-254" >> /etc/pptpd .conf |
7 |
echo "ms-dns 8.8.8.8" >> /etc/ppp/options .pptpd |
8 |
echo "ms-dns 8.8.4.4" >> /etc/ppp/options .pptpd |
首先要明白什么是设备文件,简单的我们说 操作系统与外部设备(入磁盘驱动器,打印机,modern,终端 等等)都是通过设备文件来进行通信的,在Unix/Linux系统与外部设备通讯之前,这个设备必须首先要有一个设备文件,设备文件均放在/dev目录下
一般情况下在安装系统的时候系统自动创建了很多已检测到的设备的设备文件,但有时候我们也需要自己手动创建,命令行生成设备文件的方式有 insf,mksf,mknod等等
根据mknod命令的使用参数来看【mknod Name { b | c } Major Minor 】,使用mknod之前,至少要明白以下几点:
设备文件类型:分为块设备和字符设备。ls -l /dev 结果显示第一个字段有b*** 和 c****,这里即标识了块设备和字符设备。
字符设备文件—-字符设备文件传送数据给设备的时候,一次传送一个字符,终端,打印机,绘图仪,modern等设备都经过字符设备文件传送数据
块设备—系统通过块设备文件存取一个设备的时候,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘,这种方式能有效的提高磁盘和CD-ROMS的I/O性能。磁盘和CD-ROMS即可以使用字符设备文件也可使用块设备文件。
主号和次号:
主号:当在任意目录使用ls -l 时,结果的第5个字段就是主号,设备主号代表了这个设备使用的是哪个设备驱动程序
次号:次号是一个24位的十六进制数字,定义了设个设备在系统中的物理的位置
就拿我们常用的创建卷组来看;
先来看看mknod 命令,如果该设备文件你想放在一个特定的文件夹下当然就先创建文件夹
mknod 设备文件名[/dev/xyz] b/c 主号 次号
{ mkdir /dev/vg01
mknod /dev/vg01/group c 64 0X010000
}
创建之后,就可以使用你想要创建的设备对于德创建命令了,如我现在的卷组的创建命令:
vgcreate /dev/vg01 /dev/dsk/c*t*d*
一直进行下去
之后的步骤根据不同的设备而不尽相同,这里就不阐述了
创建初始的用户名密码:
1 |
pass=`openssl rand 6 -base64` |
1 |
echo "daili pptpd ${pass} *" >> /etc/ppp/chap-secrets |
让iptables 进行数据转发,要用daili就一定要开启iptables的。
1 |
iptables -t nat -A POSTROUTING -s 172.16.36.0 /24 -j SNAT --to- source ` ifconfig | grep 'inet addr:' | grep - v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}' ` |
2 |
iptables -A FORWARD -p tcp --syn -s 172.16.36.0 /24 -j TCPMSS -- set -mss 1356 |
让iptables 和pptpd自启动
chkconfig iptables on
chkconfig pptpd on
service iptables start
service pptpd start
echo "VPN service is installed, your VPN username is daili, VPN password is ${pass}"
没了,最后输出了username is daili
password 是 6 位数的随机密码。所以每次安装之后的密码是不一样的。
要添加用户,修改密码在:
这个文件里,从左至右依次是:用户名,pptpd ,密码 *
*就是要分配给这个用户的ip地址
完整的shell脚本:
01 |
yum remove -y pptpd ppp |
02 |
iptables --flush POSTROUTING --table nat |
03 |
iptables --flush FORWARD |
04 |
rm -rf /etc/pptpd .conf |
08 |
wget http: //poptop .sourceforge.net /yum/stable/packages/pptpd-1 .3.4-2.el6.$arch.rpm |
10 |
yum -y install make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers dkms kernel_ppp_mppe ppp |
11 |
rpm -Uvh pptpd-1.3.4-2.el6.$arch.rpm |
13 |
mknod /dev/ppp c 108 0 |
14 |
echo 1 > /proc/sys/net/ipv4/ip_forward |
15 |
echo "mknod /dev/ppp c 108 0" >> /etc/rc . local |
16 |
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc . local |
17 |
echo "localip 172.16.36.1" >> /etc/pptpd .conf |
18 |
echo "remoteip 172.16.36.2-254" >> /etc/pptpd .conf |
19 |
echo "ms-dns 8.8.8.8" >> /etc/ppp/options .pptpd |
20 |
echo "ms-dns 8.8.4.4" >> /etc/ppp/options .pptpd |
22 |
pass=`openssl rand 6 -base64` |
27 |
echo "daili pptpd ${pass} *" >> /etc/ppp/chap-secrets |
29 |
iptables -t nat -A POSTROUTING -s 172.16.36.0 /24 -j SNAT --to- source ` ifconfig | grep 'inet addr:' | grep - v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}' ` |
30 |
iptables -A FORWARD -p tcp --syn -s 172.16.36.0 /24 -j TCPMSS -- set -mss 1356 |
36 |
service iptables start |
39 |
echo "VPN service is installed, your VPN username is daili, VPN password is ${pass}" |
可以直接复制脚本保存为,pptpd.sh,然后 sh pptpd.sh
要root权限执行哦,因为mknod是要root权限才能创建的。