├── .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 | 认证后处理信息,可以包括认证请求成功和拒绝的记录。
--------------------------------------------------------------------------------