Radius服务端搭建、运行及测试

1.FreeRadius

freeradius是GNU/GPL(通用公共许可证)的原则下,开发的高性能开源radius服务器。常见的radius服务器种类不多,比较强大的当属开源的freeradius,世界上大部分的radius服务器都是基于freeradius开发而来的。
freeradius可以对支持radius协议的网络设备进行账户认证、授权和记账管理,常见的开源路由器操作系统:如Openwrt,DD-wrt等,都支持radius协议,常见的电信运营商的宽带账户,上网账户管理,记账,也都是使用的radius服务器进行鉴权记账的。

2.FreeRadius离线安装(以Centos7为例)

在另一台可在线安装的相同环境下的主机下载freeradius离线安装包

ps:相同环境是指 操作系统内核相同,若安装不同环境的rpm包会导致底层错乱/系统崩溃

ps:不一定要在实体机中安装,可在docker容器中安装(开通服务端口1812和1813即可(UDP))

Centos7服务器1:

#安装yum-utils
$ yum -y install yum-utils

#下载 ansible 全量依赖包
$ repotrack freeradius

Centos7服务器2:
#通过FTP等方式将下载的离线安装包上传到被安装主机上,并进入到目录内利用rpm安装。

$rpm -Uvh --force --nodeps *.rpm

注意:若安装不成功,有可能是相对路径不对,请使用绝对路径安装(rpm安装需要使用绝对路径)

rpm -Uvh --force --nodeps /绝对路径/*.rpm

3.FreeRadius配置

3.1 配置FreeRadius的客户端

通过配置/etc/raddb/clients.conf,增加如下字段可以允许任意IP以正确的密钥连接FreeRadius。

client 0.0.0.0/0 {
secret=testing123 #连接密钥 }

3.2 配置用户信息

通过配置/etc/raddb/users可以增加、删除用户,以及配置当用户连接时,FreeRadius端回复的信息。

#第一行:为设置用户名和用户密码,也可设置限制用户的IP,例如增加Framed-IP-Address =173.16.3.55

#之后行:为FreeRedius回复给客户端的信息

#用户1:

admin Cleartext-Password := "admin123"
        Service-Type = Framed-User,
        Framed-Protocol = PPP,
        Framed-IP-Address = 172.16.3.33,
        Framed-IP-Netmask = 255.255.255.0,
        Framed-Routing = Broadcast-Listen,
        Framed-Filter-Id = "std.ppp",
        Framed-MTU = 1500,
        Framed-Compression = Van-Jacobsen-TCP-IP

#用户2:

aa Cleartext-Password := "admin"
        Service-Type = Framed-User,
        Framed-Protocol = PPP,
        Framed-IP-Address = 172.16.3.33,
        Framed-IP-Netmask = 255.255.255.0,
        Framed-Routing = Broadcast-Listen,
        Framed-Filter-Id = "std.ppp",
        Framed-MTU = 1500,
        Framed-Compression = Van-Jacobsen-TCP-IP

3.3 服务器端开启udp1812,udp1813端口,1812为认证端口,1813为计费端口,可根据具体需求开启端口。

#开放1812端口
systemctl start firewalld.service
firewall-cmd --zone=public --add-port=1812/udp --permanent
firewall-cmd --reload
systemctl stop firewalld.service

4.开启Freeradius服务

4.1 调试模式

sudo radiusd -X

注意:可能会报证书错误,而无法开启,解决方法:① cd /etc/raddb/certs/ ② ./bootstrap即可。

若出现如下回显,则radius配置成功,有请求则直接在前台显示:
在这里插入图片描述

4.2后台运行

service radiusd start

ps:FreeRadius想要能够写log日志,就不能使用radiusd -X 启动;转为后台启动,日志查看需要配置,如下节:

5.Radius配置日志

5.1修改配置文件

/etc/raddb/radiusd.conf

在该文件的log字段中进行修改:

Log{

    auth = yes

    auth_badpass = yes

    auth_goodpass = yes

}

5.2查看日志

tailf /var/log/radius/radius.log

(这里仅是认证的日志,没有计费)

6.测试

对Radius认证的测试可使用radtest测试或RadTest工具进行测试:

6.1使用radtest测试

旧版的Freeradius安装后只有radius服务没有radtest工具,新版radtest会随Freeradius一同安装。

6.2RadTest工具进行测试

在这里插入图片描述

7.常见问题

7.1 访问被拒的问题

网络问题,查看客户端连接服务端的UDP端口是否连通:nc -vuz 10.48.93.106 1812、在服务端抓取UDP端口数据:tcpdump udp port 1812

7.2 命令行radtest无法使用问题

在config文件radius_client.py中配置好IP、port、共享秘钥、账户及密码,使用命令/opt/work/web/sensor/env/bin/python2.7 radius_client.py进行测试

7.3 若是运行测试文件radius_client.py报错,显示无文件

查看config中dictionary和dictionary.freeradius文件是否存在

### ROS2 中集成和使用 Gazebo 进行仿真的方法 在机器人操作系统 (ROS) 的最新版本 ROS2 中,Gazebo 是一种常用的物理引擎模拟器工具,用于测试和验证机器人算法。以下是关于如何在 ROS2 中集成并有效使用 Gazebo 的详细介绍。 #### 1. 安装必要的依赖项 为了在 ROS2 中运行 Gazebo 模拟环境,首先需要安装 `ros-<distro>-gazebo-ros-pkgs` 和其他相关包。例如,在 Foxy 版本下可以执行以下命令来完成安装[^1]: ```bash sudo apt install ros-foxy-gazebo-ros-pkgs ros-foxy-gazebo-plugins ``` #### 2. 创建一个 ROS2 工作空间 如果尚未创建工作区,则可以通过以下方式初始化一个新的 ROS2 工作区: ```bash mkdir -p ~/ros2_ws/src cd ~/ros2_ws/ colcon build --symlink-install source install/setup.bash ``` #### 3. 配置 Gazebo 插件支持 为了让 Gazebo 能够识别自定义模型以及传感器插件,需设置环境变量 `GAZEBO_PLUGIN_PATH` 来指向编译后的库路径。可以在 `.bashrc` 文件中添加如下配置[^2]: ```bash export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:~/ros2_ws/install/lib/gazebo_plugins ``` #### 4. 启动默认世界文件 启动标准空旷世界的最简单方法是通过调用预设 launch 文件实现: ```bash ros2 launch gazebo_ros gazebo.launch.py ``` 这会加载一个基本场景供进一步开发使用[^3]。 #### 5. 自定义机器人描述与 URDF/XACRO 加载 通常情况下,开发者需要将自己的机器人几何结构、惯性参数以及其他属性编码到统一资源描述框架(URDF 或 Xacro)之中。之后利用这些数据生成 SDF(Simulation Description Format),以便被 Gazabo 正确解析渲染出来。下面展示了一个简单的 TurtleBot3 类型移动平台的例子: ##### a. 编写 xacro 文件 假设我们有一个名为 `my_robot.xacro` 的文件位于 `src/my_package/urdf/` 下面,其内容可能类似于这样: ```xml <?xml version="1.0"?> <robot name="my_robot" xmlns:xacro="http://www.ros.org/wiki/xacro"> <!-- Define parameters --> <xacro:property name="wheel_radius" value="0.03"/> <!-- Base link definition --> <link name="base_link"> <visual> <geometry> <box size="0.2 0.2 0.1"/> </geometry> </visual> <collision> <geometry> <box size="0.2 0.2 0.1"/> </geometry> </collision> <inertial> <mass value="1.0"/> <origin xyz="0 0 0"/> <inertia ixx="0.01" iyy="0.01" izz="0.01"/> </inertial> </link> </robot> ``` ##### b. 将 xacro 转换为 urdf 并发布至参数服务器 编写 Python 脚本来动态处理上述模板,并将其转换为目标格式后上传给系统节点管理服务端。 ```python import os from ament_index_python.packages import get_package_share_directory from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.substitutions import Command, FindExecutable, PathJoinSubstitution from launch_ros.actions import Node def generate_launch_description(): pkg_path = get_package_share_directory('my_package') xacro_file = 'my_robot.xacro' robot_desc_content = open(os.path.join(pkg_path,'urdf',xacro_file)).read() robot_desc = {'robot_description': robot_desc_content} return LaunchDescription([ DeclareLaunchArgument( 'use_sim_time', default_value='true', description='Use simulation (Gazebo) clock if true'), Node(package='robot_state_publisher', executable='robot_state_publisher', output='screen',parameters=[robot_desc]) ]) ``` #### 6. 使用 spawn_entity_tool 把模型放入仿真环境中 最后一步就是把之前准备好的实体放置进虚拟场地里去。这里推荐采用官方提供的脚本辅助操作: ```bash ros2 run gazebo_ros spawn_entity.py -topic /robot_description -entity my_robot_model ``` 以上便是完整的流程说明文档,涵盖了从基础搭建直至高级定制化应用层面的知识要点[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值