• 返回
  • 最后更新
  • 2020-10-05 23:08:47 +0800 CST

ToughRADIUS 商业版 Docker 容器部署 — 高级篇

ToughRADIUS Docker 容器部署方法, 这里通过 dcoker-compose容器编排模式提供了一套完整的集成方法

使用本方法部署, 您需要对Docker 以及 docker-compose 编排工具有足够的了解

该方案同时集成了 freeradius, 可以通过 freeradius 的多协议处理引擎来提供更丰富的功能, 比如802.1x 认证.

在这种模式下, freeradius 成为 toughradius 的一个基础模块, 复则解析处理更复杂的 RADIUS 协议。

Github 项目地址:github.com/toughstruct/toughradius-docker

环境准备

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 <<-'EOF'
{
    "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 记账端口