나는 누군가가 내 VPS 서버(서버라고 함)를 통해 Davmail IMAP 서버에 액세스하는 것을 불가능하게 만들려고 노력하고 있습니다(지역 차단으로 인해, 그러나 반드시 관련이 있는 것은 아닙니다). 아래 다이어그램에서 서로 다른 당사자 간의 연결을 설명합니다.
이 명령을 사용하여 Davmail(공개적으로 액세스할 수 없음)에서 SSH 서버(공개적으로 액세스할 수 있음)로 터널을 설정합니다.
ssh -g -R \*:2143:localhost:1143 -N user@server
SSH 서버 자체에서 로컬 호스트로 사용하면 제대로 연결되고 작동합니다. 디버깅을 위해 텔넷을 사용하고 있으며 앞으로는 IMAP(또는 IMAPS)이 있어야 합니다.
# telnet localhost 2143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4REV1 AUTH=LOGIN MOVE SPECIAL-USE] IMAP4rev1 DavMail 5.5.1-trunk server ready
. LOGIN user pass
. OK Authenticated
그러나 포트의 SSH 서버에 원격으로 연결하면 연결되지만 (거의) 데이터가 전달되지 않습니다.
$ telnet server 2143
Trying 94.130.99.72...
Connected to server.
Escape character is '^]'.
그리고 연결이 끊어졌습니다. 그러나 이 설정에서 사용하면 netcat이 작동하고 데이터가 양방향으로 전송됩니다. SSH 클라이언트는 연결이 있음을 나타냅니다.
debug3: receive packet: type 90
debug1: client_input_channel_open: ctype forwarded-tcpip rchan 4 win 2097152 max 32768
debug1: client_request_forwarded_tcpip: listen port 2143, originator 195.113.180.82 port 16119
debug2: fd 6 setting O_NONBLOCK
debug2: fd 6 setting TCP_NODELAY
debug1: connect_next: host 192.168.10.161 ([192.168.10.161]:1143) in progress, fd=6
debug3: fd 6 is O_NONBLOCK
debug3: fd 6 is O_NONBLOCK
debug1: channel 2: new [195.113.180.82]
debug1: confirm forwarded-tcpip
debug3: channel 2: waiting for connection
debug1: channel 2: connected to 192.168.10.161 port 1143
debug3: send packet: type 91
Davmail에는 초기 연결이 표시되지만 실제로 상대방에서는 데이터가 수신되지 않습니다(내가 아는 한).
2024-03-03 17:06:44,338 DEBUG [davmail.imap.ImapServer] davmail - Connection from /192.168.10.161 on port 1143
2024-03-03 17:06:44,338 INFO [davmail.imap.ImapServer] davmail.connection - CONNECT - 192.168.10.161:59732
2024-03-03 17:06:44,382 DEBUG [ImapConnection-59732] davmail.exchange.ExchangeSession - Test configuration status: 302
2024-03-03 17:06:44,383 DEBUG [ImapConnection-59732] davmail - > * OK [CAPABILITY IMAP4REV1 AUTH=LOGIN MOVE SPECIAL-USE] IMAP4rev1 DavMail 5.5.1-trunk server ready
서버에서 방화벽이 비활성화되었습니다.
# ufw status
Status: inactive
GatewayPort가 열려 있습니다.
# /etc/ssh/sshd_config
GatewayPorts yes
AllowTcpForwarding yes
어떻게 더 디버깅할 수 있나요?