systemd - 讓 dropbear 只查看 openvpn 接口

systemd - 讓 dropbear 只查看 openvpn 接口

我正在嘗試配置 dropbear 來執行以下操作。

1) 僅監聽 tun0 介面的 22 連接埠(由 openvpn 服務製作)。 2)僅使用公鑰授權。

我看到 dropbear.socket 能夠查看連接埠 22。

我已經在dropbear.socket systemd 檔案上嘗試過「BindToDevice」 - 但我遇到了先有雞還是先有蛋的問題,其中需要dropbear 套接字來顯示網路已啟動,但openvpn 需要網路啟動才能開始建立tun0裝置.

有沒有更好的方法來設定 dropbear 僅查看特定介面?

答案1

在自己處理了同樣的問題之後,我想出了兩個解決方案。第一個有點笨拙,但允許使用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=另請注意,我使用的是 formulti-user.target而不是sockets.target

tun0但是,如果您的用例允許在文件中指定 IP 位址,則還有另一種更簡單的解決方案.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

相關內容