>>>>> On Thu, 2 Apr 2020 08:33:42 -0400, Mirko Vukovic said:
>
> On Thu, Apr 2, 2020 at 7:55 AM Martin Simmons <martin@lispworks.com> wrote:
>
> > >>>>> On Wed, 1 Apr 2020 08:59:30 -0400, Mirko Vukovic said:
> > >
> > > On Tue, Mar 31, 2020 at 11:51 AM Martin Simmons <martin@lispworks.com>
> > > wrote:
> > >
> > > > >>>>> On Mon, 30 Mar 2020 21:16:00 -0400, Mirko Vukovic said:
> > > > >
> > > > > Hello,
> > > > >
> > > > > My setup is Sly on Spacemacs with Windows 10 running remote lisp on
> > Linux
> > > > > over a corporate network. I have not found a Sly mailing list, and I
> > > > hope I
> > > > > can get an answer here.
> > > > >
> > > > > Emacs is running Sly on Spacemacs on Windows 10. Lisp is running on a
> > > > Linux
> > > > > server. But Sly does not connect to the listening Lisp. Corporate
> > network
> > > > > security policies have changed. I can ask for IT to accommodate me,
> > but
> > > > > first I need to know what to ask for.
> > > > >
> > > > > So far, I have opened a tunnel, and started a listening lisp (details
> > > > > below).
> > > > >
> > > > > In Emacs I get:
> > > > >
> > > > > sly-connect RET RET RET
> > > > > [sly] Connecting to Slynk on port 4005..
> > > > > helm-M-x-execute-command: make client process failed: Connection
> > timed
> > > > out,
> > > > > :name, sly-9, :buffer, nil, :host, hal9000, :service, 4005, :nowait,
> > nil,
> > > > > :tls-parameters, nil
> > > > >
> > > > > The session transcript:
> > > > > > ssh -L4005:localhost:4005 mirko@hal9000
> > > > >
> > > > > [mirko@hal9000 .roswell]$ ros -L ccl-bin run --load
> > > > start-slynk-server.lisp
> > > > >
> > > > > Added SLYNK path to ASDF:*CENTRAL-REGISTRY*
> > > > > SLYNK's ASDF loader finished.
> > > > > Loaded ASDF system
> > > > > ;; Slynk started at port: 4005.
> > > > >
> > > > > Created SLYNK server on port 4005
> > > > > Set *USE-DEDICATED-OUTPUT-STREAM* to NIL
> > > > > Clozure Common Lisp Version 1.11.5/v1.11.5 (LinuxX8664)
> > > > >
> > > > > For more information about CCL, please see http://ccl.clozure.com.
> > > > >
> > > > > CCL is free software. It is distributed under the terms of the
> > Apache
> > > > > Licence, Version 2.0.
> > > > > ?
> > > > >
> > > > > My question is as follows:
> > > > >
> > > > > 1. Do I need bi-directional traffic on 4005?
> > > >
> > > > Assuming you are using the ssh tunnel above, then you don't need port
> > 4005
> > > > traffic on the LAN (it is all hidden in the tunnel).
> > > >
> > > > The most likely problem is that some firewall on the Windows machine is
> > > > blocking port 4005. You may need to configure that firewall to allow
> > ssh
> > > > to
> > > > listen on localhost:4005 and/or to accept connections to it from
> > Spacemacs.
> > > > In theory you might have similar localhost firewall issues on hal9000,
> > but
> > > > that is less likely.
> > > >
> > > >
> > > > > 2. Do I need bi-directional traffic on 22? (after recent changes I
> > > > > cannot ssh or scp into my Windows machine)
> > > >
> > > > I'm assuming that you ran the ssh command on the Windows 10 machine
> > and it
> > > > gave you a working login to hal9000. If so, then it looks like you
> > already
> > > > have what you need for port 22.
> > > >
> > >
> > > Yes, I can log in to hal9000 with the -L switch:
> > >
> > > > ssh -L4005:localhost:4005 mirko@hal9000
> > > Last login: Thu Mar 19 14:33:17 2020 from 172.27.236.189
> > > [mirko@hal9000 ~]$
> > >
> > >
> > > >
> > > > Note that bi-directional traffic on a connected socket is different
> > from
> > > > whether you can make a connection in both directions.
> > > >
> > > >
> > > > > 3. What tools can I use to try to narrow down the cause of the
> > > > problem?
> > > > > For instance, can I send a command to the lisp image, and see its
> > > > effects
> > > > > on the lisp side?
> > > >
> > > > Firstly, run "netstat -antp" on hal9000 to see if Lisp is listening on
> > port
> > > > 4005.
> > > >
> > >
> > > It looks that ccl-bin is listening:
> > > $ sudo netstat -antp | grep :4005
> > > tcp 0 0 127.0.0.1:4005 0.0.0.0:*
> > LISTEN
> > > 104461/lx86cl64
> > >
> > >
> > > >
> > > > Secondly, run "netstat -anop tcp" on the Windows 10 machine to see if
> > ssh
> > > > is
> > > > listening on port 4005.
> > > >
> > > >
> > > I have Msys2's netstat. On the laptop:
> > > > which netstat
> > > /c/WINDOWS/system32/netstat
> > > /c/Users/mirko/Downloads
> > > > netstat -anop tcp | grep :4005
> > > TCP 127.0.0.1:4005 0.0.0.0:0 LISTENING
> > 12052
> >
> > Yes, both netstat outputs look good at that point.
> >
> >
> > > > Thirdly, run "ssh -p 4005 localhost" on the Windows 10 machine. This
> > use a
> > > > ssh is very bogus, but it should at least give an error message with
> > some
> > > > diagnostics. (Normally I would use telnet for this, but it is not
> > > > installed
> > > > on Windows 10 by default.)
> > > >
> > >
> > > Outputs of both ssh and telnet on the laptop:
> > > > which telnet
> > > /usr/bin/telnet
> > > /c/Users/mirko/Downloads
> > > > telnet localhost 4005
> > > Trying ::1...
> > > Connected to localhost.
> > > Escape character is '^]'.
> > > Connection closed by foreign host.
> >
> > OK, so it is connected to the Windows side at least.
> >
> > Check that the Slynk server was created with :dont-close t (or set
> > slynk:*dont-close* to t before creating it). If dont-close is nil, it will
> > only accept one connection, which makes debugging difficult.
> >
> > Then restart the log in to hal9000 with -v option to ssh to make it print
> > debug
> > information:
> >
> > ssh -v -L4005:localhost:4005 mirko@hal9000
> >
> > and try the telnet again to see what is happening at the Linux end.
> >
> > __Martin
> >
> Here is the test log. Telnet and ssh debug are at the bottom.
> 1 Start slynk with :dont-close t
>
> Modified startup script:
>
> (let ((port 4005))
> (slynk:create-server :port port :dont-close t)
> (format t "~% Created SLYNK server on port ~a" port))
> (setf slynk:*use-dedicated-output-stream* nil)
>
> 2 Started tunnel with verbose option, -v switch
>
> $ ssh -v -L4005:hal9000:4005 mirko@hal9000
>
> 3 Telnet on laptop side to laptop port 4005
>
> @laptop> telnet localhost 4005
> Trying ::1...
> Connected to localhost.
> Escape character is '^]'.
> Connection closed by foreign host.
>
> 4 SSH debug output
>
> @hal9000> debug1: Connection to port 4005 forwarding to hal9000 port
> 4005 requested.
> debug1: channel 3: new [direct-tcpip]
> channel 3: open failed: connect failed: Connection refused
> debug1: channel 3: free: direct-tcpip: listening port 4005 for hal9000
> port 4005, connect from ::1 port 64100 to ::1 port 4005, nchannels 4
It looks like hal9000 is resolving to the IPv6 localhost address ::1 on
hal9000, but the Lisp is probably only listening on IPv4.
Try restarting the tunnel with -L4005:127.0.0.1:4005 to force IPv4.
__Martin
:dont-close t
as before-v
switch and IPv4$ ssh -v -L4005:127.0.0.1:4005 977315@hal9000
@laptop> telnet localhost 4005 Trying ::1... Connected to localhost. Escape character is '^]'.
debug1: Connection to port 4005 forwarding to 127.0.0.1 port 4005 requested. debug1: channel 3: new [direct-tcpip]
telnet
sessionUsing telnet
session send command:
*features* Connection closed by foreign host.
;; slynk:close-connection: Not an integer string: "*featu" ;; closing 0 channels ;; closing 0 listeners ;; Event history start: decode-message close-connection: Not an integer string: "\x00FF\x00F4\x00FF\x00FD\x00FF" ... close-connection Not an integer string: "\x00FF\x00F4\x00FF\x00FD\x00FF" ... done. decode-message close-connection: Not an integer string: "*featu" ... ;; Event history end. ;; Backtrace: 0: (NIL #<Unknown Arguments>) 1: (NIL #<Unknown Arguments>) 2: (SLYNK-BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT #<Compiled-function (:INTERNAL SLYNK::SAFE-BACKTRACE) (Non-Global) #x302000A0BFFF>) 3: (SLYNK::SAFE-BACKTRACE) 4: (SLYNK::SIGNAL-SLYNK-ERROR #<CCL::PARSE-INTEGER-NOT-INTEGER-STRING #x302000C1F32D> NIL) 5: (SIGNAL #<CCL::PARSE-INTEGER-NOT-INTEGER-STRING #x302000C1F32D>) 6: (CCL::%ERROR #<CCL::PARSE-INTEGER-NOT-INTEGER-STRING #x302000C1F32D> (:STRING "*featu") 5975725205395) 7: (PARSE-INTEGER "*featu" :START 0 :END 6 :RADIX 16 :JUNK-ALLOWED NIL) 8: (SLYNK-RPC:READ-PACKET #<BASIC-TCP-STREAM ISO-8859-1 (SOCKET/4) #x302000BDFD9D>) 9: (SLYNK-RPC:READ-MESSAGE #<BASIC-TCP-STREAM ISO-8859-1 (SOCKET/4) #x302000BDFD9D> #<Package "SLYNK-IO-PACKAGE">) 10: (SLYNK::DECODE-MESSAGE #<BASIC-TCP-STREAM ISO-8859-1 (SOCKET/4) #x302000BDFD9D>) 11: (SLYNK::READ-LOOP #<MULTITHREADED-CONNECTION #x302000BDEFCD>) 12: (CCL::RUN-PROCESS-INITIAL-FORM #<PROCESS reader-thread(9) [Active] #x302000BFEFBD> (#<COMPILED-LEXICAL-CLOSURE (:INTERNAL CCL::%PROCESS-RUN-FUNCTION) #x302000BFED2F>)) 13: ((:INTERNAL (CCL::%PROCESS-PRESET-INTERNAL (PROCESS))) #<PROCESS reader-thread(9) [Active] #x302000BFEFBD> (#<COMPILED-LEXICAL-CLOSURE (:INTERNAL CCL::%PROCESS-RUN-FUNCTION) #x302000BFED2F>)) 14: ((:INTERNAL CCL::THREAD-MAKE-STARTUP-FUNCTION)) ;; Connection to Emacs lost. [ ;; condition: Not an integer string: "*featu" ;; type: CCL::PARSE-INTEGER-NOT-INTEGER-STRING ;; style: :SPAWN]