私の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
がないことを明確に示していますが、動作を妨げないというメッセージが表示される理由がわかりません。
Debian は 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
その後、サービスはすぐに開始され、期待どおりに機能します。