├── .Ulysses-Group.plist ├── 1.Freeradius 服务端+测试工具.md ├── MariaDB.md ├── PPTP.md ├── README.md ├── Radius 启用 MySQL.md ├── Radius 流控~.md ├── Untitled.md └── schema.sql 详解.md /.Ulysses-Group.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | createMarkedFile 6 | 7 | sheetClusters 8 | 9 | 10 | Untitled.md 11 | 12 | 13 | README.md 14 | 15 | 16 | Freeradius 服务端.md 17 | 18 | 19 | Radius 启用 MySQL.md 20 | 21 | 22 | schema.sql 详解.md 23 | 24 | 25 | Radius 流控~.md 26 | 27 | 28 | PPTP.md 29 | 30 | 31 | 1.Freeradius 服务端+测试工具.md 32 | 33 | 34 | MariaDB.md 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /1.Freeradius 服务端+测试工具.md: -------------------------------------------------------------------------------- 1 | # Freeradius 服务端: + 测试工具安装 2 | 3 | | 安装方式 | | 安装版本 | 4 | |:-------:|:------------------------------- |:--------------| 5 | |自动安装: | sudo apt-get install freeradius | 非最新版 | 6 | |手动安装: |编译源代码 | 最新版,推荐. | 7 | 8 | 9 | # 手动安装流程: 10 | 11 | 12 | 13 | - 卸载软件: ( 如果之前安装过 freeradius 2.0 的话 ) 14 | - apt-get remove freeradius 15 | - apt-get autoremove 16 | > 自动卸载不需要的软件. 17 | 18 | - 官网下载最新版 源编码包. ( Debian 下载方法: wget + 下载链接 ) 19 | 20 | 21 | - 22 | 23 | 24 | 指定FreeRADIUS Server地址,并设置通信密码 25 | 26 | cat \>\>/usr/local/etc/radiusclient/servers\<\ - mariadb 由 cmake 编译而成. 8 | > - 编译 cmake 又需要 安装几个相应组件. 9 | 10 | apt-get install gcc 11 | 12 | sudo apt-get install build-essential 13 | 14 | apt-get install libncurses5-dev 15 | 上面三条是安装相应组件 16 | 下面是安装 下载 编译 cmake 17 | wget https://cmake.org/files/v3.4/cmake-3.4.0-rc2.tar.gz ; tar -xzf cmake-3.4.0-rc2.tar.gz ; cd cmake-3.4.0-rc2 18 | 19 | ./configure ; make ; make install 20 | 21 | 然后 回到 mariadb 目录 进行编译安装 (安装很慢的.) 22 | 23 | cd .. ; cmake . ; make ; make install 24 | 25 | > - cmake指定编译选项的方式不同于make 26 | > - 编译不成功 再次编译需要清楚缓存 再编译. 27 | > - rm CMakeCache.txt 28 | > 29 | 30 | 安装好 后 mysql -V 查看版本 31 | 32 | 33 | 34 | 以下會介紹在 Debian 安裝及設定 MariaDB Server 的步驟: 35 | 1. 安裝 “python-software-properties” 套件 36 | # apt-get install python-software-properties 37 | # apt-key adv –recv-keys –keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db 38 | 2. 加入 MariaDB 官方 repository: 39 | # add-apt-repository ‘deb http://mariadb.biz.net.id//repo/10.1/debian sid main’ 40 | # apt-get update 41 | 3. 安裝 MariaDB Server 及 Client: 42 | # apt-get install mariadb-server mariadb-client 43 | 安裝時系統會詢問新的 MariaDB root 密碼, 建議設定新的密碼, 不要用預設的空密碼。 44 | 完成安裝後, 可以用以下指令嘗試連接到 MariaDB, 密碼是剛剛設定的密碼。如果可以成功連接, 那便表示安裝成功了。 45 | # mysql -u root -p 46 | Quick Adsense WordPress Plugin: http://quicksense.net/ 47 | 48 | mac os 安装 mariadb 49 | 50 | brew install cmake 51 | 52 | brew install gcc 53 | 54 | 55 | 56 | 57 | 下载 mariadb 解压 58 | 59 | wget http://mirror.aarnet.edu.au/pub/MariaDB//mariadb-10.1.8/source/mariadb-10.1.8.tar.gz ; tar -xzf mariadb-10.1.8.tar.gz ; cd mariadb-10.1.8 60 | 61 | cmake . 62 | make 63 | make install 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | [1]: https://downloads.mariadb.org/mariadb/repositories/ 96 | [2]: https://cmake.org/download/ -------------------------------------------------------------------------------- /PPTP.md: -------------------------------------------------------------------------------- 1 | ## Debian 安装教程: 2 | 3 | 4 | 5 | 一键安装脚本. 6 | 7 | apt-get update ; apt-get install pptpd -y 8 | 9 | sed -i 'N;$d' /etc/pptpd.conf 10 | 11 | echo -e "localip 192.168.217.1\nremoteip 192.168.217.234-238,192.168.217.245" \>\> /etc/pptpd.conf 12 | 13 | 14 | echo xujian pptpd 0219 \* \>\> /etc/ppp/chap-secrets 15 | 16 | sed -i -e 's/^#.ms-dns 192.168.1.1/ms-dns 8.8.8.8/g' -i -e 's/^#.ms-dns 192.168.1.2/ms-dns 8.8.4.4/g' /etc/ppp/options 17 | 18 | sed -i 's/^#net.ipv4.ip\_forward=1/net.ipv4.ip\_forward=1/g' /etc/sysctl.conf 19 | 20 | sysctl -p ; /etc/init.d/pptpd restart ;apt-get install iptables 21 | 22 | 23 | 24 | iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE 25 | 26 | iptables-save \> /etc/iptables.pptp 27 | 28 | cd /etc/network/if-up.d/ ; touch iptables 29 | 30 | echo -e "\#\!/bin/sh" -e "\niptables-restore \< /etc/iptables.pptp" \>\> iptables 31 | 32 | chmod +x /etc/network/if-up.d/iptables 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | - 检查并更新本地软件库: 只更新列表 不更新软件? 44 | 45 | apt-get update #更新软件库 46 | apt-get upgrade #升级软件 少用. -y 直接同意安装. 47 | 48 | 49 | ### 安装 PPTP 50 | 51 | apt-get install pptpd 52 | 53 | ### 配置 PPTP 54 | 删除文件最后两行. 55 | 56 | sed -i 'N;$d' /etc/pptpd.conf 57 | 58 | 添加两行到文件末尾 59 | 60 | echo -e "localip 192.168.217.1\nremoteip 192.168.217.234-238,192.168.217.245" >> /etc/pptpd.conf 61 | 62 | 63 | 64 | > 第一行: vpn 服务器的 IP 地址 随便写,但不要和本地地址冲突就行。​ 65 | > 第二行: 连接 VPN 后,客户端获取到的 IP 地址,(vpn 分配给你的 IP). 66 | 67 | 68 | 69 | ### 添加 VPN 帐户 70 | 71 | echo xujian pptpd 0219 \* >> /etc/ppp/chap-secrets 72 | 73 | 格式: 一行一人 : 用户名 pptpd 用户密码 \*(别忘记最后这个星号) 74 |   75 | 76 | ### 修改 DNS 服务器 77 | 78 | sed -i -e 's/^#.ms-dns 192.168.1.1/ms-dns 8.8.8.8/g' -i -e 's/^#.ms-dns 192.168.1.2/ms-dns 8.8.4.4/g' /etc/ppp/options 79 | 80 | i 参数 直接编辑文件. 81 | e 参数 同时执行多项编辑. 82 | 83 | ### 开启 IPv4 转发 84 | 85 | sed -i 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf 86 | 87 | 88 | ### 应用配置 + 重启 PPTP 服务 + 安装 iptables: 89 | 90 | sysctl -p ; /etc/init.d/pptpd restart ;apt-get install iptables 91 | 92 | 93 | ### 开启iptables转发 (分两个命令运行) 94 | > 大概就是 在 iptables 下面的 nat 表 里面添加规则,允许转发. 95 | 96 | iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE 97 | 98 | iptables-save > /etc/iptables.pptp 99 | 100 |   101 | 102 | ### 开机自动加载 iptables 103 | > 去指定目录; 创建iptables文件 (其实是脚本); 104 | > 写入内容: #!/bin/sh iptables-restore \< /etc/iptables.pptp 105 | > 并给新建脚本运行权限 106 | 107 | cd /etc/network/if-up.d/ ; touch iptables 108 | 109 | echo -e "#\!/bin/sh" -e "\niptables-restore \< /etc/iptables.pptp" >> iptables ; 110 | 111 | chmod +x /etc/network/if-up.d/iptables 112 | 113 | 114 | 115 | 116 | 117 | 118 | 问题汇总: 119 | 120 | 121 | 连上 vpn 能上 qq 不能上网: 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | # Ubuntu 131 | 132 | pptp vpn 安装: 133 | 134 | 1. 安装 pptp : apt-get install pptpd 135 | 136 | 2. 编辑 pptp.conf vi /etc/pptpd.conf 137 | 3. 将以下内容行的注释去掉:(18 / 99 / 100 行) 138 | option /etc/ppp/pptpd-options 139 | localip 192.168.0.1 140 | remoteip 192.168.0.201-245 141 | 这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。 142 | 143 | 144 | 145 | 4. 添加登录用户 146 | vi /etc/ppp/chap-secrets 147 | 添加一行,格式如下 148 | 用户名 pptpd "你想要的密码" \* 用户名不要引号 149 | 密码要用半角双引号括起来 150 | 千万不能忘了 星号.星号是说允许从任何IP地址联接,如果你想单独设定IP地址也可以。 151 | 152 | 理论上到这里一个vpn就已经搭建完毕了。无论你用的是Windows还是OSX,或者是iPhone OS,都可以通过建立一个pptp链接来联入这个VPN。 153 | 154 | 155 | 156 | 157 | 不过你并不能通过这个来上Internet,因为所有的数据都作用于那台pptpd的服务器上, 而不会传入拨入的计算机设备上。要上Internet还需要这么干: 158 | 159 | 设置DNS解析,编辑pptpd-options 160 | vi /etc/ppp/pptpd-options 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 简介 + 详细安装配置教程 2 | 3 | 4 | ### [FreeRADIUS 官网链接](http://freeradius.org) 5 | ### Radius [极品教程链接](http://freeradius.akagi201.org/chapter2/installing-FreeRADIUS.html) 6 | 7 | 8 | 9 | 10 | 11 | #### Remote Authentication Dial In User Service 远程用户拨号认证系统 12 | 13 | | 命令中心: | 简介 | 14 | |:--------:|:----:| 15 | | /etc/init.d/freeradius start/stop/restart|脚本启动服务| 16 | | freeradius -X 或者 radiusd -X | Debug 模式来启动服务 | 17 | | 18 | 19 | 20 | 21 | | 配置文件: | 简介 | 本文 | 22 | |:-----------:|:---:|:---:| 23 | | vi /etc/freeradius/radiusd.conf | 开启 sql 功能 | FreeRADIUS 主配置文件:包含各种子配置文件 24 | | vi /etc/freeradius/clients.conf | 添加NAS客户端用 | 25 | | vi /etc/freeradius/sql.conf | 配置数据库端口 用户名 密码
开启:使radius 可以从数据库 读取客户端信息. | 3306 radius xujian 26 | | /etc/freeradius | freeradius 配置文件目录 27 | | /sbin | freeradius 运行文件目录 28 | 29 | 30 | 31 | |三A框架 | 安全架构模型 |Triple A Framework| 32 | |:-----:|:---------:|:-----------------:| 33 | | authentication | 验证 | 用户是否有权限访问网络.
用户名,密码是否正确 | 34 | | authorization | 授权 | 哪些用户能使用哪些服务 分配 IP 地址 | 35 | | accounting | 记账 | 记录用户网络资源的使用情况 | 36 | 37 | 38 | 39 | | | | | 40 | |:------------:|:-------------------:|:-------------------------:| 41 | | 结构: C/S | Client / Server 端 | 合理分配任务,降低系统开销。 | 42 | | 通信方式: UDP | 快速但不安全 | 1812端口监听 authentication
1813端口监听 accounting | 43 | 44 | 45 | 46 | | 简拼 | 比喻: | 详解 | 47 | |:------:|:--------------------:|:---:| 48 | | NAS | 路由器 | Network Access Server
提供上网功能的设备
通过控制实现网络的 合理+安全 使用
可比喻成 VPN服务器 / 路由器 / 智能交换机 | 49 | | Radius | 电信提供拨号上网的服务器 | 50 | 51 | ## 验证 授权 记账 流程: 52 | 53 | | 对象 | | | 54 | |:--------:|:-----------------------------------:|:----------------------------------------------------------:| 55 | | 用户 | 想上网 | 向路由器发送接入请求 (输入用户名 密码) | 56 | | 路由器 | 收到用户请求 | 向radius服务器转发用户的接入请求 | 57 | | Radius | 收到 路由器 转发的请求 | 查询数据库,得出结果 .
向 路由器 返回消息包 | 58 | | 路由器 | 根据 Radius 的返回消息包 | 判断用户能否接入 能就开始上网 不能就断开用户连接. | 59 | | 开始上网: | 路由器 → RADIUS: 发送记费开始请求包 | 表明对该用户已经开始记费, | 60 | | 结束上网: | 路由器 → RADIUS: 发送记费停止请求包 | 上网时长,上传下载流量,等使用的网络资源统计 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | # FreeRadius: 68 | ##### 部署最广泛最实用的开源RADIUS软件. 缺点: 配置复杂. 69 | ##### 服务端 和 客户端 可以是一台设备 也可以是分开的两台设备. 70 | ##### 实例 高校:用学号密码 就能登录校园wifi. 只需: Radius 的服务器. 支持 Radius 的无线路由器(能刷 dd-wrt). 71 | 72 | | | 比如 | 功能 | 73 | |:-----:|:------:|:--------------------------:| 74 | | 服务端 | VPS | 运行freeradius 服务端软件 | 75 | | 客户端 | 路由器 | 负责将用户信息 传递给服务器 | 76 | | 用户端 | 手机 | 是不需要安装客户端的 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /Radius 启用 MySQL.md: -------------------------------------------------------------------------------- 1 | ### Radius 启用 MySQL 2 | 反注释 743 行: $INCLUDE sql.conf 3 | 4 | vi /etc/freeradius/radiusd.conf 5 | 6 | 7 | 编辑 Radius 数据库配置文件 设置数据库类型 用户密码(要和 sql 密码统一). 8 | 9 | vi /etc/freeradius/sql.conf 10 | 11 | - 反注释 108行 readclients = yes 来使得 freeradius 从数据库 读取客户端信息. 12 | 13 | 14 | - 自定义设置(同步修改别的配置文件.) 15 | - mysql 数据库的端口 37行. 16 | - radius 数据库的 用户名 密码等内容 39行 17 | - 默认:端口 3306 用户名 radius 密码 xujian 18 | 19 | 20 | 21 | 配置 令其使用 mysql 作为数据存储设备 22 | 23 | vim /etc/freeradius/sites-available/default 24 | 25 | - authorize{}字段 (69行) 下: 26 | - 注释 170行 files 行 27 | > 这里的file指的就是usrs文件 28 | > 将不再把用户信息写在users而使用mysql来存储用户信息 29 | - 反注释 177行 sql 行 30 | 31 | 32 | 33 | - accounting{} 字段 (379行) 下: 34 | - 反注释 407行 的 sql 来启用sql来记录统计信息、 35 | 36 | - session{}字段 (451行) 下: 37 | - 反注释 456行 sql行 启用用户同时登录限制功能.(可选功能) 38 | 39 | - post-auth{} 字段 (464行) 下: 40 | - 反注释 478行 sql 行 启用用户登录后进行数据记录功能. 41 | 42 | 43 | 如果你启动了 启用用户同时登录限制功能 那么接下来还要做这一步 44 | 45 | vim /etc/freeradius/sql/mysql/dialup.conf 46 | 47 | 找到下面几行(289-293行) 并反注释. 48 | 49 | Uncomment simul_count_query to enable simultaneous use checking 50 | simul_count_query = "SELECT COUNT(*) \ 51 | FROM ${acct_table1} \ 52 | WHERE username = '%{SQL-User-Name}' \ 53 | AND acctstoptime IS NULL" 54 | 55 | 56 | 57 | 58 | 3、进行测试; 59 | mysql -u root -p 60 | mysql> use radius; 61 | mysql> insert into radcheck(username,attribute,value,op)values("lansgg","Cleartext-Password","password123","="); 62 | 63 | 64 | 65 | 重启 freeradius 66 | 67 | radtest lansgg password123 localhost 10 testing123 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 到这里 mysql 的配置就算完成了. 79 | 80 | 81 | 82 | 83 | 设置信息汇总: 84 | 85 | –MySQL– 86 | localhost: 3306 87 | –Radius– 88 | authentication *: 1812 89 | accounting *: 1813 90 | inner-tunnel authentication 127.0.0.1: 18120 91 | Proxy *:1814 92 | -------------------------------------------------------------------------------- /Radius 流控~.md: -------------------------------------------------------------------------------- 1 | # 文章目录 2 | ### [ 安装 FreeRADIUS 工具箱(含测试工具)](#工具包) --- apt-get install freeradius-utils 3 | 4 | ### [安装 Mariadb 数据库(mysql 替代版)]() 5 | 6 | ### [ 配置 客户端 ](#客户端) 7 | ### [ 取消注释 steve段(81-89行) :开启测试 ](#开启测试) 8 | 9 | vi /etc/freeradius/users 10 | 11 | ### 改共享密码 : Cleartext-Password := "xujian" 12 | 13 | - 查看防火墙状态: iptables -L 14 | - 如有需要 修改防火墙配置 允许freeradius所使用的端口1812,1813通过。 15 | 16 | iptables -A INPUT -p udp --dport 1812 -j ACCEPT 17 | iptables -A INPUT -p udp --dport 1813 -j ACCEPT 18 | 19 | 20 | ### 新建数据库.以及导入 一系列表. 21 | mysql -u root –p 22 | 要求输入密码时,直接回车即可。 23 | 24 | create database radius; 25 | 26 | grant all on radius.* to radius@localhost identified by "radpass"; 27 | 28 | exit; 29 | 30 | 导入表结构 31 | 32 | mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql 33 | 34 | 35 | ### 建立 用户和组 36 | 输入mysql -u root -p 输入密码 进数据库. 37 | use radius,使用该数据库 38 | 1. 建立组信息:(在此新建组名称为user) 39 | insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local'); 40 | insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User'); 41 | insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.255'); 42 | insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0'); 43 | 44 | 2. 建立用户信息:(在此新建用户名为test,密码为testpwd) 45 | insert into radcheck (username,attribute,op,value) values ('test','Cleartext-Password',':=','testpwd'); 46 | 47 | 3. 将用户加入组中: 可以在 radusergroup 表里面看到. 48 | insert into radusergroup (username,groupname) values ('test','user'); 49 | 50 | 51 | - [配置 sql.conf](#sql.conf) 52 | - [安装 服务端](#服务端安装) 53 | - [配置 VPN服务器](#配置VPN服务器) 54 | - [配置 PPTPd](#配置pptpd) 55 | - - [详解 ](#) 56 | - 启用 Mysql 57 | - 58 | 59 | 60 | 61 | 62 | 63 | # 配置客户端: 64 | 安装服务端 就自带客户端的.!!!!!! 版本 1.1.7 65 | 66 | 67 | vi /etc/freeradius/clients.conf, 68 | 添加如下内容,注意将IP_ADDRESS和SHARED_SECRET换为你的服务器IP和你的共享密钥。 69 | 70 | client IP_ADDRESS { 71 | ipaddr = IP_ADDRESS 72 | secret = SHARED_SECRET 73 | require_message_authenticator = no 74 | } 75 | 76 | 77 | 78 | 79 | 80 | 81 | 配置RadiusClient 82 | RadiusClient用于将pptpd和xl2tpd的radius插件的验证请求发送给FreeRadius服务器,充当nas的角色,其配置文件位于/etc/radiusclient内。 83 | 84 | 85 | 86 | 87 | 客户端可以有很多个 88 | 89 | 每个 客户端 可设置单独的 共享密码. 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | ------------------------------------------------------------------------------ 100 | 101 | # 安装配置流程简介: 102 | 103 | 104 | 1. 安装主要软件及依赖包. mysql php 105 | 2. 新建mysql数据库 106 | 3. 编辑 sql.conf 修改 sql radius数据库 登录密码. 107 | - 编辑 radius.conf 让 freeradius 可以用 sql 功能. 108 | - 编辑 clients.conf 设置新的共享密码 109 | 110 | 111 | 112 | - apt-get update 更新软件列表. 113 | - apt-get upgrade 更新软件. 114 | - apt-cache search radiusclient 搜索软件. 115 | 116 | 安装 FreeRADIUS 软件 和 其他组件. 117 | 118 | | 软件包 | 简介 | 要求 | 119 | |:---:|:---:|:---:| 120 | | freeradius | 服务器端程序 | 必须装 121 | | freeradius-utils | 客户端程序 必装 包括:
要用到 radtest 测试是否正常 | radclient
radtest , radzap
radsniff , smbencrypt | 122 | | freeradius-mysql | mysql 插件 | 必选 | 123 | | phpmyadmin | 选择: apache2
选择: 配置 no | 必选 | 124 | | mysql-server | 125 | | freeradius-dialupadin | web管理插件 | 126 | | libfreeradius2 | FreeRADIUS的共享库 | 127 | | php5-gd php5-curl | php-pear php5-mail-mime php-db | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | ### 修改默认通信密码 142 | - radius: udp 协议传输的. 安全性能不太好 所以就有了通信密码 143 | 144 | - 通信密码:用于加密 freeradius 服务器 和 客户端 通信的信息. 共享 key 145 | - ** 强烈建议修改更改通信密码 ( 第101行 → 默认的 testing123 改为 xujian ) ** 146 | 147 | vi /etc/freeradius/clients.conf 148 | 改掉后如果测试有问题 重启服务器电脑使修改内容生效. 149 | 150 | 151 | 152 | 153 | 154 | ##### 启用测试账号,测试 freeradius 是否正常工作 155 | 156 | vi /etc/freeradius/users ( 注释掉 76行 ) 157 | 158 | # steve Cleartext-Password := "testing" 159 | 160 | 161 | - FreeRADIUS自带一个默认的测试客户用户叫做localhost. 用来帮助排查问题和测试. 162 | 163 | 164 | - 用 启动脚本来关闭FreeRADIUS来确保没有其他实例在运行. 165 | 166 | /etc/init.d/freeradius stop 167 | 168 | - 以debug模式启动FreeRADIUS. 169 | 170 | freeradius -X 171 | 172 | 屏幕上的最后一行是: Ready to process requests. 173 | 说明安装正确, 如果这个没有发生, 阅读FreeRADIUS的debug输出. 174 | 175 | 176 | - 本地电脑 另建终端 ssh登服务器 执行 177 | 178 | radtest steve testing localhost 1812 xujian 179 | 180 | |命令|解析| 181 | |:---:|:---:| 182 | | radtest | 测试命令 183 | | steve testing | 测试用户名 测试密码 184 | | localhost 1812 | freeradius 运行的 IP 地址和 端口号 185 | | xujian | 通信密码 186 | 187 | 188 | 189 | 测试成功 有如下行 190 | 191 | rad_recv: Access-Accept packet from host 127.0.0.1 ...... 192 | 193 | 194 | 195 | ------- 196 | 197 | 198 | 199 | 200 | 201 | 202 | # 配置VPN服务器 203 | 为pptpd和xl2tpd启用radius插件,首先查找插件的位置。 204 | 205 | sudo updatedb 206 | locate radius.so 207 | 插件通常位于/usr/lib/pppd/2.4.5/radius.so。 208 | 209 | 210 | 211 | ### 配置pptpd 212 | 查看/etc/pptpd.conf,获取pptpd的ppp配置文件位置 213 | 214 | option /etc/ppp/pptpd-options 215 | 修改/etc/ppp/pptpd-options文件,在最后添加如下两行,注意修改插件的具体位置。 216 | 217 | plugin /usr/lib/pppd/2.4.5/radius.so 218 | radius-config-file /etc/radiusclient/radiusclient.conf 219 | 重启pptpd 220 | 221 | sudo service pptpd restart 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | ## 添加用户: 231 | 232 | | 233 | |:--- 234 | | 登陆 MySQL 数据库 --------------------------------------------------------------------------------------------- mysql -uroot -p; 235 | | 使用 radius 数据库 --------------------------------------------------------------------------------------------------- USE radius; 236 | | 向 radchec表添加用户 (用户名 xujian,密码 xujian ) : 237 | | INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('xujian','Cleartext-Password',':=','xujian'); 238 | |将用户 xujian 加入VIP1用户组: 239 | | INSERT INTO radusergroup (username,groupname) VALUES ('xujian','VIP1'); 240 | 241 | 242 | 243 | 244 | 默认freeradius只允许本地客户端发起认证, 245 | 这里假设有一台提供VPN服务的服务器名字是red, 246 | ip为198.74.49.76,设置的共享密码为xujian, 247 | 248 | 其中IP必须为客户端IP,这里 vps 服务器 既当服务端 又当 客户端. 249 | 250 | shortname是可以随意设置的,客户端连接的时候会被要求提供secret: 251 | 252 | vi /etc/freeradius/clients.conf 253 | 254 | 255 | client IP_ADDRESS { 256 | ipaddr = 198.74.49.76 257 | secret = xujian 258 | require_message_authenticator = no 259 | } 260 | 261 | 262 | 263 | 264 | 265 | 266 | 编辑 clients.conf,确定哪个 IP 范围可以访问 Radius 服务,这里 secret 一行的 testing123 就是上面 DD-WRT 要用到的 WPA Shared Key: 267 | 268 | $ sudo vi /etc/freeradius/clients.conf 269 | 270 | ... 271 | client 192.168.2.0/24 { 272 | require_message_authenticator = no 273 | secret = testing123 274 | shortname = vpsee-network 275 | } 276 | ... 277 | 278 | 279 | 280 | client 192.168.1/24 { 281 | shortname = netgear 282 | secret = xujian 283 | require_message_authenticator = no 284 | } 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | # clients.conf 300 | 301 | 客户端配置目录: 增加 NAS 客户端到这里才能连接. 302 | 303 | 304 | 127.0.0.1 也叫 localhost 默认是开启的 方便你测试 radius 是否能正常工作. 305 | 306 | 每个 客户端 都有个 shortname 用来区分别的客户端. 307 | 308 | 1.0 版本 client 后面跟的是 客户端的 ip. 309 | 2.0 版本 ip 由中括号 里面的 ipaddr 来定义了. 310 | 311 | 例子: 312 | 313 | client localhost { 314 | # ip 地址. 或者 ip 组!!!!! 315 | ipaddr = 127.0.0.1/24 316 | 默认 子网掩码 是 32 最好不要改. 317 | 318 | 319 | # 共享密码: 320 | 321 | 必须改. 322 | 323 | 老的客户端 在发起连接请求时候 可能不发送 Message-Authenticator 324 | require_message_authenticator = no 关闭这个功能 就好了 待确定. 325 | 326 | 327 | short name 也就是 ip 的 别名 为了区别不同客户端用 328 | 客户端1.版本 需要 329 | 2 版本 不需要. 330 | 331 | 332 | 333 | 334 | 现在可以给 每个客户端 都设定各自的密码. 335 | 比如: 336 | 337 | client 192.168.0.0/24 { 338 | secret = testing123-1 339 | shortname = private-network-1 340 | } 341 | 342 | client 192.168.0.0/16 { 343 | secret = testing123-2 344 | shortname = private-network-2 345 | } 346 | 347 | 348 | 349 | 只允许固定的 ip 能连接服务器. 350 | clients per_socket_clients { 351 | client 192.168.3.4 { 352 | secret = testing123 353 | } 354 | } 355 | 356 | 357 | 358 | 359 | 360 | 配置 默认表: 361 | 362 | vi /etc/freeradius/sites-available/default 363 | 364 | 365 | 确保 pam 行 没被注释掉 366 | 367 | authenticate { 368 | Auth-Type PAP { 369 | pap 370 | } 371 | Auth-Type CHAP { 372 | chap 373 | } 374 | Auth-Type MS-CHAP { 375 | mschap 376 | } 377 | pam 378 | unix 379 | eap 380 | } 381 | ... 382 | 383 | 384 | 385 | 386 | 387 | 同样的确定 inner-tunnel 配置文件里面的 pam 一行没有被注释掉: 388 | 389 | vi /etc/freeradius/sites-available/inner-tunnel 390 | 391 | authenticate { 392 | Auth-Type PAP { 393 | pap 394 | } 395 | Auth-Type CHAP { 396 | chap 397 | } 398 | Auth-Type MS-CHAP { 399 | mschap 400 | } 401 | pam 402 | unix 403 | eap 404 | } 405 | 406 | 407 | 408 | 409 | 410 | 在 users 加入下面认证类型: 411 | 412 | $ sudo vi /etc/freeradius/users 413 | ... 414 | DEFAULT Auth-Type = PAM 415 | Fall-Through = 1 416 | ... 417 | 418 | 419 | 420 | 421 | # 报错汇总: 422 | 423 | freeradius -X 424 | 425 | 错误: Failed binding to authentication address * port 1812: Address already in use 426 | 427 | 428 | 原因: freeradius 已经在运行. 没必要再启动. 429 | 430 | 431 | 432 | 查看 linux 系统运行 进程. 命令 ps -A 显示所有进程. 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 配置流程: 小改 改一次 测试一次 457 | 用 freeradius -X 来测试 通过再然后进行小改. 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | ddwrt 路由器 当 radius 客户端: 467 | 将WLAN无线路由器的 IP 地址添加到 RADIUS 服务器上。 468 | 在WLAN无线路由器中启用并指定 RADIUS 服务器。 469 | 将 RADIUS 用户名或组名添加到您的策略中。 470 | 要在配置中启用并指定 RADIUS 服务器。 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | # MySQL 集成 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | #### admin.sql 脚本内容详解: 503 | 504 | CREATE USER 'radius'@'localhost'; 505 | SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('xujian'); 506 | GRANT SELECT ON radius.* TO 'radius'@'localhost'; 507 | GRANT SELECT ON radius.* TO 'radius'@'localhost'; 508 | GRANT ALL on radius.radacct TO 'radius'@'localhost'; 509 | GRANT ALL on radius.radpostauth TO 'radius'@'localhost'; 510 | 511 | -------- 512 | 513 | CREATE USER 'radius'@'localhost'; 514 | >- 给数据库 新建用户 515 | >- radius: 新用户名 516 | >- @localhost: 只能通过服务器本机进行登录. 不能通过网络远程登录!!!!!!! 517 | 518 | SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('xujian'); 519 | > - 给数据库新用户设置密码 520 | > - 密码 要在单引号内 521 | 522 | GRANT SELECT ON radius.* TO 'radius'@'localhost'; 523 | > - 给新建用户 数据库(radius)的 查询 权限. 524 | 525 | GRANT ALL on radius.radacct TO 'radius'@'localhost'; 526 | > - 给新建用户 数据库(radius)的 radacct 表的所有权限. 527 | 528 | GRANT ALL on radius.radpostauth TO 'radius'@'localhost'; 529 | > - 给新建用户 数据库(radius)的 radpostauth 表的 所有权限. 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | ## nas.sql 脚本内容详解: 538 | - 在一个NAS可以使用FreeRADIUS服务器之前, 539 | 必须先在FreeRADIUS服务器上的定义这个客户端. 540 | 541 | 542 | 给数据库添加一个表 网络设备表. 543 | 544 | 使用方法: 545 | > mysql -uroot -p radius < nas.sql 546 | 547 | 548 | CREATE TABLE nas ( 549 | id int(10) NOT NULL auto_increment, 550 | nasname varchar(128) NOT NULL, 551 | shortname varchar(32), 552 | type varchar(30) DEFAULT 'other', 553 | ports int(5), 554 | secret varchar(60) DEFAULT 'secret' NOT NULL, 555 | server varchar(64), 556 | community varchar(50), 557 | description varchar(200) DEFAULT 'RADIUS Client', 558 | PRIMARY KEY (id), 559 | KEY nasname (nasname) 560 | ); 561 | 562 | 563 | 564 | 解析: 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | freeredius -X 582 | 如果调试出错. 把调试文件 想办法 保存成文件. 583 | 然后仔细看 584 | 我的最后几行错误是: 585 | /etc/freeradius/sql.conf[22]: Instantiation failed for module "sql" 586 | /etc/freeradius/sites-enabled/default[177]: Failed to find "sql" in the "modules" section. 587 | /etc/freeradius/sites-enabled/default[69]: Errors parsing authorize section. 588 | 589 | 590 | 591 | 其实重点是 : 你只看了 结果 具体错误 是显示在中间的.电脑太快 你没看的很多内容其实很重要 592 | 593 | 594 | MYSQL check_error: 1054 received 595 | rlm_sql (sql): database query error, SELECT id, nasname, shortname, type, secret, server FROM nas: Unknown column 'server' in 'field list' 596 | 597 | 598 | 跟sql模块没关系,是你的数据库结构被破坏了 599 | 600 | Server字段不存在 601 | 602 | 手动在数据库的nas里添加一个server字段就搞定了 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”; 611 | 用户 test2 密码 abc 612 | 只能在 localhost( 本机 也就是装了 mysql 数据库的那台电脑 也就是别人无法通过网络登录 mysql 只能在服务器电脑上进行登录 ) 上登录 只能对 mydb 数据库 进行查询 插入 修改 删除 613 | 614 | 设空密码的话 : 615 | grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”; 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 作用: 625 | 为 RADIUS 创建 默认的 管理员账号和密码 626 | 给服务器 627 | 628 | 629 | 630 | 应该 该里面的 localhost 和 radpass 不要用默认的. 631 | 632 | 633 | 634 | 635 | 636 | 637 | - GRANT ON: 增加新用户并控制其权限 命令格式: 638 | - grant 操作(查询/插入/修改/删除) on 数据库名称.* to 用户名@登录主机 identified by “密码”; 639 | - 例子: 640 | 641 | grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”; 642 | 643 | select,insert,update,delete 查询 插入 修改 删除 权限 644 | *.* 所有数据库 . 所有数据表? 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 1. 创建 radius 数据库 654 | 655 | create database radius default character set utf8; 656 | 657 | - 安装 freeradius 专用 mysql 插件 658 | 659 | sudo apt-get install freeradius-mysql 660 | 661 | - 安装后, 就多了如下文件夹( 包含几个 sql 脚本 ): 662 | 663 | 664 | cd /etc/freeradius/sql/mysql 665 | 666 | 667 | - admin.sql 脚本: 创建 Radius 数据库的默认管理员 668 | - 默认创建的 账户的名称和密码是 radius / radpass 669 | 670 | - schema.sql 脚本: 自动创建 radius 数据库里的表. 671 | 672 | 修改 radius 数据库的管理员密码 (两个地方同步修改) 673 | 674 | - 在admin.sql里修改管理员密码, 675 | 676 | vi /etc/freeradius/sql/mysql/admin.sql 677 | 678 | 15行 PASSWORD('radpass') 改成 PASSWORD('xujian'); 679 | 680 | - 同步修改 sql.conf 的管理员密码. 681 | 682 | vi /etc/freeradius/sql.conf 683 | 684 | 39行 改成 password = "xujian" 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | - 导入 admin.sql 和 schema.sql 693 | 694 | > - 下面的命令 要 cd /etc/freeradius/sql/mysql 才能执行的. 695 | > - 其实就是 mysql里创建用户密码 和 表 . 696 | > - 如果你重复配置好多次 可能会报错.比如已经建了默认的账户密码. 697 | > - 要改密码的话 这个 只能手动去mysql 手动改密码啦. 698 | > - 表重复的话 应该没关系的. 699 | > - 账号密码 都在 mysql里(软件自带的表) 700 | 701 | mysql -uroot -p < admin.sql 702 | 703 | mysql -uroot -p radius < schema.sql 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | Authentication通常是考虑的第一步, 713 | 这是一个过程用来确认是否Alice提供的credential是有效的. 提供credential的最常见的方式是通过用户名和密码. 其他方式像one-time token, certificate, PIN numbers, 或者甚至biometric scanning也可以使用. 714 | 715 | 在成功authentication之后一个session被初始化. 这个session持续直到网络连接被终止掉. 716 | 717 | 718 | 719 | 720 | 721 | 722 | 共享密钥(shared secret) 723 | 724 | 客户端和服务器端也需要有一个共享的密钥, 将会用来加密和解密某些AVPs. User-Password AVP的值使用这个共享密钥加密. 当共享密钥在客户端和服务器端不同时, FreeRADIUS服务器将会检测到他并且当运行的debug模式时警告你. 725 | 726 | 727 | 728 | 729 | 730 | 731 | --------- 732 | 733 | 734 | 735 | - 然后在/usr/sbin目录下创建连接: 736 | 737 | sudo ln -s freeradius radiusd 738 | 739 | 740 | - FreeRadius的配置文件位于/etc/freeradius目录。 741 | 742 | - 编辑 radius 用户配置文件 添加服务器 ip 和共享密码 xujian 743 | 744 | vi /etc/freeradius/clients.conf 745 | 746 | 添加下面内容到文件 747 | 748 | client IP_ADDRESS { 749 | ipaddr = 198.74.49.76 750 | secret = xujian 751 | require_message_authenticator = no 752 | } 753 | 754 | 755 | 756 | 757 | 758 | 759 | 整合 pptp 与 freeradius 760 | 首先 搭建 pptp 的服务器. 761 | 要整合 还需要一个 radius 的客户端. 如果路由器有 radius 功能 就不需要整合了. 762 | 763 | 764 | 765 | 766 | 767 | 768 | 客户端: 769 | radius 认证库: apt-get install freeradius-utils 770 | 771 | 772 | 773 | 配置 vpn 服务器 774 | 775 | 1. pptpd 启用 radius 插件. 776 | 777 | 首先查找插件位置(后面用到) 778 | sudo updatedb 更新索引数据库? 779 | locate radius.so 查找 插件位置. 得到 780 | 781 | /usr/lib/pppd/2.4.6/radius.so 782 | 783 | 784 | 查看 /etc/pptpd.conf 文件 找到 18行 得到 ppp的配置的文件位置. 785 | 786 | 编辑查找出来的 ppp-option 文件 787 | 788 | vi /etc/ppp/pptpd-options 789 | 790 | 文件最后添加 (插件路径 用你第一步找到的) 791 | plugin /usr/lib/pppd/2.4.6/radius.so 792 | radius-config-file /etc/radiusclient/radiusclient.conf 793 | 794 | 795 | 重启 pptpd 796 | sudo service pptpd restart 797 | 798 | 799 | 800 | 801 | 802 | ##DaloRadius 803 | 用 php 编写的 一个 web 管理 freeradius 的程序. 804 | 805 | 806 | 下载文件 807 | wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz 808 | 809 | 810 | 811 | 812 | 安装必要 php 组件 813 | 814 | apt-get install php-pear php-db 815 | 816 | 817 | 然后新建一个文件夹 818 | mkdir /usr/share/daloRadius 819 | 820 | 解压下载的文件 821 | tar zxvf daloradius-0.9-8.tar.gz 822 | 823 | 复制文件到新建目录 mv daloradius-0.9-8/* /usr/share/daloRadius/ 824 | 825 | 删除下载文件 826 | rm -r daloradius-0.9-8 827 | 828 | 829 | 830 | 831 | 这时我们将daloRADIUS中附带的sql文件导入MySQL数据库,别忘了输入密码: 832 | 833 | mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql 834 | 835 | 836 | 837 | 安装 并解压 838 | cd /tmp 839 | 下载: 840 | wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz 841 | 842 | 843 | 844 | 845 | 编辑 daloRADIUS的配置文件 846 | 847 | vi /usr/share/daloRadius/library/daloradius.conf.php 848 | 首先是MySQL登录信息: 849 | 850 | $configValues['CONFIG_DB_HOST'] = 'localhost'; 851 | $configValues['CONFIG_DB_USER'] = 'radius'; 852 | $configValues['CONFIG_DB_PASS'] = '***'; // 设为自己的密码 853 | $configValues['CONFIG_DB_NAME'] = 'radius'; 854 | 855 | 856 | 857 | 下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来: 858 | 859 | $configValues['CONFIG_DB_TBL_RADUSERGROUP'] = 'radusergroup'; 860 | 861 | 862 | 863 | 然后修改daloRADIUS的路径: 864 | $configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/usr/share/daloRadius/var'; 865 | 866 | 867 | ] 添加Apache虚拟主机,如果有Web控制面板什么的自然就方便多了, 868 | 不然就编辑/etc/httpd/conf/httpd.conf,加入: 869 | 870 | Alias /vpn "/usr/share/daloRadius/" 871 | 872 | 873 | 874 | 875 | 重启重启Apache和MySQL: 876 | 877 | 878 | service httpd restart 879 | service mysqld restart 880 | 881 | 882 | 883 | 打开浏览器,进入daloRADIUS的管理页面 884 | (本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。 885 | 886 | 887 | 。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。 888 | 889 | 在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | ### 配置 pptpd 900 | 编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2: 901 | 902 | refuse-pap 903 | refuse-chap 904 | refuse-mschap 905 | require-mppe-128 906 | require-mschap-v2 907 | 908 | 909 | 在配置文件最后加上3行: 910 | plugin radius.so 911 | plugin radattr.so 912 | radius-config-file /usr/local/etc/radiusclient/radiusclient.conf 913 | 914 | 启动服务 915 | 916 | 一切完成后我们不需要使用debug模式启动radiusd了: 917 | 918 | service radiusd start 919 | 920 | 当然,我们可以把radiusd和pptpd设为开机启动服务: 921 | chkconfig radiusd on 922 | chkconfig pptpd on 923 | 924 | 至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述。 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | locate 文件搜索. 934 | 935 | updatedb 文件搜索的 索引库.x 936 | 937 | 938 | 939 | 940 | 941 | 942 | 配合 mysql. 943 | 944 | 945 | 使用 radius 需要配置 http php mysql 环境, 946 | 用 apache 作为http 服务器. 947 | 948 | 949 | 950 | 951 | 952 | 953 | ## Debian 安装 L2TP 954 | 955 | 一、安装 IPSec 956 | 957 | IPSec 会对 IP 数据包进行加密和验证。 958 | 959 | 推荐用 openswan 这个后台软件包来跑 IPSec。 960 | 961 | 安装 openswan: 962 | 963 | sudo apt-get  install openswan 964 | 965 | 966 | 967 | 1.1 配置sysctl参数 968 | 969 |   970 | 971 |    sudo mv /etc/sysctl.conf /etc/sysctl.conf.bak 972 | 973 | 备份文件 974 | 975 |     sudo vim /etc/sysctl.conf 976 | 977 |     —————新建文件 并输入如下内容------------- 978 | 979 |     net.ipv4.ip\_forward = 1 980 | 981 |     net.ipv4.conf.all.accept\_redirects = 0 982 | 983 |     net.ipv6.conf.all.accept\_redirects = 0 984 | 985 |     net.ipv4.conf.all.send\_redirects = 0  986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | # Mac 电脑 vpn 连接方法 996 | 997 | 设置 → 网络 → 左下角 加号 → 接口名称 VPN 服务名称:随便取 → 创建 998 | 999 | 配置:默认 1000 | 1001 | 服务器地址:vps 服务器的 ip 外网 ip . 固定 ip 1002 | 1003 | 账户名: 设置的 VPN 账户名 1004 | 1005 | 加密: 自动 1006 | 1007 | 鉴定设置:选择密码 输入VPN密码 1008 | 1009 | 高级: 通过 vpn 连接发送所有流量 打钩. 1010 | 1011 | 点击连接 . ok 1012 | 1013 | 1014 | 1015 | ## VPN 内外网 同时使用方法 1016 | 1017 | 1、自行搭建 VPN 服务器或购买 VPN 提供商的服务。 1018 | 1019 | 2、打开系统偏好设置—\>网络,增加 VPN 设置,VPN 类型选择PPTP, 1020 | 1021 | 根据提示设置用户名密码等信息即可。 1022 | 1023 | 3、下载 chnroutes.py,相关网址:Downloads - chnroutes - Scripts to generate special routes for china ips 1024 | 1025 | 4、打开终端进入下载文件的目录,执行:python chnroutes.py -p mac,该目录下会生成两个文件「ip-up」和「ip-down」。 1026 | 1027 | 5、把这两个文件复制到 /etc/ppp 下,然后进入该目录执行:sudo chmod a+x ip-up ip-down 1028 | 1029 | 1030 | 1031 | 测试一下,在终端执行:netstat -nr,检查路由表的输出信息。 1032 | 1033 | 连接 VPN, 再次执行:netstat -nr,你会发现路由表已经发生了变化。 1034 | 1035 | 这时再去访问国内的网站,你发现他们又变得嘻唰唰了,同时还能访问 Twitter 和 Facebook! 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | ## FreeRADIUS 1044 | 1045 | 官网 : [http://freeradius.org][1] 1046 | 1047 | debian 7 下教程: 1048 | 1049 | [https://ttboa.wordpress.com/2014/09/26/freeradius-on-debian-7/][2] 1050 | 1051 | 服务器: Debian 8: 1052 | 1053 | 安装freeradius: sudo apt-get install freeradius 1054 | 1055 | 开启测试账号密码:(用完后 记得删掉.) 1056 | 1057 | vim /etc/freeradius/users 1058 | 1059 | 76-84 行 前的# 去掉. 1060 | 1061 | testuser Cleartext-Password := "testpassword" 1062 | 1063 | 重启服务 service freeradius restart 1064 | 1065 | 查看服务状态: service freeradius status 1066 | 1067 | 进行测试 1068 | 1069 | radtest steve testing localhost 0 testing123 1070 | 1071 | 1072 | 1073 | 如果看到Access-Accept就说明连接成功了。 1074 | 1075 | 连接失败 1076 | 1077 | radtest testuser testpassword localhost 0 testing123 1078 | 1079 | radclient: no response from server for ID 25 socket 3 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1. 下载ppp源码,因为要用到其中的配置文件: 1092 | 1093 | \`\`\` 1094 | 1 # wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz 1095 | 2 # tar zxvf ppp-2.4.5.tar.gz 1096 | 3 # cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient 1097 | \`\`\` 1098 | 1099 | 1. 编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“MyVPN”: IT网,http://www.it.net.cn 1100 | \`\`\` 1101 | 1 # vim /usr/local/etc/radiusclient/servers 1102 | 2 localhost MyVPN 1103 | \`\`\` 1104 | 2. 编辑/usr/local/etc/radiusclient/dictionary,将最后一行改为: 1105 | 1106 | INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft IT网,http://www.it.net.cn 1107 | 1108 | 可以再添加一行: 1109 | 1110 | INCLUDE /usr/local/etc/radiusclient/dictionary.merit IT网,http://www.it.net.cn 1111 | 1112 | 1 # vim /usr/local/etc/radiusclient/dictionary 1113 | 1114 | 2 INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft 1115 | 1116 | 3 INCLUDE /usr/local/etc/radiusclient/dictionary.merit 1117 | 1118 | 1. 编辑/etc/raddb/clients.conf,把client localhost段下的secret改成刚才指定的密钥。 Linux学习,http:// linux.it.net.cn 1119 | 2. 编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#。 1120 | 3. 添加MySQL用户及数据库,你可以使用现成的phpMyAdmin等工具,也可以在终端下操作。本例中,创建了radius的用户和同名的数据库: 1121 | 1122 | \`\`\` 1123 | 1 # mysql -uroot -p 1124 | 2 (如果有密码,请输入) 1125 | 3 \> CREATE USER 'radius'@'localhost' IDENTIFIED BY '\*\*\*'; 1126 | 4 \> CREATE DATABASE IF NOT EXISTS `radius` ; 1127 | 5 \> GRANT ALL PRIVILEGES ON `radius` . \* TO 'radius'@'localhost'; 1128 | \`\`\` 1129 | 1130 | 1. 编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius\_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。 1131 | 2. 编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行: 1132 | 1133 |     authorize段,关掉files,打开sql,也可以把unix关掉 1134 | 1135 |     preacct段,关掉files 1136 | 1137 |     accounting段,打开sql,也可以把unix关掉 1138 | 1139 |     session段,打开sql 1140 | 1141 |     post-auth段,打开sql 1142 | 1143 |     pre-proxy段,关掉files IT网,http://www.it.net.cn 1144 | 1145 | 到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。 1146 | 1147 | 配置daloRADIUS 1148 | 1149 | 1. 首先下载并安装daloRADIUS,其中需要安装一个Pear-DB的包: 1150 | \`\`\` 1151 | 1 # wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz 1152 | 2 # pear install DB 1153 | 3 # mkdir /usr/share/daloRadius 1154 | 4 # tar zxvf daloradius-0.9-8.tar.gz 1155 | 5 # mv daloradius-0.9-8/\* /usr/share/daloRadius/ 1156 | 6 # rm -r daloradius-0.9-8 1157 | \`\`\` 1158 | 2. 这时我们将daloRADIUS中附带的sql文件导入MySQL数据库,别忘了输入密码: Linux学习,http:// linux.it.net.cn 1159 | \`\`\` 1160 | 1 # mysql -uroot -p radius \< /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql 1161 | \`\`\` 1162 | 3. 编辑/usr/share/daloRadius/library/daloradius.conf.php,这是daloRADIUS的配置文件。首先是MySQL登录信息: 1163 | \`\`\` 1164 | 1 # /usr/share/daloRadius/library/daloradius.conf.php 1165 | 2 $configValues['CONFIG\_DB\_HOST']() = 'localhost'; 1166 | 3 $configValues['CONFIG\_DB\_USER']() = 'radius'; 1167 | 4 $configValues['CONFIG\_DB\_PASS']() = '\*\*\*'; // 设为自己的密码 1168 | 5 $configValues['CONFIG\_DB\_NAME']() = 'radius'; 1169 | \`\`\` 1170 | 下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来: 1171 | $configValues['CONFIG\_DB\_TBL\_RADUSERGROUP']() = 'radusergroup'; 1172 | 然后修改daloRADIUS的路径: 1173 | $configValues['CONFIG\_PATH\_DALO\_VARIABLE\_DATA']() = '/usr/share/daloRadius/var'; 1174 | 4. 添加Apache虚拟主机,如果有Web控制面板什么的自然就方便多了,不然就编辑/etc/httpd/conf/httpd.conf,加入: Linux学习,http:// linux.it.net.cn 1175 | \`\`\` 1176 | 1 # vim /etc/httpd/conf/httpd.conf 1177 | 2 Alias /vpn "/usr/share/daloRadius/" 1178 | 3 \ 1179 | 4 \ 1180 | \`\`\` 1181 | 5. 重启重启Apache和MySQL: Linux学习,http:// linux.it.net.cn 1182 | \`\`\` 1183 | 1 # service httpd restart 1184 | 2 # service mysqld restart 1185 | \`\`\` 1186 | 6. 打开浏览器,进入daloRADIUS的管理页面(本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。 1187 | daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。 IT网,http://www.it.net.cn 1188 | 7. 在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。 1189 | 配置pppd 1190 | 8. 编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2: IT网,http://www.it.net.cn 1191 | \`\`\` 1192 | 1 # vim /etc/ppp/options.pptpd 1193 | 2 refuse-pap 1194 | 3 refuse-chap 1195 | 4 refuse-mschap 1196 | 5 require-mppe-128 1197 | 6 require-mschap-v2 1198 | 7   1199 | 8 # 在配置文件最后加上3行: 1200 | 9      1201 | 10 plugin radius.so 1202 | 11 plugin radattr.so 1203 | 12 radius-config-file /usr/local/etc/radiusclient/radiusclient.conf 1204 | \`\`\` 1205 | 启动服务 1206 | 9. 一切完成后我们不需要使用debug模式启动radiusd了: 1207 | \`\`\` 1208 | 1 # service radiusd start 1209 | \`\`\` 1210 | 10. 当然,我们可以把radiusd和pptpd设为开机启动服务: 1211 | \`\`\` 1212 | 1 # chkconfig radiusd on 1213 | 2 # chkconfig pptpd on 1214 | \`\`\` 1215 | 至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述。 1216 | 文章来源于互联网,具体链接一时忘记未有记下。。。如下几点则为具体配置中所出现的问题及解决方法 1217 | 1218 | 1、执行第十三点时报如下错误: 1219 | 1220 | pear not found 1221 | 1222 | 经谷歌,解决方法如下: 1223 | 1224 | 1 # yum install php-pear 1225 | 1226 | 2 # pear upgrade PEAR 1227 | 1228 | 2、daloRadius登录界面,用户名为administrator,没记错的话密码是radius。修改密码到config-\>Opeartors修改。 Linux学习,http:// linux.it.net.cn 1229 | 1230 | 3、MySQL错误:Database connection error Error Message: DB Error: extension not found 1231 | 1232 | 解决方法: 1233 | 1234 | 1 # yum install php-mysql -y 1235 | 1236 | 4、无法连接MySQL:Database connection error Error Message: DB Error: connect failed 1237 | 1238 | 1 # vim /usr/share/daloRadius/library/daloradius.conf.php 1239 | 1240 | 2 # $configValues['CONFIG\_DB\_HOST']() = '127.0.0.1'; # 默认为 localhost 1241 | 1242 | 5、无法拨入,客户端报691错误: IT网,http://www.it.net.cn 1243 | 1244 | 1 # vim /usr/local/etc/radiusclient/dictionary 1245 | 1246 | 2 #INCLUDE /etc/radiusclient/dictionary.microsoft 1247 | 1248 | 3 INCLUDE /usr/local/etc/radiusclient/dictionary.merit 1249 | 1250 | 4 INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft 1251 | 1252 | 5 INCLUDE /usr/local/etc/radiusclient/dictionary.ascend 1253 | 1254 | 6 INCLUDE /usr/local/etc/radiusclient/dictionary.compat 1255 | 1256 |   1257 | 1258 | PS:添加流量控制: 1259 | 1260 | 1、建立表格 1261 | 1262 | 1 \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local'); 1263 | 1264 | 2 \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User'); 1265 | 1266 | 3 \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255'); 1267 | 1268 | 4 \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0'); 1269 | 1270 | 5 \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600'); 1271 | 1272 | 6 \> INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120'); 1273 | 1274 | 7 \> INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1'); 1275 | 1276 | 以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。 IT网,http://www.it.net.cn 1277 | 1278 | 2、修改配置 1279 | 1280 | 1 # vim /etc/raddb/sql/mysql/dialup.conf 1281 | 1282 | 2 sql\_user\_name = "%{%{Stripped-User-Name}:-%{%{User-Name}:-none}}" 1283 | 1284 | 3 # 取消前面的注释并注释下一行 1285 | 1286 | 4 # 同时如果需要打开simultanoues-use(控制同时在线用户数)的话需要把simul\_query\_check取消注释。 1287 | 1288 | 3、输入测试用户信息: 1289 | 1290 | 1 \> INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('test','Cleartext-Password',':=','test'); 1291 | 1292 | 2 \> INSERT INTO radusergroup (username,groupname) VALUES ('test','user'); 1293 | 1294 | (用户名与密码必须以明文/NTLM Crypt形式保存,因为MS-CHAPv2不支持MD5保存的密码。) IT网,http://www.it.net.cn 1295 | 1296 | 4、由于上步中有非内置的attribute Max-Monthly-Traffic,所以需要在/usr/local/etc/raddb/dictionary里面定义: 1297 | 1298 | ATTRIBUTE Max-Monthly-Traffic 3003 integer IT网,http://www.it.net.cn 1299 | 1300 | 5、初步测试: IT网,http://www.it.net.cn 1301 | 1302 | 1 # /etc/init.d/freeradius stop 1303 | 1304 | 2 # radiusd -X \> 1305 | 1306 | 3 # radtest test test localhost 1649 testing123 1307 | 1308 | 如果结果中有Access-Accept就代表成功了,否则退回去检查设置。 1309 | 1310 | 6、测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入: 1311 | 1312 | 1 # vim /usr/local/etc/raddb/sites-enabled/default 1313 | 1314 | 2     update request { 1315 | 1316 | 3     Group-Name := "%{sql:SELECT groupname FROM radusergroup WHERE username='%{User-Name}' ORDER BY priority}" 1317 | 1318 | 4     } 1319 | 1320 | 5     if ("%{sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username='%{User-Name}' AND date\_format(acctstarttime, '%Y-%m-%d') \>= date\_format(now(),'%Y-%m-01') AND date\_format(acctstoptime, '%Y-%m-%d') \<= last\_day(now());}" \>= "%{sql: SELECT value FROM radgroupreply WHERE groupname='%{Group-Name}' AND attribute='Max-Monthly-Traffic';}") { 1321 | 1322 | 6     reject 1323 | 1324 | 7     } 1325 | 1326 | 7、设置radiusclient: 1327 | 1328 | 打开/usr/local/etc/radiusclient/radiusclient.conf,修改 1329 | 1330 | authserver localhost:1812 1331 | 1332 | acctserver localhost:1813 1333 | 1334 | 修改server: 1335 | 1336 | 最后加上localhost secret(就是FreeRadius的client.conf里面定义的secret) 1337 | 1338 | 修改dictionary: 1339 | 1340 | 最后加上 IT网,http://www.it.net.cn 1341 | 1342 | INCLUDE /usr/local/etc/radiusclient/dictionary.merit 1343 | 1344 | INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft Linux学习,http:// linux.it.net.cn 1345 | 1346 | 如果没有dicitionary.microsoft的话看这里:http://wiki.freeradius.org/PopTop 1347 | 1348 | 8、启动服务 1349 | 1350 | 1 # service radiusd start 1351 | 1352 | 2 # chkconfig radiusd on 1353 | 1354 | 3 # chkconfig pptpd on 1355 | 1356 | 至此,完成了所有配置了。。。 Linux学习,http:// linux.it.net.cn 1357 | 1358 | (责任编辑:IT) 1359 | 1360 | 1361 | 1362 | 1363 | 1364 | 1365 | 1366 | 客户端 安装客户端 1.1.7 1367 | 1368 | [http://freeradius.org/freeradius-client/][10] 1369 | 1370 | 接下来 是防火墙的联动 1371 | 1372 | 这个暂且不详细说,每个厂商的防火墙配置方法都不同,思路是差不多的,客户端如果想完成认证,必须通过radius认证,这个时候,pc的数据包到达防火墙后,防火墙会把客户端丢过来的认证信息发送到radius服务器上面,由radius服务器去辨别是否通过认证 1373 | 1374 |   6.radius里关键的配置文件为radius.conf 与clients.conf 1375 | 1376 |                radius.conf:这个文件记录的是radius服务相关的信息,包括服务器监听的接口、允许认证的客户端IP等 1377 | 1378 |                clients.conf:定义客户端与服务器之间的共享密钥,认证信息等 1379 | 1380 | 1381 | 1382 | 1383 | 1384 | 1385 | 1386 | 1387 | 1388 | 1389 | 1390 | 1391 | 1392 | 1393 | 1394 | 1395 | 1396 | 1397 | 1398 | 1399 | 1400 | 1401 | RADIUS包有一个指定的格式,两个关键的组件是: 1402 | 1403 | code: 表示包的类型. 1404 | attribute: 携带RADIUS使用的必要数据. 1405 | 1406 | 1407 | ##### 数据包 1408 | 了解一个RADIUS数据包的格式将会大大帮助理解RADIUS协议. 1409 | 1410 | 让我们更细致的查看RADIUS数据包. 1411 | 我们将会看一个简单的authentication请求. 1412 | 一个客户端发送一个Access-Request包到服务器. 服务器返回一个Access-Accept包来表示成功. 1413 | 1414 | 显示在这里的RADIUS数据包只是一个UDP数据包的payload. UDP和IP协议的讨论已经超出这本书的范围了. 1415 | 1416 | 1417 | 1418 | 1419 | 1420 | Radius 数据包: 1421 | 第一个字节是 code 表示 radius 包的类型. 1422 | 第二个字节是 identifier 唯一标识符. 由客户端生成. 1423 | 大概就是客户端 发送的每个包 都有个固定的 唯一标识符. 以便服务器能通过唯一标识符 给你回复信息. 1424 | 第三,第四个字节 是 length 1425 | 表示数据包中的内容 一直到哪里是有用的 这个边界外的字节 被认为是填充的可忽略的. 1426 | 1427 | 1428 | 1429 | 1430 | 1431 | 1432 | 每个数据包 都是由 code 来识别的 code 占一个字节 特定的code 的值 代表这个包的特性和需求 1433 | 1434 | 这个消息提供数据来改变一个先有用户session的authorization. 例如, 我们现在可以动态改变每个session的带宽限制. 这让我们可以当互联网连接下降时可以增加每个session的带宽. 1435 | 1436 | 1437 | | RADIUS
code (decimal) | Packet type | Sent by | 1438 | |:---:|:---------------------------|:---------------:| 1439 | | 1 | Access-Request | NAS | 1440 | | 2 | Access-Accept | RADIUS server | 1441 | | 3 | Access-Reject | RADIUS server | 1442 | | 4 | Accounting-Request | NAS | 1443 | | 5 | Accounting-Response | RADIUS server | 1444 | | 11 | Access-Challenge | RADIUS server | 1445 | | 12 | Status-Server(Experimental) | | 1446 | | 13 | Status-Client(Experimental) | | 1447 | | 255 | Reserved | | 1448 | | | | | 1449 | | 40 | Disconnect-Request | RADIUS server | 1450 | | 41 | Disconnect-ACK | NAS | 1451 | | 42 | Disconnect-NAK | NAS | 1452 | | 43 | CoA-Request | RADIUS server | 1453 | | 44 | CoA-ACK | NAS | 1454 | | 45 | CoA-NAK | NAS | 1455 | 1456 | 1457 | 1458 | 1459 | 1460 | 1461 | 1462 | 1463 | [跳到页首](#header) 1464 | -------------------------------------------------------------------------------- /Untitled.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Homeless-Xu/Radius-Stop/5b7adc7ae17f6c487c56cd3a12600d88cdd872e2/Untitled.md -------------------------------------------------------------------------------- /schema.sql 详解.md: -------------------------------------------------------------------------------- 1 | ### schema.sql 脚本内容详解: 2 | 3 | > vi /etc/freeradius/sql/mysql/schema.sql 4 | 5 | - schema: 架构的意思 也就是给 radius 数据库 设置一系列表(和表的结构) 6 | - 使用方法: 下面命令会 自动加7个表格到 radius 数据库. 7 | > mysql -uroot -prootpass radius < schema.sql 8 | 9 | 10 | | 表名 | 作用 | 11 | |:---------------|:--------------:| 12 | | radcheck | 用户检查信息表 13 | | radreply | 用户回复信息表 14 | | radgroupcheck | 用户组检查信息表 15 | | radgroupreply | 用户组检查信息表 16 | | radusergroup | 用户和组关系表 17 | | radacct | 计费情况表 18 | | radpostauth | 认证后处理信息,可以包括认证请求成功和拒绝的记录。 --------------------------------------------------------------------------------