
我正在嘗試配置 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