Re: What are port requirements for remote lisp?
Mirko Vukovic <[email protected]> Thu, 2 Apr 2020 08:33:42 -0400
| Newsgroups | gmane.lisp.slime.devel |
|---|---|
| Message-ID | <CAO73BABuCXVwvx6HmfOEE-Jo-erwTJgiatFTQSFO0ptTwE7vxg@mail.gmail.com> |
--000000000000005af205a24e0559 Content-Type: text/plain; charset="UTF-8" On Thu, Apr 2, 2020 at 7:55 AM Martin Simmons <[email protected]> wrote: > >>>>> On Wed, 1 Apr 2020 08:59:30 -0400, Mirko Vukovic said: > > > > On Tue, Mar 31, 2020 at 11:51 AM Martin Simmons <[email protected]> > > 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 Thanks, Mirko --000000000000005af205a24e0559 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr">On Thu, Apr 2, 2020 at 7:55 AM Martin Sim= mons <<a href=3D"mailto:[email protected]">[email protected]</a>&g= t; wrote:<br></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_qu= ote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,20= 4);padding-left:1ex">>>>>> On Wed, 1 Apr 2020 08:59:30 -0400= , Mirko Vukovic said:<br> > <br> > On Tue, Mar 31, 2020 at 11:51 AM Martin Simmons <<a href=3D"mailto:= [email protected]" target=3D"_blank">[email protected]</a>><br> > wrote:<br> > <br> > > >>>>> On Mon, 30 Mar 2020 21:16:00 -0400, Mirko Vu= kovic said:<br> > > ><br> > > > Hello,<br> > > ><br> > > > My setup is Sly on Spacemacs with Windows 10 running remote = lisp on Linux<br> > > > over a corporate network. I have not found a Sly mailing lis= t, and I<br> > > hope I<br> > > > can get an answer here.<br> > > ><br> > > > Emacs is running Sly on Spacemacs on Windows 10. Lisp is run= ning on a<br> > > Linux<br> > > > server. But Sly does not connect to the listening Lisp. Corp= orate network<br> > > > security policies have changed. I can ask for IT to accommod= ate me, but<br> > > > first I need to know what to ask for.<br> > > ><br> > > > So far, I have opened a tunnel, and started a listening lisp= (details<br> > > > below).<br> > > ><br> > > > In Emacs I get:<br> > > ><br> > > > sly-connect RET RET RET<br> > > > [sly] Connecting to Slynk on port 4005..<br> > > > helm-M-x-execute-command: make client process failed: Connec= tion timed<br> > > out,<br> > > > :name, sly-9, :buffer, nil, :host, hal9000, :service, 4005, = :nowait, nil,<br> > > > :tls-parameters, nil<br> > > ><br> > > > The session transcript:<br> > > > > ssh -L4005:localhost:4005 mirko@hal9000<br> > > ><br> > > > [mirko@hal9000 .roswell]$ ros -L ccl-bin run --load<br> > > start-slynk-server.lisp<br> > > ><br> > > >=C2=A0 Added SLYNK path to ASDF:*CENTRAL-REGISTRY*<br> > > > SLYNK's ASDF loader finished.<br> > > >=C2=A0 Loaded ASDF system<br> > > > ;; Slynk started at port: 4005.<br> > > ><br> > > >=C2=A0 Created SLYNK server on port 4005<br> > > >=C2=A0 Set *USE-DEDICATED-OUTPUT-STREAM* to NIL<br> > > > Clozure Common Lisp Version 1.11.5/v1.11.5=C2=A0 (LinuxX8664= )<br> > > ><br> > > > For more information about CCL, please see <a href=3D"http:/= /ccl.clozure.com" rel=3D"noreferrer" target=3D"_blank">http://ccl.clozure.c= om</a>.<br> > > ><br> > > > CCL is free software.=C2=A0 It is distributed under the term= s of the Apache<br> > > > Licence, Version 2.0.<br> > > > ?<br> > > ><br> > > > My question is as follows:<br> > > ><br> > > >=C2=A0 =C2=A0 1. Do I need bi-directional traffic on 4005?<br= > > ><br> > > Assuming you are using the ssh tunnel above, then you don't n= eed port 4005<br> > > traffic on the LAN (it is all hidden in the tunnel).<br> > ><br> > > The most likely problem is that some firewall on the Windows mach= ine is<br> > > blocking port 4005.=C2=A0 You may need to configure that firewall= to allow ssh<br> > > to<br> > > listen on localhost:4005 and/or to accept connections to it from = Spacemacs.<br> > > In theory you might have similar localhost firewall issues on hal= 9000, but<br> > > that is less likely.<br> > ><br> > ><br> > > >=C2=A0 =C2=A0 2. Do I need bi-directional traffic on 22? (aft= er recent changes I<br> > > >=C2=A0 =C2=A0 cannot ssh or scp into my Windows machine)<br> > ><br> > > I'm assuming that you ran the ssh command on the Windows 10 m= achine and it<br> > > gave you a working login to hal9000.=C2=A0 If so, then it looks l= ike you already<br> > > have what you need for port 22.<br> > ><br> > <br> > Yes, I can log in to hal9000 with the -L switch:<br> > <br> > > ssh -L4005:localhost:4005 mirko@hal9000<br> > Last login: Thu Mar 19 14:33:17 2020 from 172.27.236.189<br> > [mirko@hal9000 ~]$<br> > <br> > <br> > ><br> > > Note that bi-directional traffic on a connected socket is differe= nt from<br> > > whether you can make a connection in both directions.<br> > ><br> > ><br> > > >=C2=A0 =C2=A0 3. What tools can I use to try to narrow down t= he cause of the<br> > > problem?<br> > > >=C2=A0 =C2=A0 For instance, can I send a command to the lisp = image, and see its<br> > > effects<br> > > >=C2=A0 =C2=A0 on the lisp side?<br> > ><br> > > Firstly, run "netstat -antp" on hal9000 to see if Lisp = is listening on port<br> > > 4005.<br> > ><br> > <br> > It looks that ccl-bin is listening:<br> > $ sudo netstat -antp | grep :4005<br> > tcp=C2=A0 =C2=A0 =C2=A0 =C2=A0 0=C2=A0 =C2=A0 =C2=A0 0 <a href=3D"http= ://127.0.0.1:4005" rel=3D"noreferrer" target=3D"_blank">127.0.0.1:4005</a>= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0.0.0.0:*=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0LISTEN<br> >=C2=A0 =C2=A0 =C2=A0 104461/lx86cl64<br> > <br> > <br> > ><br> > > Secondly, run "netstat -anop tcp" on the Windows 10 mac= hine to see if ssh<br> > > is<br> > > listening on port 4005.<br> > ><br> > ><br> > I have Msys2's netstat. On the laptop:<br> > > which netstat<br> > /c/WINDOWS/system32/netstat<br> > /c/Users/mirko/Downloads<br> > > netstat -anop tcp | grep :4005<br> >=C2=A0 =C2=A0TCP=C2=A0 =C2=A0 <a href=3D"http://127.0.0.1:4005" rel=3D"= noreferrer" target=3D"_blank">127.0.0.1:4005</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0<a href=3D"http://0.0.0.0:0" rel=3D"noreferrer" target=3D"_blank">0.= 0.0.0:0</a>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LISTENING=C2=A0= =C2=A0 =C2=A0 =C2=A012052<br> <br> Yes, both netstat outputs look good at that point.<br> <br> <br> > > Thirdly, run "ssh -p 4005 localhost" on the Windows 10 = machine.=C2=A0 This use a<br> > > ssh is very bogus, but it should at least give an error message w= ith some<br> > > diagnostics.=C2=A0 (Normally I would use telnet for this, but it = is not<br> > > installed<br> > > on Windows 10 by default.)<br> > ><br> > <br> > Outputs of both ssh and telnet on the laptop:<br> > > which telnet<br> > /usr/bin/telnet<br> > /c/Users/mirko/Downloads<br> > > telnet localhost 4005<br> > Trying ::1...<br> > Connected to localhost.<br> > Escape character is '^]'.<br> > Connection closed by foreign host.<br> <br> OK, so it is connected to the Windows side at least.<br> <br> Check that the Slynk server was created with :dont-close t (or set<br> slynk:*dont-close* to t before creating it).=C2=A0 If dont-close is nil, it= will<br> only accept one connection, which makes debugging difficult.<br> <br> Then restart the log in to hal9000 with -v option to ssh to make it print d= ebug<br> information:<br> <br> ssh -v -L4005:localhost:4005 mirko@hal9000<br> <br> and try the telnet again to see what is happening at the Linux end.<br> <br> __Martin<br></blockquote><div>Here is the test log. Telnet and ssh debug ar= e at the bottom.</div><div id=3D"gmail-content" style=3D"color:rgb(0,0,0);f= ont-family:"Times New Roman";font-size:medium"><div id=3D"gmail-o= utline-container-orgb982551" class=3D"gmail-outline-2"><h2 id=3D"gmail-orgb= 982551"><span class=3D"gmail-section-number-2">1</span>=C2=A0Start slynk wi= th=C2=A0<code>:dont-close t</code></h2><div class=3D"gmail-outline-text-2" = id=3D"gmail-text-1"><p>Modified startup script:</p><pre class=3D"example" s= tyle=3D"border:1px solid rgb(204,204,204);padding:8pt;overflow:auto;margin:= 1.2em">(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) </pre></div></div><div id=3D"gmail-outline-container-orgaa6b68a" class=3D"g= mail-outline-2"><h2 id=3D"gmail-orgaa6b68a"><span class=3D"gmail-section-nu= mber-2">2</span>=C2=A0Started tunnel with verbose option,=C2=A0<code>-v</co= de>=C2=A0switch</h2><div class=3D"gmail-outline-text-2" id=3D"gmail-text-2"= ><pre class=3D"example" style=3D"border:1px solid rgb(204,204,204);padding:= 8pt;overflow:auto;margin:1.2em">$ ssh -v -L4005:hal9000:4005 mirko@hal9000 </pre></div></div><div id=3D"gmail-outline-container-org694162e" class=3D"g= mail-outline-2"><h2 id=3D"gmail-org694162e"><span class=3D"gmail-section-nu= mber-2">3</span>=C2=A0Telnet on laptop side to laptop port 4005</h2><div cl= ass=3D"gmail-outline-text-2" id=3D"gmail-text-3"><pre class=3D"example" sty= le=3D"border:1px solid rgb(204,204,204);padding:8pt;overflow:auto;margin:1.= 2em">@laptop> telnet localhost 4005 Trying ::1... Connected to localhost. Escape character is '^]'. Connection closed by foreign host. </pre></div></div><div id=3D"gmail-outline-container-orgd97c209" class=3D"g= mail-outline-2"><h2 id=3D"gmail-orgd97c209"><span class=3D"gmail-section-nu= mber-2">4</span>=C2=A0SSH debug output</h2><div class=3D"gmail-outline-text= -2" id=3D"gmail-text-4"><pre class=3D"example" style=3D"border:1px solid rg= b(204,204,204);padding:8pt;overflow:auto;margin:1.2em">@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=C2=A0</pre= ></div></div></div><div>=C2=A0Thanks,</div><div><br></div><div>Mirko</div><= /div></div> --000000000000005af205a24e0559--