Linux 是一个强大的操作系统,在配置方面提供了极大的灵活性。然而,这种灵活性也带来了配置它以满足您需求的成本。当配置您的 Linux 机器以接受传入的 AX.25、NET/ROM 或 ROSE 连接时,您需要问自己一些问题。其中最重要的是:“我希望用户在连接时看到什么?” 人们正在开发一些巧妙的小应用程序,这些应用程序可以用来为呼叫者提供服务,一个简单的例子是 AX.25 实用程序中包含的 pms 程序,一个更复杂的例子也是 AX.25 实用程序中包含的 node 程序。或者,您可能希望为用户提供登录提示,以便他们可以使用 shell 帐户,或者您甚至可能编写了自己的程序,例如自定义数据库或游戏,您希望人们连接到该程序。无论您选择什么,您都必须告诉 AX.25 软件,以便它知道在接受传入的 AX.25 连接时要运行什么软件。
ax25d 程序类似于常用的 inetd 程序,后者用于接受 UNIX 机器上的传入 TCP/IP 连接。它会监听传入的连接,当检测到连接时,它会离开并检查配置文件,以确定要运行哪个程序并连接到该连接。由于这是接受传入 AX.25、NET/ROM 和 ROSE 连接的标准工具,我将描述如何配置它。
此文件是 ax25d AX.25 守护程序的配置文件,该守护程序处理传入的 AX.25、NET/ROM 和 ROSE 连接。
乍一看,该文件看起来有点神秘,但您很快就会发现它在实践中非常简单,只是有一个小陷阱需要您注意。
ax25d.conf文件的通用格式如下文件格式如下:
# This is a comment and is ignored by the ax25d program. [port_name] || <port_name> || {port_name} <peer1> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments> <peer2> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments> parameters window T1 T2 T3 idle N2 <mode> <peer3> window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments> ... default window T1 T2 T3 idle N2 <mode> <uid> <cmd> <cmd-name> <arguments> |
其中
在一行开头表示注释,并且会被 ax25d 程序完全忽略。
是 AX.25、NET/ROM 或 ROSE 端口的名称,如/etc/ax25/axports, /etc/ax25/nrports和/etc/ax25/rsports文件中指定的那样。端口的名称用 `[]' 括号括起来,如果它是 AX.25 端口,用 `<>' 括号括起来,如果它是 NET/ROM 端口,或者用 `{}' 括号括起来,如果它是 ROSE 端口。此字段还有另一种形式,即使用前缀 `呼号/SSID via' 来指示您希望通过此接口接受对呼号/SSID 的呼叫。示例应该更清楚地说明这一点。
是此特定配置适用的对等节点的呼号。如果您在此处不指定 SSID,则任何 SSID 都将匹配。
是此配置的 AX.25 窗口参数 (K) 或 MAXFRAME 参数。
是以半秒为单位的帧重传 (T1) 定时器。
是 AX.25 软件在等待另一个传入帧之前准备响应的时间量,以 1 秒为单位。
是在 AX.25 软件断开会话之前的不活动时间量,以 1 秒为单位。
是以秒为单位的空闲定时器值。
是在连接关闭之前将发生的连续重传次数。
提供了一种机制来确定某些类型的通用权限。模式通过提供字符组合来启用或禁用,每个字符代表一个权限。字符可以是大小写,并且必须在一个没有空格的块中。
UTMP - 当前不支持。
验证呼叫 - 当前不支持。
安静 - 不记录连接
检查 NET/ROM 邻居 - 当前不支持。
禁止中继器 - 连接必须是直接的,而不是通过中继器的。
锁定 - 不允许连接。
标记 - 放置标记,不设置模式。
是要运行以支持连接的程序应以其身份运行的用户 ID。
是要运行的命令的完整路径名,不指定任何参数。
是应在 ps 中显示为正在运行的命令名称的文本(通常与 <cmd> 相同,只是没有目录路径信息)。
是要传递给 <:cmd> 的命令行参数,当它运行时。您可以通过使用以下令牌将有用的信息传递到这些参数中
连接接收到的端口名称。
已连接方的 AX.25 呼号,不带 SSID,大写。
已连接方的 AX.25 呼号,不带 SSID,小写。
已连接方的 AX.25 呼号,带 SSID,大写。
已连接方的 AX.25 呼号,带 SSID,小写。
连接来自的远程节点的 AX.25 呼号,不带 SSID,大写。
连接来自的远程节点的 AX.25 呼号,不带 SSID,小写。
连接来自的远程节点的 AX.25 呼号,带 SSID,大写。
连接来自的远程节点的 AX.25 呼号,带 SSID,小写。
对于您要接受传入 AX.25、NET/ROM 或 ROSE 连接的每个 AX.25、NET/ROM 或 ROSE 接口,您都需要上面格式的一个部分。
段落中有两个特殊的行,一个以字符串 `parameters' 开头,另一个以字符串 `default' 开头(是的,有区别)。这些行具有特殊功能。
“default' 行的目的应该是显而易见的,此行充当捕获所有,因此 <interface_call> 接口上任何没有特定规则的传入连接都将匹配 “default' 规则。如果您没有 “default' 规则,那么任何不匹配任何特定规则的连接都将立即断开,恕不另行通知。
“parameters' 行有点微妙,这就是我之前提到的陷阱。在对等节点的任何定义的任何字段中,您都可以使用 `*' 字符来表示“使用默认值”。“parameters' 行是设置这些默认值的地方。如果您不使用 “parameters' 条目指定任何默认值,则内核软件本身具有一些默认值,这些默认值将被使用。陷阱是这些默认值仅适用于 “parameters' 行下方的规则,而不适用于上方的规则。每个接口定义可以有多个 “parameters' 规则,通过这种方式,您可以创建默认配置组。重要的是要注意,“parameters' 规则不允许您设置 “uid' 或 “command' 字段。
好的,一个说明性例子
# ax25d.conf for VK2KTJ - 02/03/97 # This configuration uses the AX.25 port defined earlier. # <peer> Win T1 T2 T3 idl N2 <mode> <uid> <exec> <argv[0]>[<args....>] [VK2KTJ-0 via radio] parameters 1 10 * * * * * VK2XLZ * * * * * * * root /usr/sbin/axspawn axspawn %u + VK2DAY * * * * * * * root /usr/sbin/axspawn axspawn %u + NOCALL * * * * * * L default 1 10 5 100 180 5 * root /usr/sbin/pms pms -a -o vk2ktj [VK2KTJ-1 via radio] default * * * * * 0 root /usr/sbin/node node <netrom> parameters 1 10 * * * * * NOCALL * * * * * * L default * * * * * * 0 root /usr/sbin/node node {VK2KTJ-0 via rose} parameters 1 10 * * * * * VK2XLZ * * * * * * * root /usr/sbin/axspawn axspawn %u + VK2DAY * * * * * * * root /usr/sbin/axspawn axspawn %u + NOCALL * * * * * * L default 1 10 5 100 180 5 * root /usr/sbin/pms pms -a -o vk2ktj {VK2KTJ-1 via rose} default * * * * * 0 root /usr/sbin/node node radio |
此示例说明,任何尝试连接到在名为 “radio' 的 AX.25 端口上听到的呼号 “VK2KTJ-0' 的人都将应用以下规则
任何呼号设置为 “NOCALL” 的人都应被锁定,请注意模式 “L” 的使用。
行更改了内核默认值中的两个参数(窗口和 T1),并将为他们运行 /usr/sbin/axspawn 程序。以这种方式运行的任何 /usr/sbin/axspawn 副本都将在 ps 列表中显示为 axspawn,以方便使用。接下来的两行提供了将接收这些权限的两个站点的定义。parameters最后一行是 “捕获所有” 定义,其他所有人都将获得该定义(包括使用除 -1 之外的任何其他 SSID 的 VK2XLZ 和 VK2DAY)。此定义隐式设置所有参数,并将导致 pms 程序运行,并带有命令行参数,指示它是为 AX.25 连接运行的,并且所有者呼号是
radioVK2KTJ。(有关更多详细信息,请参见下面的 “配置 PMS” 部分)。
下一个配置接受对VK2KTJ-1通过VK2KTJ-0端口的呼叫。它为连接到它的每个人运行 node 程序。
下一个配置是 NET/ROM 配置,请注意使用大于号和小于号而不是方括号。这些表示 NET/ROM 配置。此配置更简单,它只是说任何连接到我们名为 “netrom' 的 NET/ROM 端口的人都将运行 node 程序,除非他们的呼号为 “NOCALL',在这种情况下,他们将被锁定。
最后两个配置用于传入的 ROSE 连接。第一个用于呼叫了 “vk2ktj-0' 的人,第二个用于 “VK2KTJ-1在我们的 ROSE 节点地址。这些工作方式完全相同。请注意使用花括号来区分端口作为 ROSE 端口。
这个例子是一个人为的例子,但我认为它清楚地说明了配置文件的语法的重要特征。配置文件在文件的通用格式如下 man 手册中得到了充分的解释。ax25-utils软件包中包含了一个更详细的示例,这对您也可能有用。软件包中包含了一个更详细的示例,这对您也可能有用。
完成两个配置文件后,您可以使用以下命令启动 ax25d
# /usr/sbin/ax25d |
运行时,人们应该能够与您的 Linux 机器建立 AX.25 连接。请记住将ax25d命令放在您的 rc 文件中,以便每次重新启动时自动启动它。