systemd: haz que dropbear solo mire la interfaz openvpn

systemd: haz que dropbear solo mire la interfaz openvpn

Estoy intentando configurar dropbear para que haga lo siguiente.

1) Escuche solo en el puerto 22 de la interfaz tun0 (realizada por el servicio openvpn). 2) Utilice únicamente autorización de clave pública.

Veo que dropbear.socket puede mirar el puerto 22. Pero, ¿cómo puedo hacer para que solo mire una interfaz openvpn (por ejemplo, tun0)?

Probé "BindToDevice" en el archivo systemd dropbear.socket, pero tengo un problema con el huevo y la gallina en el que se necesita el socket dropbear para mostrar que la red está activa, pero openvpn necesita que la red esté activa para comenzar a crear el dispositivo tun0. .

¿Existe una mejor manera de configurar dropbear para que solo mire una interfaz en particular?

Respuesta1

Después de lidiar con el mismo problema, se me ocurrieron dos soluciones. El primero es un poco torpe, pero permite el uso de BindToDevice. Requiere configurar DefaultDependencies=noy luego replicar eldependencias predeterminadas, a excepción de la Before=sockets.targetdependencia. El .socketarchivo podría verse como el siguiente:

[Unit]
Description=Dropbear Activation Socket
DefaultDependencies=no
After=sysinit.target
Requires=sysinit.target
Before=shutdown.service
Conflicts=shutdown.service
Requires=sys-devices-virtual-net-tun0.device
After=sys-devices-virtual-net-tun0.device

[Socket]
ListenStream=:22
BindToDevice=tun0
Accept=yes

[Install]
WantedBy=multi-user.target

Tenga en cuenta también que for WantedBy=usé multi-user.targety no sockets.target.

Sin embargo, existe otra solución que es más sencilla si su caso de uso permite especificar la tun0dirección IP en el .socketarchivo. Para lograr esto, especifique la dirección IP en la ListenStreamdirectiva y useFreeBind=yesen lugar de BindToDevice=tun0. El archivo resultante .socketpodría verse así:

[Unit]
Description=Dropbear Activation Socket

[Socket]
ListenStream=<tun0 IP address>:22
FreeBind=yes
Accept=yes

[Install]
WantedBy=sockets.target

información relacionada