systemd - openvpn 인터페이스만 보도록 dropbear를 얻습니다.

systemd - openvpn 인터페이스만 보도록 dropbear를 얻습니다.

다음을 수행하도록 dropbear를 구성하려고 합니다.

1) tun0 인터페이스(openvpn 서비스에서 생성)의 포트 22에서만 수신 대기합니다. 2) 공개키 인증만 사용하세요.

dropbear.socket이 포트 22를 볼 수 있다는 것을 알 수 있습니다. 그런데 어떻게 openvpn iface(예: tun0)만 보도록 할까요?

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

또한 for 가 아닌 을 WantedBy=사용했다는 점에 유의하세요 .multi-user.targetsockets.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

관련 정보