一、安装 pptpd
apt-get update && apt-get upgrade -y
apt-get -y install pptpd gcc make vnstat
modprobe ip_gre && modprobe ip_conntrack_pptp && modprobe ip_nat_pptp
sed -i '$i\modprobe ip_gre && modprobe ip_conntrack_pptp && modprobe ip_nat_pptp' /etc/rc.local
二、编辑 pptpd.conf
rm -rf /etc/pptpd.conf
cat >>/etc/pptpd.conf<<EOF
option /etc/ppp/pptpd-options
localip 10.6.0.1
remoteip 10.6.0.2-254
#logwtmp
EOF
三、编辑 pptpd-options
mv /etc/ppp/pptpd-options /etc/ppp/pptpd-options.old
cat >/etc/ppp/pptpd-options<<EOF
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
debug
dump
lock
nobsdcomp
novj
novjccomp
logfile /var/log/pptpd.log
plugin /usr/lib/pppd/2.4.5/radius.so
radius-config-file /usr/local/radius/etc/radiusclient/radiusclient.conf
EOF
详解
name pptpd(pptpd服务名,可以随便填写。)
refuse-pap(拒绝pap身份认证模式。)
refuse-chap(拒绝chap身份认证模式。)
refuse-mschap(拒绝mschap身份认证模式。)
require-mschap-v2(在端点进行连接握手时需要使用微软的 mschap-v2 进行自身验证。)
require-mppe-128(MPPE 模块使用 128 位加密。)
ms-dns 8.8.8.8 (ppp 为 Windows 客户端提供 DNS 服务器 IP 地址。)
proxyarp (建立 ARP 代理键值。)
nodefaultroute(不替换默认路由)
debug(开启调试模式,相关信息记录在 /var/log/messages 中。)
lock(锁定客户端 PTY 设备文件。)
nobsdcomp (禁用 BSD 压缩模式。)
四、添加 VPN 用户
chap-secrets 文件为4段,分别是:用户名、服务器名称、密码、分配给客户端的IP。
服务器名可以是pptpd或今后的l2tpd,*号代表全部。
密码以明文填写,不需进行加密。
最后的*号代表从remoteip指定的IP段随机分配
cat >>/etc/ppp/chap-secrets<<EOF
test * test *
EOF
在这里我们用radius服务器验证,就不添加账户了.
五、配置iptables规则
ipv4转发,否则连接VPN后,只能访问服务器资源,而不能访问这台服务器以外的资源。
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p
备份当前iptables规则。
iptables-save > /etc/iptables.down.rules
设置 iptables NAT 转发
iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -o eth0 -j MASQUERADE
设置 MTU (选做)
iptables -I FORWARD -s 10.6.0.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1300
开启1723端口
iptables -I INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
保存iptables现有规则到/etc/iptables.up.rules
iptables-save > /etc/iptables.up.rules
建立系统启动加载文件
cat >>/etc/network/if-pre-up.d/iptables<<EOF
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
EOF
给予执行权限
chmod +x /etc/network/if-pre-up.d/iptables
六、重启pptpd服务
/etc/init.d/pptpd restart
netstat -lntp
七.安装freeradius客户端
1.首先编译安装
wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.6.tar.gz
tar -zxf freeradius-client-1.1.6.tar.gz
cd freeradius-client-1.1.6
./configure --prefix=/usr/local/radius
make && make install
2.配置radius服务器地址及其通信密码
cat >>/usr/local/radius/etc/radiusclient/servers<<EOF
localhost testing123
EOF
其中localhost可以写成服务器IP地址,testing123是认证服务器的连接密码。
注:如果使用的是IP地址,记得同时修改下面设置。
sed -i 's/localhost/192.168.8.129/g' /usr/local/radius/etc/radiusclient/radiusclient.conf
3.增加字典
这一步很重要!否则windows客户端无法连接服务器。
wget -c http://small-script.googlecode.com/files/dictionary.microsoft
mv ./dictionary.microsoft /usr/local/radius/etc/radiusclient/
cat >>/usr/local/radius/etc/radiusclient/dictionary<<EOF
INCLUDE /usr/local/radius/etc/radiusclient/dictionary.sip
INCLUDE /usr/local/radius/etc/radiusclient/dictionary.ascend
INCLUDE /usr/local/radius/etc/radiusclient/dictionary.merit
INCLUDE /usr/local/radius/etc/radiusclient/dictionary.compat
INCLUDE /usr/local/radius/etc/radiusclient/dictionary.microsoft
EOF
4.PPTP启用freeradius插件
sed -i 's/radius_deadtime/\#radius_deadtime/g' /usr/local/radius/etc/radiusclient/radiusclient.conf
sed -i 's/bindaddr/\#bindaddr/g' /usr/local/radius/etc/radiusclient/radiusclient.conf
在pptpd-options里添加radius验证的相关配置,这一步上面安装pptpd的时候已经做了.
cat >>/etc/ppp/pptpd-options<<EOF
plugin /usr/lib64/pppd/2.4.5/radius.so
radius-config-file /usr/local/radius/etc/radiusclient/radiusclient.conf
EOF
重启
/etc/init.d/pptpd restart
注:64位系统插件路径是 "/usr/lib64/pppd/2.4.5/radius.so"
放一个一键脚本:https://raw2.github.com/suyan/Scripts/master/Setup/pptp.sh
有问题查看日志
tail -f /var/log/syslog
老T你现在玩的真高端。。