centos下安装vpn客户端pptpclient
时间:2014-07-14 15:20 来源:linux.it.net.cn 作者:IT网
Pptpclient官网http://pptpclient.sourceforge.net/howto-diagnosis.phtml#pppd_options
1. 使用yum安装ppp和pptp包
yum -y install ppp
yum -y install pptp
如果yum不具备pptp,可到 http://pptpclient.sourceforge.net 下载安装,这里建议选用rpm包。
本人安装采用的是:http://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.7.2/pptp-1.7.2-3.rhel5.i386.rpm/download
rpm -ivh ./pptp-1.7.2-3.rhel5.i386.rpm
2. 配置pptp
pptpsetup --create vpn连接名称(自定义) --server VPN服务器IP --username VPN用户名 --password VPN密码
执行完成以后会生成文件 /etc/ppp/peers/vpn连接名称(自定义)
编辑该文件:
vi /etc/ppp/peers/vpn连接名称(自定义)
将该文件修改并完善为如下:
# written by pptpsetup
pty "pptp VPN服务器IP --nolaunchpppd"
lock
#noauth
nobsdcomp
nodeflate
name VPN用户名
remotename vpn连接名称(自定义)
ipparam 服务器ip
require-mppe-128
refuse-pap
refuse-chap
refuse-eap
refuse-mschap
编辑文件 /etc/ppp/chap-secrets
vi /etc/ppp/chap-secrets
内容如下:
# Secrets for authentication using CHAP
# client server secret IP addresses
VPN用户名 vpn连接名称(自定义) "VPN密码" *
3. 复制命令
cp /usr/share/doc/ppp-2.4.4/scripts/pon /usr/sbin/
cp /usr/share/doc/ppp-2.4.4/scripts/poff /usr/sbin/
chmod +x /usr/sbin/pon /usr/sbin/poff
4.拨vpn
pon vpn连接名称(自定义)
5.查看是否连接
ifconfig
————————————————————————————————————-
ppp0 Link encap:Point-to-Point Protocol
inet addr:192.168.2.224 P-t-P:192.168.2.200 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:80 (80.0 b) TX bytes:80 (80.0 b)
————————————————————————————————————-
6.断开连接
poff vpn连接名称(自定义)
至此,安装完成。
vi /etc/ppp/options.pptpd
去掉下面两个参数的"#"
debug \\打开调试.这样可以在/var/log/message中看到调试结果
dump
或者
logfile /var/log/pptpd.log \\指定日志文件
详细出处参考:http://www.jb51.net/article/23478.htm
1.连接完毕要添加路由才能上网
例如:
sudo route add default dev ppp0
解决办法
根基pptpclient官方描述 http://pptpclient.sourceforge.net/routing.phtml#all-to-tunnel ,在PPP端口启用的时候,/etc/ppp/ip-up会被pppd执行,内有 run-parts来运行/etc/ppp/ip-up.d内的脚脚本,传递的参数是
# This script is called with the following arguments:
# Arg Name
# $1 Interface name
# $2 The tty
# $3 The link speed
# $4 Local IP number
# $5 Peer IP number
# $6 Optional ``ipparam'' value foo
$1是默认设备名字。
若以加默认路由的脚本可以这样写
route add default dev $1
注意这个脚本不能有 .sh后缀名,经过实际测试,有后缀的都不能运行。可能和run-parts有关
2.默认设置连接win 2003搭建的VPN死活链接不上
Using interface ppp0
Connect: ppp0 <--> /dev/pts/5
LCP terminated by peer (%M-O^]k^@ 乱码.....
Connection terminated.
Modem hangup
解决方法见下文文档解析
3.CentOS下此包不在pptp-linux而在pptp-setup下面。
pon,plog脚本在默认在
/usr/share/doc/ppp-*/scripts/
下面
cd /usr/share/doc/ppp-2.4.4/scripts
cp pon /usr/local/bin/
cp poff /usr/local/bin/
cp plog /usr/local/bin/
chmod +x /usr/local/bin/p*
nano /usr/local/bin/plog
#修改 /var/log/syslog为/var/log/messages#(若需要)
配置文档解析:
密码保存在
/etc/ppp/chap-secrets
这里面的内容和格式和http://ihipop.info/2010/06/1265.html#chap-secrets是一样的。参考设置即可
主机设定保存在
/etc/ppp/peers/
可以对此做进一步设定。
比如原来连win2003的PPTP一直连接不上,是因为认证方式问题
nano /etc/ppp/peers/vpnname
添加一行
refuse-eap
即可(VIA)
# written by pptpsetup
pty "pptp ip --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name ihipop
remotename vpn160
ipparam vpn160
require-mppe-128
refuse-eap
# written by pptpsetup
pty "pptp serverIP --nolaunchpppd"
lock
#noauth
nobsdcomp
nodeflate
name username
remotename myvpn
ipparam myvpn
require-mppe-128
refuse-pap
refuse-chap
refuse-eap
refuse-mschap
这些文件不由得让我想起来了pppoeconf配置的ADSL拨号。其中在/etc/ppp/peers/dsl-provider有如下两个参数
demand
idle 300
这里demand表示自动按需拨号,idle表示空闲多少秒以后自动断线。
而persist则代表了一直保持连接
PPTP+freeradius+mysql对vpn进行流量及时长监控
昨天放了一vpn给大家玩,虽然是自助注册,但是不能对流量和时长进行监控,今天弄了一下PPTP+freeradius+mysql,可以对vpn进行流量及时长监控
有需要的,大家去申请一下用用,http://www.31sky.net/vpn
截个图上来给大家看看!
Linux+pptp+mysql+freeradius 安装使用发布于 2010-10-28
by ptubuntu
归档于 Ubuntu
Linux+pptp+mysql+freeradius 安装使用 作者:smz0102
http://www.ptubuntu.com/2010/10/3908.html#more-3908
pptp是常用的vpn软件,翻墙利器.传统的pptp是使用文档方式来实现用户的认证的,管理用户时需要操作chap-secrets文件来,添加修改用户.使用起来不方便.而且没有对用户流量监控,以及分组管理的功能.可不可以实现通过数据库来管理用户,以及记录PPTP用户使用的流量,限制一个账号同时登陆人数呢?答案是:有.
想知道吗?且看下面分解
一、安装pptp
PPTP VPN 服务器安装
1、安装相关软件
32位版:
yum install -y ppp iptables
wget http://poptop.sourceforge.net/yu … -1.rhel5.1.i386.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm
64位版:
yum install -y ppp iptables
wget http://poptop.sourceforge.net/yu … .rhel5.1.x86_64.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm
2、配置文件编写
①、配置文件/etc/ppp /options.pptpd
mv /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
vi /etc/ppp/options.pptpd
输入以下内容:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 208.67.222.222
ms-dns 208.67.220.220
②、 配置文件/etc/ppp/chap-secrets
mv /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
vi /etc/ppp/chap-secrets
输入以下内容
# Secrets for authentication using CHAP
# client server secret IP addresses
myusername pptpd mypassword *
注: 这里的myusername和mypassword即为PPTP VPN的登录用户名和密码
例:
admin pptpd 63700 192.168.0.110
jijianlin pptpd jijianl@vpn 192.168.0.111
如果多人使用同一个账 号登陆,ip地址的位置写*
jijianlin pptpd jijian@vpn *
③、 配置文件/etc/pptpd.conf
mv /etc/pptpd.conf /etc/pptpd.conf.bak
vi /etc/pptpd.conf
输入以下内容:
option /etc/ppp/options.pptpd
logwtmp
localip 192.168.9.1
remoteip 192.168.9.11-30
注:为拨入VPN的用户动态分配 192.168.9.11~192.168.9.30之间的IP
④、 配置文件/etc/sysctl.conf
vi /etc/sysctl.conf
修改以下内容:
net.ipv4.ip_forward = 1
保存、退出后执行:
/sbin/sysctl -p
3、 启动PPTP VPN 服务器端:
/sbin/service pptpd start
4、 启动iptables:
/sbin/service iptables start
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.9.0/24 -j MASQUERADE
测试:拨号测试,没问题继续下面的.
二、安装系统自 带的mysql,apache php等环境(我使用的是centos系统,所以用yum来安装,也可以使用其他方法,自便)
yum -y install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml mysql-connector-odbc mysql-devel libdbi-dbd-mysql
三、下载安装freeradius
#wget ftp://ftp.freeradius.org/pub/fre … server-2.1.3.tar.gz
# tar zxvf freeradius-server-2.1.3.tar.gz
# cd freeradius-server-2.1.3 (2.1.3 版本才能够与myql 5.0.45的版本匹配,高于次版本不能够编译成功mysql模块)
./configure –prefix=/usr/local/freeradius
make
make install
vi /etc/profile
export PATH=$PATH:/usr/local/freeradius/sbin:/usr/local/freeradius/bin
source /etc/profile
vi /etc/ld.so.conf
/usr/local/freeradius/lib
ldconfig -v
cd /usr/local/freeradius
vi +76 etc/raddb/users取消注释
radiusd -Xs
radtest steve testing localhost 1812 testing123
出现Access-Accept字样说明成功。
测试成功后把/etc/raddb/users改回去。
四、freeradius和mysql的集成
# mysqladmin -u root -p create radius
mysql -u root -p radius < etc/raddb/sql/mysql/schema.sql
mysql -u root -p radius < etc/raddb/sql/mysql/nas.sql
mysql -u root -p radius < etc/raddb/sql/mysql/ippool.sql
mysql -u root -p radius < etc/raddb/sql/mysql/wimax.sql
mysql -u root -p
mysql> GRANT SELECT ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'radpass';
mysql> GRANT ALL on radius.radacct TO 'radius'@'localhost';
mysql> GRANT ALL on radius.radpostauth TO 'radius'@'localhost';
先加入一些组信息:
mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');
mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type','=','Framed-User');
mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask','=','255.255.255.255');
mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');
然后加入用户信息:
mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('sqltest', 'Password', 'testpwd');
然后把用户加到组里:
mysql> insert into radusergroup(username,groupname) values('sqltest','user');
mysql> select * from radcheck where UserName='sqltest';
insert into radgroupreply (groupname,attribute,op,value) values ('user','Simultaneous-Use',':=','1');
限制一个账户同时只能登陆一个,不做下面限制,可以同时登陆多个
INSERT INTO radgroupcheck (GroupName, Attribute, op, Value) values("user", "Simultaneous-Use", ":=", "1"); 限制登陆次数
insert into radcheck (username,attribute,op,value) values ('test','User-Password',':=','test'); 添加用户
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('sqltest', 'Password', 'testpwd'); 添加用户 两种方法都可以,效果一样
insert into radusergroup (username,groupname) values ('test','user'); 将用户添加到现在组里(user组)
注意:这里使用的freeradius是2.0版本的,1.0版本的数据库sql和2.0的位置不一样.
1.编辑/usr/local /freeradius/etc/raddb/sql.conf
mysql用户名,密码根据自己的情况填写
第88行取消readclients = yes 前的注释
2.编辑/usr/local/freeradius/etc/raddb/sites-enabled/default
第145 行files前加注释
第152 行取消sql前的注释
第308 行files 前加注释
第342 行取消sql前的注释
第374 行取消sql前的注释
第395 行取消sql前的注释
3.编辑/usr/local/freeradius/etc/raddb/sites-enabled/inner-tunnel
第111 行files前加注释
第118行取消sql前的注释
第242行取消sql前的注释
第264行取消sql前的注释
###总之就是去掉files模块,开启sql模块
4.编辑/usr/local/freeradius/etc/raddb/eap.conf
第30行default_eap_type = md5改为default_eap_type = peap
5.测试
# radtest sqltest testpwd localhost 1812 testing123
出现Access-Accept字样说明成功。
参考网址:http://linux.chinaunix.net/bbs/thread-1061085-1-2.html
到目前为止:整合了freeradius+mysql, pptpd还是单独运行.
五、pptpd+mysql+freeradius整合
mkdir /etc/radiusclient/
下载源码ppp-2.4.4,解压
wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.4.tar.gz
cd ppp-2.4.4/ppp-2.4.4/pppd/plugins/radius/etc
cp * /etc/radiusclient/
vi /etc/radiusclient/radiusclient.conf
auth_order radius
login_tries 4
login_timeout 60
# logins on /dev/ttyS2) (default /etc/nologin)
nologin /sbin/nologin
issue /etc/radiusclient/issue
authserver localhost:1812
acctserver localhost:1813
servers /etc/radiusclient/servers
dictionary /etc/radiusclient/dictionary
login_radius /usr/local/sbin/login.radius
seqfile /var/run/radius.seq
# file which specifies mapping between ttyname and NAS-Port attribute
mapfile /etc/radiusclient/port-id-map
default_realm
# time to wait for a reply from the RADIUS server
radius_timeout 10
# resend request this many times before trying the next server
radius_retries 3
login_local /bin/login
vi /etc/ppp/options.pptpd
在最后添加:
# put plugins here
# (putting them higher up may cause them to sent messages to the pty)
logfile /var/log/pptpd.log
plugin /usr/lib64/pppd/2.4.4/radius.so
#plugin /usr/lib64/pppd/2.4.4/radattr.so
radius-config-file /etc/radiusclient/radiusclient.conf
###注意,我的是64位系统,所以模块在/usr/lib64/pppd/2.4.4 下面。32位的在 /usr/lib/pppd/2.4.4
vi /etc/radiusclient/server
localhost testing123
vi /etc/radiusclient/dictionary
添加:
INCLUDE /etc/radiusclient/dictionary.microsoft
INCLUDE /etc/radiusclient/dictionary.ascend
INCLUDE /etc/radiusclient/dictionary.merit
INCLUDE /etc/radiusclient/dictionary.compat
否则拨号时后台日志会报错,无法拨入,客户端报691错误:
Connect: ppp0 /dev/pts/5
rc_avpair_new: unknown attribute 11 rc_avpair_new: unknown attribute 25
Peer test failed CHAP authentication
Connection terminated.
哈哈,从启freeradius 与pptpd ,连接就可以通过了。
如果是无法访问其他的机器,请注意防火墙的设置。这是我的配置文档,绝对的能够跑通。
后记:
后来想通过mac地址来帮定客户端,但是实践了后发现ppp根本就不可能实现这个功能,绑定IP对于内网用户来说,没有任何问题,但是对于从公网连接到 公司的用户来说,根本没有作用。只能放弃。
pkill radiusd 关闭radiusd
radiusd 启动radiusd
service pptpd stop
service pptpd start
检查mysql是否已经开启
测 试:
在数据库里添加一个用户
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('user1', 'Password', '123456');
在 XP系统上用user1 123456 用户登陆。
现在服务器上测试
[root@localhost ~]# radtest user1 123456 localhost 1812 testing123
Sending Access-Request of id 93 to 127.0.0.1 port 1812
User-Name = "user1"
User-Password = "123456"
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=93, length=20
显示如上说明成功
备注:
本文参考了网上几篇文章,亲手安装测试总结而成.可以说是目前网上能找到的比较全的安装使用文档.
参 考文档:
http://linux.chinaunix.net/techd … 06/23/1119944.shtml
http://linux.chinaunix.net/bbs/thread-1061085-1-2.html
对radius库的一些说明
radius 库有10张表
nas 0 MyISAM latin1_swedish_ci 1.0 KB
-
radacct 4 MyISAM latin1_swedish_ci 10.6 KB
-
radcheck 2 MyISAM latin1_swedish_ci 3.1 KB
-
radgroupcheck 0 MyISAM latin1_swedish_ci 1.0 KB
-
radgroupreply 4 MyISAM latin1_swedish_ci 3.2 KB
-
radippool 0 MyISAM latin1_swedish_ci 1.0 KB
-
radpostauth 14 MyISAM latin1_swedish_ci 2.6 KB
-
radreply 0 MyISAM latin1_swedish_ci 1.0 KB
-
radusergroup 1 MyISAM latin1_swedish_ci 2.0 KB
-
wimax 0 MyISAM latin1_swedish_ci 1.0 KB
-
其 中重要的有
radacct 用来用户登陆后,详细信息,包括登陆和下线时间,上传和下载字节数
radcheck 用来记录用户账户、密码
radpostauth 记录所有用户没一次登陆的开始时间及状态
via{boobooke.com}
原创文章,转载请注明: 转载自PT Ubuntu Blog
本文链接地址: http://www.ptubuntu.com/2010/10/3908.html
(责任编辑:IT)
Pptpclient官网http://pptpclient.sourceforge.net/howto-diagnosis.phtml#pppd_options 1. 使用yum安装ppp和pptp包 yum -y install ppp yum -y install pptp 如果yum不具备pptp,可到 http://pptpclient.sourceforge.net 下载安装,这里建议选用rpm包。 本人安装采用的是:http://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.7.2/pptp-1.7.2-3.rhel5.i386.rpm/download rpm -ivh ./pptp-1.7.2-3.rhel5.i386.rpm 2. 配置pptp pptpsetup --create vpn连接名称(自定义) --server VPN服务器IP --username VPN用户名 --password VPN密码 执行完成以后会生成文件 /etc/ppp/peers/vpn连接名称(自定义) 编辑该文件: vi /etc/ppp/peers/vpn连接名称(自定义) 将该文件修改并完善为如下: # written by pptpsetup pty "pptp VPN服务器IP --nolaunchpppd" lock #noauth nobsdcomp nodeflate name VPN用户名 remotename vpn连接名称(自定义) ipparam 服务器ip require-mppe-128 refuse-pap refuse-chap refuse-eap refuse-mschap 编辑文件 /etc/ppp/chap-secrets vi /etc/ppp/chap-secrets 内容如下: # Secrets for authentication using CHAP # client server secret IP addresses VPN用户名 vpn连接名称(自定义) "VPN密码" * 3. 复制命令 cp /usr/share/doc/ppp-2.4.4/scripts/pon /usr/sbin/ cp /usr/share/doc/ppp-2.4.4/scripts/poff /usr/sbin/ chmod +x /usr/sbin/pon /usr/sbin/poff 4.拨vpn pon vpn连接名称(自定义) 5.查看是否连接 ifconfig ————————————————————————————————————- ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.2.224 P-t-P:192.168.2.200 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:80 (80.0 b) TX bytes:80 (80.0 b) ————————————————————————————————————- 6.断开连接 poff vpn连接名称(自定义) 至此,安装完成。 vi /etc/ppp/options.pptpd 去掉下面两个参数的"#" debug \\打开调试.这样可以在/var/log/message中看到调试结果 dump 或者 logfile /var/log/pptpd.log \\指定日志文件 详细出处参考:http://www.jb51.net/article/23478.htm 1.连接完毕要添加路由才能上网 例如: sudo route add default dev ppp0 解决办法 根基pptpclient官方描述 http://pptpclient.sourceforge.net/routing.phtml#all-to-tunnel ,在PPP端口启用的时候,/etc/ppp/ip-up会被pppd执行,内有 run-parts来运行/etc/ppp/ip-up.d内的脚脚本,传递的参数是 # This script is called with the following arguments: # Arg Name # $1 Interface name # $2 The tty # $3 The link speed # $4 Local IP number # $5 Peer IP number # $6 Optional ``ipparam'' value foo $1是默认设备名字。 若以加默认路由的脚本可以这样写 route add default dev $1 注意这个脚本不能有 .sh后缀名,经过实际测试,有后缀的都不能运行。可能和run-parts有关 2.默认设置连接win 2003搭建的VPN死活链接不上 Using interface ppp0 Connect: ppp0 <--> /dev/pts/5 LCP terminated by peer (%M-O^]k^@ 乱码..... Connection terminated. Modem hangup 解决方法见下文文档解析 3.CentOS下此包不在pptp-linux而在pptp-setup下面。 pon,plog脚本在默认在 /usr/share/doc/ppp-*/scripts/ 下面 cd /usr/share/doc/ppp-2.4.4/scripts cp pon /usr/local/bin/ cp poff /usr/local/bin/ cp plog /usr/local/bin/ chmod +x /usr/local/bin/p* nano /usr/local/bin/plog #修改 /var/log/syslog为/var/log/messages#(若需要) 密码保存在 /etc/ppp/chap-secrets 这里面的内容和格式和http://ihipop.info/2010/06/1265.html#chap-secrets是一样的。参考设置即可 主机设定保存在 /etc/ppp/peers/ 可以对此做进一步设定。 比如原来连win2003的PPTP一直连接不上,是因为认证方式问题 nano /etc/ppp/peers/vpnname 添加一行 refuse-eap 即可(VIA) pty "pptp ip --nolaunchpppd" lock noauth nobsdcomp nodeflate name ihipop remotename vpn160 ipparam vpn160 require-mppe-128 refuse-eap # written by pptpsetup pty "pptp serverIP --nolaunchpppd" lock #noauth nobsdcomp nodeflate name username remotename myvpn ipparam myvpn require-mppe-128 refuse-pap refuse-chap refuse-eap refuse-mschap demand idle 300 这里demand表示自动按需拨号,idle表示空闲多少秒以后自动断线。 而persist则代表了一直保持连接 PPTP+freeradius+mysql对vpn进行流量及时长监控 昨天放了一vpn给大家玩,虽然是自助注册,但是不能对流量和时长进行监控,今天弄了一下PPTP+freeradius+mysql,可以对vpn进行流量及时长监控 有需要的,大家去申请一下用用,http://www.31sky.net/vpn 截个图上来给大家看看! Linux+pptp+mysql+freeradius 安装使用发布于 2010-10-28 by ptubuntu 归档于 Ubuntu
本文链接地址: http://www.ptubuntu.com/2010/10/3908.html (责任编辑:IT) |