ToughRADIUS 商业版
ToughRADIUS Docker 容器部署方法, 这里通过 dcoker-compose容器编排模式提供了一套完整的集成方法
使用本方法部署, 您需要对Docker 以及 docker-compose 编排工具有足够的了解该方案同时集成了 freeradius, 可以通过 freeradius 的多协议处理引擎来提供更丰富的功能, 比如802.1x 认证.
在这种模式下, freeradius 成为 toughradius 的一个基础模块, 复则解析处理更复杂的 RADIUS 协议。
环境准备
Docker 工具安装
ubuntu
sudo apt-get install -y docker
sudo apt-get install -y docker-compose
centos 7
yum install -y docker
yum install -y docker-compose
Docker 仓库加速, 由于 docker 服务器访问较慢, 最好使用国内加速代理, 通过以下方法配置
tee /etc/docker/daemon.json <
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
EOF
部署流程
test -d || /opt/toughradius
curl https://raw.githubusercontent.com/toughstruct/toughradius-docker/master/deploy.sh -o /opt/toughradius/deploy.sh
cd /opt/toughradius && sh ./deploy.sh
部署脚本deploy.sh 脚本内容
#!/bin/bash
cd /opt/toughradius
# 下载容器部署描述文件
curl https://raw.githubusercontent.com/toughstruct/toughradius-docker/master/docker-compose.yml -o docker-compose.yml
# 下载数据库脚本文件
curl https://raw.githubusercontent.com/toughstruct/toughradius-docker/master/toughradius.sql -o toughradius.sql
# 拉取最新镜像
docker-compose pull
# 首先创建mysql容器
docker-compose up -d mysql
# 等待 mysql 初始化完成后再执行sql
sleep 3
# 创建数据库表
mysql -h 127.0.0.1 -uroot -pmyroot < ./toughradius.sql
# 创建所有容器
docker-compose up -d
升级脚本upgrade.sh 脚本内容
#!/bin/bash
cd /opt/toughradius
# 尝试删除已有的容器组
docker-compose rm -f -s
# 下载部署文件
curl https://raw.githubusercontent.com/toughstruct/toughradius-docker/master/docker-compose.yml -o docker-compose.yml
docker-compose pull
# 重建其他容器
docker-compose up -d
容器编排描述文件 docker-compose.yml注意,该部署文件集成了 freeradius, 通过 command: "toughradius -with-freeradius" 来启动内置 freeradius, 并通过环境变量配置端口
version: "3"
services:
mysql:
image: mysql
container_name: "mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: myroot
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M;
volumes:
- /opt/toughradius/mysql_data:/var/lib/mysql
- /opt/toughradius/vardata/mysql:/var/log/mysql
ports:
- 127.0.0.1:3306:3306
expose:
- 3306
networks:
toughradius_network:
toughradius:
depends_on:
- 'mysql'
image: toughstruct/toughradius
container_name: "toughradius"
command: "toughradius -with-freeradius"
restart: always
ports:
- "1816:1816"
- "1812:1812/udp"
- "1813:1813/udp"
- "1912:1912/udp"
- "1913:1913/udp"
- "2912:2912/udp"
- "2913:2913/udp"
expose:
- 1816
- 1812/udp
- 1813/udp
- 1912/udp
- 1913/udp
- 2912/udp
- 2913/udp
volumes:
- /opt/toughradius/vardata:/var/toughradius
- /opt/toughradius/vardata/freeradius:/var/log/freeradius
environment:
- GODEBUG=x509ignoreCN=0
- TOUGHRADIUS_WEB_DEBUG=false
- TOUGHRADIUS_WEB_SECRET=9b6de5cc-0011-4bf1-gree-0f568ac9da37
- TOUGHRADIUS_DB_HOST=mysql
- TOUGHRADIUS_DB_NAME=toughradius
- TOUGHRADIUS_DB_USER=toughradius
- TOUGHRADIUS_DB_PWD=Tough!2020
- TOUGHRADIUS_DB_DEBUG=false
- FREERADIUS_AUTH_PORT=1912
- FREERADIUS_ACCT_PORT=1913
- FREERADIUS_AUTH6_PORT=2912
- FREERADIUS_ACCT6_PORT=2913
- FREERADIUS_API_URL=http://127.0.0.1:1816
networks:
toughradius_network:
networks:
toughradius_network:只要将 NAS 设备的认证端口和记账端口配置为 freeradius 监听的端口即可使用 freeradius 来实现 RADIUS 协议处理
端口说明1816/tcp web 管理控制台端口
1812/udp toughradius 认证端口
1812/udp toughradius 记账端口
1912/udp freeradius 认证端口
1912/udp freeradius 记账端口
2912/udp freeradius ipv6 认证端口
2912/udp freeradius ipv6 记账端口