我正在尝试使用 rtables 设置具有路由分离的冗余 CARP 集群。一切正常,但我该如何告诉 sshd 启动仅有的在 rdomain 2 中?我知道我可以用以下方式手动启动它
# route -T4 exec /usr/sbin/sshd
但是 sshd 配置中似乎没有集成 rdomains。
答案1
sshd_config(5)
显示:
ListenAddress
Specifies the local addresses sshd(8) should listen on. The
following forms may be used:
ListenAddress hostname|address [rdomain domain]
ListenAddress hostname:port [rdomain domain]
ListenAddress IPv4_address:port [rdomain domain]
ListenAddress [hostname|address]:port [rdomain domain]
The optional rdomain qualifier requests sshd(8) listen in an
explicit routing domain. If port is not specified, sshd will
listen on the address and all Port options specified. The
default is to listen on all local addresses on the current
default routing domain. Multiple ListenAddress options are
permitted. For more information on routing domains, see
rdomain(4).
因此请确保您的 sshd 配置有例如。ListenAddress 0.0.0.0 rdomain 1
要创建 sshd 实例,只需执行以下操作:
# ln -s sshd /etc/rc.d/sshd_rdomainX
# rcctl enable sshd_rdomainX
# rcctl set sshd_rdomainX flags -f /etc/ssh/sshd_config-rdomainX
要测试它,请尝试:
mx1# /usr/sbin/sshd -T -f /tmp/sshd_config | grep listenaddress
listenaddress 0.0.0.0:22 rdomain 1
mx1# /usr/sbin/sshd -D -d -f /tmp/sshd_config
...
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-D'
debug1: rexec_argv[2]='-d'
debug1: rexec_argv[3]='-f'
debug1: rexec_argv[4]='/tmp/sshd_config'
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22 rdomain 1.
...
答案2
route -T4
您可以使用 rc.d(8)、rcctl(8)、rc.subr(8)编写定制的(通过调用)ssh 守护进程。
在 /etc/rc.conf 中禁用原始 sshd,并将 /etc/rc.d/rdomainsshd 放入。
/etc/rc.d/rdomainssshd 的模板脚本是:
/usr/ports/infrastructure/templates/rc.template
以下是 OpenBSD 手册页: