在Debian/Ubuntu 配置PPTP VPN

本文编写于4084天前,最后编辑于 3831天前,部分内容可能已经过时,请您自行斟酌确认。

一、安装 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

在Debian/Ubuntu 配置PPTP VPN 》上有一条评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注