2

Я пытаюсь настроить dropbear, чтобы сделать следующее.

1) Прослушивать только порт 22 интерфейса tun0 (созданного сервисом openvpn). 2) Используйте только авторизацию с открытым ключом.

Я вижу, что dropbear.socket может смотреть на порт 22. Но как мне это посмотреть только на openvpn iface (например, tun0)?

Я попробовал "BindToDevice" в системном файле dropbear.socket, но у меня возникает проблема с курицей и яйцом, когда требуется сокет dropbear, чтобы показать, что сеть работает, но openvpn нужна сеть, чтобы начать создавать устройство tun0 ,

Есть ли лучший способ настроить dropbear, чтобы смотреть только на конкретный интерфейс?

1 ответ1

0

После того, как я сам решил ту же проблему, я нашел два решения. Первый немного неуклюж, но позволяет использовать BindToDevice . Требуется установить DefaultDependencies=no и затем реплицировать зависимости по умолчанию, за исключением зависимости Before=sockets.target . Файл .socket может выглядеть следующим образом:

[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

Также обратите внимание, что для WantedBy= я использовал multi-user.target а не sockets.target .

Однако, есть другое решение , которое проще , если ваш случай использования разрешения с точным указанием IP - адреса tun0 в файле .socket Для этого укажите IP-адрес в директиве ListenStream и используйте FreeBind=yes вместо BindToDevice=tun0 . Результирующий файл .socket может выглядеть так:

[Unit]
Description=Dropbear Activation Socket

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

[Install]
WantedBy=sockets.target

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .