【发布时间】:2022-08-19 17:26:38
【问题描述】:
前段时间我安装了 Apache Guacamole(Guacd->Tomcat9->Apache[作为 guac 可访问虚拟主机的反向代理]) 在我的 LAMP 服务器上,安装很简单,因为说明清晰易懂,而且无论使用 RDP、SSH 还是 VNC,Guacamole 实例都能完美运行。
昨天我遇到了鳄梨酱的问题 - 从前端开始:
鳄梨调味酱服务器中发生内部错误,并且 连接已终止。如果问题仍然存在,请通知 您的系统管理员,或检查您的系统日志。
所以问题表明,只有 Guacamole 服务器存在问题,读取 Guacamole 的状态:
maj 20 10:02:02 mywebsite.here systemd[1]: Starting LSB: Guacamole proxy daemon... maj 20 10:02:02 mywebsite.here guacd[32305]: Guacamole proxy daemon (guacd) version 1.4.0 started maj 20 10:02:02 mywebsite.here guacd[32303]: Starting guacd: maj 20 10:02:02 mywebsite.here guacd[32305]: guacd[32305]: INFO: Guacamole proxy daemon (guacd) version 1.4.0 started maj 20 10:02:02 mywebsite.here guacd[32307]: Listening on host ::1, port 4822 maj 20 10:02:02 mywebsite.here guacd[32303]: SUCCESS maj 20 10:02:02 mywebsite.here systemd[1]: Started LSB: Guacamole proxy daemon.从 guacd 的当前日志来看,一切似乎都很好,guacd 在 localhost 上侦听并绑定到 4822 - 检查 netstat 以验证服务可用性:
tcp6 0 0 localhost:4822 [::]:* LISTEN 32307/guacd并 telnet 到 localhost:4822 :
telnet localhost 4822 Trying ::1... Connected to localhost. Escape character is \'^]\'.按回车
Connection closed by foreign host.回到鳄梨酱:
guacd[32307]: Guacamole protocol violation. Perhaps the version of guacamole-client is incompatible with this version of guacd?因此,由于您不能将 telnet 与 guacamole 一起使用,因此连接已终止,但据我所知,该服务可用并且可以使用。
由于鳄梨酱似乎没问题,现在是 Tomcat 9 的时候了:
[2022-05-20 10:20:26] [info] 10:20:26.434 [http-nio-8080-exec-10] ERROR o.a.g.w.GuacamoleWebSocketTunnelEndpoint - Creation of WebSocket tunnel to guacd failed: java.net.ConnectException: Połączenie odrzucone (Connection refused) [2022-05-20 10:20:26] [info] 10:20:26.682 [http-nio-8080-exec-8] ERROR o.a.g.s.GuacamoleHTTPTunnelServlet - HTTP tunnel request failed: java.net.ConnectException: Połączenie odrzucone (Connection refused)越来越清楚的是,问题必须在 Tomcat9 和 Guacamole 本身之间以及从 Tomcat 方面 - 你有任何想法如何调试它吗?
具有更高日志级别的 Tomcat 日志:
错误时刻:
[2022-05-24 08:56:11] [info] 08:56:11.135 [http-nio-8080-exec-3] DEBUG o.a.i.d.pooled.PooledDataSource - Testing connection 29049410 ... [2022-05-24 08:56:11] [info] 08:56:11.139 [http-nio-8080-exec-3] DEBUG o.a.i.d.pooled.PooledDataSource - Connection 29049410 is GOOD! [2022-05-24 08:56:11] [info] 08:56:11.139 [http-nio-8080-exec-3] DEBUG o.a.i.d.pooled.PooledDataSource - Returned connection 29049410 to pool. [2022-05-24 08:56:11] [info] 08:56:11.140 [http-nio-8080-exec-3] ERROR o.a.g.w.GuacamoleWebSocketTunnelEndpoint - Creation of WebSocket tunnel to guacd failed: java.net.ConnectException: Połączenie odrzucone (Connection refused) [2022-05-24 08:56:11] [info] 08:56:11.159 [http-nio-8080-exec-3] DEBUG o.a.g.w.GuacamoleWebSocketTunnelEndpoint - Error connecting WebSocket tunnel. [2022-05-24 08:56:11] [info] org.apache.guacamole.GuacamoleServerException: java.net.ConnectException: Połączenie odrzucone (Connection refused) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.net.InetGuacamoleSocket.<init>(InetGuacamoleSocket.java:114) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.auth.jdbc.tunnel.ManagedInetGuacamoleSocket.<init>(ManagedInetGuacamoleSocket.java:56) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.auth.jdbc.tunnel.AbstractGuacamoleTunnelService.getUnconfiguredGuacamoleSocket(AbstractGuacamoleTunnelService.java:319) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.auth.jdbc.tunnel.AbstractGuacamoleTunnelService.assignGuacamoleTunnel(AbstractGuacamoleTunnelService.java:483) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.auth.jdbc.tunnel.AbstractGuacamoleTunnelService.getGuacamoleTunnel(AbstractGuacamoleTunnelService.java:643) [2022-05-24 08:56:11] [info] #011at org.mybatis.guice.transactional.TransactionalMethodInterceptor.invoke(TransactionalMethodInterceptor.java:96) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.auth.jdbc.connection.ConnectionService.connect(ConnectionService.java:548) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.auth.jdbc.connection.ModeledConnection.connect(ModeledConnection.java:274) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.tunnel.TunnelRequestService.createConnectedTunnel(TunnelRequestService.java:216) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.tunnel.TunnelRequestService.createTunnel(TunnelRequestService.java:347) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.tunnel.websocket.RestrictedGuacamoleWebSocketTunnelEndpoint.createTunnel(RestrictedGuacamoleWebSocketTunnelEndpoint.java:113) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint.onOpen(GuacamoleWebSocketTunnelEndpoint.java:200) [2022-05-24 08:56:11] [info] #011at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.init(WsHttpUpgradeHandler.java:136) [2022-05-24 08:56:11] [info] #011at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:934) [2022-05-24 08:56:11] [info] #011at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684) [2022-05-24 08:56:11] [info] #011at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [2022-05-24 08:56:11] [info] #011at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [2022-05-24 08:56:11] [info] #011at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [2022-05-24 08:56:11] [info] #011at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [2022-05-24 08:56:11] [info] #011at java.base/java.lang.Thread.run(Thread.java:829) [2022-05-24 08:56:11] [info] Caused by: java.net.ConnectException: Połączenie odrzucone (Connection refused) [2022-05-24 08:56:11] [info] #011at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) [2022-05-24 08:56:11] [info] #011at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412) [2022-05-24 08:56:11] [info] #011at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255) [2022-05-24 08:56:11] [info] #011at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237) [2022-05-24 08:56:11] [info] #011at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) [2022-05-24 08:56:11] [info] #011at java.base/java.net.Socket.connect(Socket.java:609) [2022-05-24 08:56:11] [info] #011at org.apache.guacamole.net.InetGuacamoleSocket.<init>(InetGuacamoleSocket.java:100) [2022-05-24 08:56:11] [info] #011... 19 common frames omitted我无论如何都不喜欢Java,但我相信实际的错误原因在日志的那一部分内。如果与 Java 相关,我将不胜感激。
鳄梨酱.properties:
MySQL properties mysql-hostname: 127.0.0.1 mysql-port: 3306 mysql-database: guacamole_db mysql-username: guacamole_admin mysql-password: guacamole_****** Hostname and port of guacamole proxy guacd-hostname: 192.168.1.49 guacd-port: 4822本地主机表示(127.0.0.1/::1/localhost/192.168.1.49[local static addr])之间的更改不会产生差异
分析 Apache 日志可能毫无意义,因为尝试通过 Tomcat9 使用 Guacamole 只提供了相同的结果。