systemd를 사용하여 stunnel 시작

systemd를 사용하여 stunnel 시작

내 VPS에는 SSH를 캡슐화하기 위한 stunnel이 있는 Debian 11 시스템이 있습니다(이유는 묻지 마세요).

구성 파일이 있습니다 /etc/stunnel/proxy-ssh.conf.

[proxy-ssh]
cert = /etc/ssl/private/le-vps1.merlin-vrn.tk-key+fullchain.pem
accept = 1443
connect = 22

수동으로 시작하면 다음과 같이 시작됩니다.

# ss -lnpt | grep -c 1443
0
# stunnel /etc/stunnel/proxy-ssh.conf
# ss -lnpt | grep 1443
LISTEN 0      128                 0.0.0.0:1443       0.0.0.0:*    users:(("stunnel",pid=10121,fd=10))

syslog다음 콘텐츠가 포함되어 있습니다:

Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: stunnel 5.56 on x86_64-pc-linux-gnu platform
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Compiled with OpenSSL 1.1.1k  25 Mar 2021
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Running  with OpenSSL 1.1.1w  11 Sep 2023
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Reading configuration from file /etc/stunnel/proxy-ssh.conf
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: UTF-8 byte order mark not detected
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: FIPS mode disabled
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Configuration successful
Oct 11 09:12:02 vps1 stunnel: LOG5[ui]: Binding service [proxy-ssh] to :::1443: Address already in use (98)
Oct 11 09:12:24 vps1 stunnel: LOG5[0]: Service [proxy-ssh] accepted connection from xx.xx.xxx.xx:51104
Oct 11 09:12:24 vps1 stunnel: LOG5[0]: s_connect: connected ::1:22
Oct 11 09:12:24 vps1 stunnel: LOG5[0]: Service [proxy-ssh] connected remote server from ::1:59156
Oct 11 09:12:25 vps1 systemd[1]: Started Session 73843673 of user yyyy.

따라서 작동합니다(연결이 허용되는 것을 볼 수 있습니다). 포트 1443에서 수신 대기 중인 Binding service [proxy-ssh] to :::1443: Address already in use (98)항목 ss이 없음을 분명히 보여주지만 작동을 방해하지는 않는다는 메시지가 왜 나오는지 잘 모르겠습니다 .


데비안은 systemd 템플릿 유닛을 제공합니다 [email protected]. [email protected]구성 파일을 사용하여 stunnel을 실행하는 서비스를 활성화하고 시작해야 했기 proxy-ssh.conf때문에 수동으로 stunnel을 종료하고 서비스를 실행했습니다.

# systemctl status [email protected][email protected] - TLS tunnel for network daemons - per-config-file service
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
     Active: inactive (dead) since Wed 2023-10-11 09:26:36 +04; 4min 55s ago
       Docs: man:stunnel4(8)
    Process: 10314 ExecStart=/usr/bin/stunnel4 /etc/stunnel/proxy-ssh.conf (code=exited, status=0/SUCCESS)
   Main PID: 10314 (code=exited, status=0/SUCCESS)
root@vps1:/var/log# ss -lnpt | grep -c 1443
0
root@vps1:/var/log# systemctl start [email protected]
root@vps1:/var/log# ss -lnpt | grep -c 1443
0

syslog다음과 같은 내용이 있습니다.

Oct 11 09:32:03 vps1 systemd[1]: Started TLS tunnel for network daemons - per-config-file service.
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: stunnel 5.56 on x86_64-pc-linux-gnu platform
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Compiled with OpenSSL 1.1.1k  25 Mar 2021
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Running  with OpenSSL 1.1.1w  11 Sep 2023
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Threading:PTHREAD Sockets:POLL,IPv6,SYSTEMD TLS:ENGINE,FIPS,OCSP,PSK,SNI Auth:LIBWRAP
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Reading configuration from file /etc/stunnel/proxy-ssh.conf
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: UTF-8 byte order mark not detected
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: FIPS mode disabled
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Configuration successful
Oct 11 09:32:03 vps1 stunnel: LOG5[ui]: Binding service [proxy-ssh] to :::1443: Address already in use (98)
Oct 11 09:33:33 vps1 systemd[1]: [email protected]: State 'stop-sigterm' timed out. Killing.
Oct 11 09:33:33 vps1 systemd[1]: [email protected]: Failed with result 'timeout'.

"정상적인 초기화 시퀀스" 후 실패가 선언되기 전까지 1.5분 정도 지연된다는 점에 유의하세요. 지연되는 동안 서비스는 일부 주를 거쳐 전환 중이었는데 우연히 이 상태를 발견했습니다: Active: deactivating (stop-sigterm) since Wed 2023-10-11 09:32:03 +04; 43s ago. 마지막으로 실패 상태에 들어갑니다.

[email protected] - TLS tunnel for network daemons - per-config-file service
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
     Active: failed (Result: timeout) since Wed 2023-10-11 09:33:33 +04; 5min ago
       Docs: man:stunnel4(8)
    Process: 10546 ExecStart=/usr/bin/stunnel4 /etc/stunnel/proxy-ssh.conf (code=exited, status=0/SUCCESS)
   Main PID: 10546 (code=exited, status=0/SUCCESS)

서비스 파일에는 멋진 것이 없습니다. 시작할 때 사용한 것과 동일한 명령입니다.

문제는 무엇이며 어떻게 해결합니까?

답변1

이제 포그라운드에서 실행되도록 stunnel을 구성해야 한다는 사실이 밝혀졌습니다.

foreground = yes

[proxy-ssh]
cert = /etc/ssl/private/le-vps1.merlin-vrn.tk-key+fullchain.pem
accept = 1443
connect = 22

그 후에는 서비스가 즉시 시작되고 예상대로 작동합니다.

관련 정보