记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。
一、首先检查你VPS的PPP和TUN有没有启用:
  1. cat /dev/ppp  
  2. cat /dev/net/tun  

显示结果为:cat: /dev/ppp: No such device or address和cat: /dev/net/tun: File descriptor in bad state,表明通过,上述两条只要有一个没通过都不行。如果没有启用,你可以给VPS提供商Submit 一个 Ticket请求开通:


  1. Hello  
  2.   
  3. Could you enabled TUN-TAP for me? I want run pptp-vpn on my VPS.  
  4. Thank you.  

 

确认PPP和TUN启用后,开始安装ppp和iptables:

yum install -y ppp iptables

 

 二、安装pptp:
  1. rpm -ivh http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm(32位系统)  
  2.   
  3. rpm -ivh http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm(64位系统)  

如果是Centos 6.0 需要按如下步骤安装

wget http://wty.name/linux/sources/dkms-2.0.17.5-1.noarch.rpm

wget http://wty.name/linux/sources/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

wget http://poptop.sourceforge.net/yum/stable/rhel6/i386/pptpd-1.3.4-2.el6.i686.rpm

  1.    
  1.    
  1. 安装  
  2.   
  3.  rpm -ivh dkms-2.0.17.5-1.noarch.rpm  
  4.  rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm  
  5.  rpm -ivh pptpd-1.3.4-2.el6.i686.rpm  
  1.    
  1. 三、配置pptp,编辑/etc/pptpd.conf文件:  
  1. vim /etc/pptpd.conf  
  1.    
  1. 把下面字段前面的#去掉:  
  2. localip 192.168.0.1  
  3. remoteip 192.168.0.234-238,192.168.0.245  

其中192.168.0.1改为本机地址

四、编辑/etc/ppp/options.pptpd 文件:

vim /etc/ppp/options.pptpd
去掉ms-dns前面的#,并使用Google的DNS服务器,修改成如下字段:
ms-dns 8.8.8.8
ms-dns 8.8.4.4


五、设置VPN账号密码,编辑/etc/ppp/chap-secrets这个文件:
vim /etc/ppp/chap-secrets

六、修改内核设置,使其支持转发,编辑 /etc/sysctl.conf 文件:
vim /etc/sysctl.conf

将“net.ipv4.ip_forward”的值改为1,同时在“net.ipv4.tcp_syncookies = 1”前面加#

七、使sysctl.conf配置文件生效并添加iptables转发规则:

  1. sysctl -p  
  1. #加载一些需要的模块  
  1. modprobe iptable_nat  
  1. modprobe ip_conntrack  
  1. modprobe ip_conntrack_ftp  
  1. modprobe ip_nat_ftp  
  1. #清除所有已定义的规则,除掉所有用户"自定义"的链,将所有chain的计数和流量统计为零  
  1. iptables -F  
  1. iptables -X  
  1. iptables -Z  
  2.   
  3.   
  4. #修改SNAT ,用于上外网  
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source ***.***.***.*** (***.***.***.***为你VPS的公网IP地址,eth0为网卡名字)
#修改DNAT,用于访问内网(webf服务,如果需要的话)
iptables -t nat -l POSTROUTING -i eth0 -p tcp  --dport 80 -j DNAT --to-destination 192.168.0.1 
iptables -t nat -l POSTROUTING -i eth0 -p udp  --dport 80 -j DNAT --to-destination 192.168.0.1 

网卡eth1端口号53路由进入之前的包进行修改并做目标地址转换

保存iptables转发规则:

      /etc/init.d/iptables-save

重启iptables:

     /etc/init.d/ service iptables restart

重启pptp服务:

      /etc/init.d/pptpd restart

设置开机自动运行pptp服务:

     chkconfig pptpd on

设置开机自动运行iptables服务:

     chkconfig iptables on


如果连接出现错误619则输入如下命令解决:

  1. rm /dev/ppp  
  2. mknod /dev/ppp c 108 0  


如果出现错误734则修改/etc/ppp/options.pptpd文件,在require-mppe-128字段前面加#

部分网站访问不了,修改mtu

iptables -A FORWARD -p tcp –-syn -s 172.16.0.0/24 -j TCPMSS –-set-mss 1256

 八  安装freeradius

yum -y install freeradius  freeradius-utils freeradius-mysql

不过这样安装后版本过低,没有与Mysql想匹配的sql文件,可以按如下方式安装

wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.12.tar.gz

tar -zxvf freeradius-server-2.1.12.tar.gz

cd freeradius-server-2.1.12

./configure

make

make install

 

1.3.

    验证freeradius

   启动freeradius服务debug模式

添加一个帐户:
    # vi /usr/local/freeradius/etc/raddb/users
       加入如下代码在任意地方  
        test    Auth-Type:=local,
                User-Password=="123456",            
                Service-Type = Framed-User,        
                Framed-Protocol = PPP,               
                Framed-IP-Address = 192.168.0.6,         
                Framed-IP-Netmask = 255.255.255.0
其中test就是客户端拨vpn时所使用的用户名,Framed-IP-Address即要分配给客户端的ip,Framed-IP-Netmask是子网掩码了
radiusd -X
出现“Ready to process requests.”表示启动ok。

另外开一个shell客户端,输入测试命令:

编辑radiusd.conf文件

1
2
cd /etc/freeradius/
sudo vi radiusd.conf

大多数地方都不用改

1
2
3
4
5
6
7
8
9
proxy_requests  = no   #一般服务器不会需要代理
 
modules {
    $INCLUDE ${confdir}/modules/
    $INCLUDE eap.conf
    $INCLUDE sql.conf
#   $INCLUDE sql/mysql/counter.conf    #现在先不开统计模块
#   $INCLUDE sqlippool.conf    #这个文件目前不存在
}

编辑clients.conf文件

1
sudo vi clients.conf

重要的是修改共享密钥,和之前设置的一样

1
2
3
4
5
client localhost {
    ipaddr = 127.0.0.1
    secret = testing123   #改成和之前设置的一样
    require_message_authenticator = no
#   nastype = other    #这行貌似没啥用,自己看上面的英文说明

radtest test test localhost 0 testing123
服务端和客户端会有收发消息的信息输出。
顺利通过。

 

 

安装配置流程

配置FreeRADIUS

[1] 登入终端后,首先安装FreeRAIUS,一般源里两个版本,其中FreeRADIUS 1.x已经不被支持了,我们安装的是freeradius2。

1
yum install freeradius2 freeradius2-mysql freeradius2-utils

[2] 安装完后,我们编辑/etc/raddb/users,在文件开头加上:testing Cleartext-Password := "password"

Tips:你需要了解如何使用SSH终端,和终端里文本编辑的方法,例如Vim的使用。

[3] 启动radiusd,第一次启动会生成密钥,稍等片刻即可。使用-X参数可以让调试信息直接输出屏幕:

1
radiusd -X

[4] 新打开一个SSH终端,测试服务器是否连通:

1
radtest testing password 127.0.0.1 0 testing123

如果看到Access-Accept就说明连接成功了。如果看到类似“Ignoring request to authentication address * port 1812 from     unknownclient”的文字,可能需要去修改/etc/raddb/clients.conf,将client localhost段下的ipaddr改为服务器的IP,而不是127.0.0.1。

测试连接成功后,我们可以把users里临时加上去的第一行删除。

[5] 下载ppp源码,因为要用到其中的配置文件:

1
2
3
wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz
tar zxvf ppp-2.4.5.tar.gz
cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient

[6] 编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“MyVPN”:

1
localhost MyVPN

[7] 编辑/usr/local/etc/radiusclient/dictionary,将最后一行改为:

1
INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft

可以再添加一行:

1
INCLUDE /usr/local/etc/radiusclient/dictionary.merit

[8] 编辑/etc/raddb/clients.conf,把client localhost段下的secret改成刚才指定的密钥。

[9] 编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#

[10] 添加MySQL用户及数据库,你可以使用现成的phpMyAdmin等工具,也可以在终端下操作。本例中,创建了radius的用户和同名的数据库:

1
2
3
CREATE USER 'radius'@'localhost' IDENTIFIED BY '***';
CREATE DATABASE IF NOT EXISTS `radius` ;
GRANT ALL PRIVILEGES ON `radius` . * TO 'radius'@'localhost';

[11] 编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#

[12] 编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:

  • authorize段,关掉files,打开sql,也可以把unix关掉
  • preacct段,关掉files
  • accounting段,打开sql,也可以把unix关掉
  • session段,打开sql
  • post-auth段,打开sql
  • pre-proxy段,关掉files

到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。

配置daloRADIUS

[13] 首先下载并安装daloRADIUS,其中需要安装一个Pear-DB的包:

wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
pear install DB
mkdir /usr/share/daloRadius
tar zxvf daloradius-0.9-8.tar.gz
mv daloradius-0.9-8/* /usr/share/daloRadius/
rm -r daloradius-0.9-8

[14] 这时我们将daloRADIUS中附带的sql文件导入MySQL数据库,别忘了输入密码:

1
mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

[15] 编辑/usr/share/daloRadius/library/daloradius.conf.php,这是daloRADIUS的配置文件。首先是MySQL登录信息:

1
2
3
4
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = '***';  // 设为自己的密码 
$configValues['CONFIG_DB_NAME'] = 'radius';

下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来:

1
$configValues['CONFIG_DB_TBL_RADUSERGROUP'] = 'radusergroup';

然后修改daloRADIUS的路径:

 
$configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/usr/share/daloRadius/var';
$configValues['CONFIG_FILE_RADIUS_PROXY'] = '/usr/local/etc/raddb/proxy.conf';

[16] 添加Apache虚拟主机,如果有Web控制面板什么的自然就方便多了,不然就编辑/etc/httpd/conf/httpd.conf,加入:

1
2
3
Alias /vpn "/usr/share/daloRadius/"
<Directory "/usr/share/daloRADIUS">
</Directory>

[17] 重启重启Apache和MySQL:

1
2
service httpd restart
service mysqld restart

[18] 打开浏览器,进入daloRADIUS的管理页面(本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。

daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。

[19] 在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。

配置pppd

[20] 编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2:

1
2
3
4
5
refuse-pap
refuse-chap
refuse-mschap
require-mppe-128
require-mschap-v2

在配置文件最后加上3行:

1
2
3
plugin radius.so
plugin radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf

启动服务

[21] 一切完成后我们不需要使用debug模式启动radiusd了:

1
service radiusd start

[22] 当然,我们可以把radiusd和pptpd设为开机启动服务:

1
2
chkconfig radiusd on
chkconfig pptpd on

至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述

 




转载请标明出处【Centos6 VPS PPTP+FreeRADIUS+MySQL+daloRADIUS VPN 配置】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论