vtysh为单个组合会话中的所有FRR守护进程提供了一个组合前端。默认情况下,它在生成时启用,但可以通过configure脚本的--disable vtysh选项禁用。
vtysh有一个配置文件,vtysh.conf文件。该文件的位置不能从/etc/frr更改,因为它包含控制身份验证行为的选项。此文件也不会由配置保存命令写入,而是由管理员使用外部编辑器手动更新。
警告
这也意味着hostname和banner motd命令(两者都对vtysh有效)需要在vtysh.conf文件中手动更新.
- copy FILENAME running-config
手动处理和加载配置文件;文件中的每一行都被读取和处理,就好像它被键入(或通过管道)到vtysh一样。
Pager usage
vtysh可以调用外部分页程序(例如,或多或少)对命令的长输出进行分页。此功能以前默认情况下启用,但现在由 VTYSH_PAGER
环境变量和terminal paginate命令控制:
- VTYSH_PAGER
如果设置了,则VTYSH_PAGER
环境变量会使vtysh 通过给定的命令通过管道输出命令。请注意,无论输出的长度如何,都会发生这种情况。因此,标准pager 行为(特别是在输出结束时等待)往往会让用户感到恼火。建议使用较少的-EFX
以获得更好的用户体验。
如果此环境变量未设置,则vtysh默认不使用任何pager 。
这个变量应该由用户根据自己的喜好在~/.profile文件中设置。
- terminal paginate
启用/禁用vtysh输出分页。此命令将放置在vtysh.conf文件设置 system-wide 的默认值。如果启用了此选项,但未设置VTYSH_PAGER
,则将使用系统默认的pager (可能是more
or /usr/bin/pager
)。
Permissions and setup requirements
vtysh通过/var/run/frr中的Unix套接字连接到运行守护进程。因此,运行vtysh需要访问该目录,以及frrvty组中的成员资格(这是守护进程将其套接字的所有权更改为的组)。
要限制对FRR配置的访问,请确保没有未经授权的用户是frrvty组的成员。
警告
VTYSH实现了一个CLI选项-u,--user,它不允许在命令行中输入字符“en”,这在理想情况下限制了对配置命令的访问。然而,VTYSH从来没有被设计成特权代理,也没有使用安全编码实践构建。此选项不提供任何安全保证,在任何情况下都不应使用此选项来提供对FRR的任何表面安全性或只读访问。
PAM support (experimental)
vtysh有工作(但相当无用)PAM支持。它将使用frr作为服务名称执行“身份验证”PAM调用。vtysh将不执行其他(记帐、会话、密码更改)调用。
使用vtysh的用户仍然需要对守护进程的VTY套接字有适当的访问权限,通常是frrvty组的成员。如果他们有这个成员资格,PAM支持是无用的,因为他们可以连接到守护进程并使用其他工具发出命令。或者,可以将vtysh二进制文件设为frrvty组的SGID(set group ID)。
警告
此配置没有安全保证。
- username USERNAME nopassword
如果在构建时启用PAM支持,则此命令允许在每个用户基础上禁用PAM的使用。如果vtysh发现用户正在尝试使用vtysh,并且找到了“nopassword”条目,则根本不会调用PAM。
Integrated configuration mode
集成配置模式使用单个配置文件,frr.conf
,对于所有守护进程。这将替换单个文件,如zebra.conf
或者bgpd.conf文件.
frr.conf
位于/etc/frr。所有守护进程在启动时都会检查此文件是否存在,如果存在,则不会加载各自的配置文件。相反,必须调用vtysh -b来处理frr.conf
并将其设置应用于各个守护进程。
警告
vtysh-b也必须在重新启动任何守护进程之后执行。
Configuration saving, file ownership and permissions
那个 frr.conf
文件不是由任何守护进程编写的;相反,vtysh包含从所有守护进程收集配置、合并并写入所需的逻辑。
警告
vtysh必须运行守护程序才能收集其配置。执行配置保存后,非运行守护程序中的任何配置都将永久丢失。
由于vtysh命令可能作为系统上的普通用户运行,因此将通过watchfrr在内部使用write integrated命令来尝试配置写入。由于watchfrr是以超级用户的身份运行的,因此vtysh能够确保frr.conf.
如果watchfrr没有运行或者配置写入失败,vtysh将尝试直接写入文件。如果以非特权用户身份运行,则此操作可能会失败;或者,它可能会使文件的所有者或权限不正确。
编写配置可以通过调用vtysh-w直接触发。这对于编写脚本可能很有用。注意:此命令应以超级用户或FRR用户的身份运行。
我们建议您不要混合使用这两种类型的文件。此外,最好不要使用集成的frr.conf
文件,因为其中的任何语法错误都可能导致/all/守护进程无法启动。每个守护程序文件更健壮,因为配置中错误的影响仅限于发生错误的守护程序文件。
- service integrated-vtysh-config
控制是否集成frr.conf
文件是在发出“写入文件”时写入的。
这些命令需要放置在vtysh.conf文件有任何影响。注意,自vtysh.conf文件FRR本身不编写,因此需要手动将它们放置在该文件中。
此命令有3种状态:
(1) service integrated-vtysh-config
vtysh会一直写frr.conf
.
(2) no service integrated-vtysh-config
vtysh永远不会写frr.conf,
相反,它会要求守护进程编写各自的配置文件。
(3) Neither option present (default)
vtysh将检查frr.conf
存在。如果是这样,配置写入将更新该文件。否则,将通过各个守护进程执行写操作。
此命令主要用于包装/分发目的,以预设两种操作模式之一,并确保跨安装的一致操作。
- write integrated
无条件地(不管服务集成vtysh config设置)写出集成frr.conf
通过watchfrr归档。如果watchfrr未运行,则此命令不可用。
警告
某些守护程序未运行时所做的配置更改对该守护程序不可见。守护进程将以其保存的配置启动(在其单个配置文件中,或在frr.conf). 这对于路由映射和前缀列表尤其麻烦,否则它们将在守护进程之间同步。