Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Local sites running in WSL2 not accessible in browser #5298

Closed
amykapernick opened this issue May 30, 2020 · 33 comments
Closed

Local sites running in WSL2 not accessible in browser #5298

amykapernick opened this issue May 30, 2020 · 33 comments

Comments

@amykapernick
Copy link

When starting a site/app locally on my computer in WSL 2 ( Ubuntu 20.04 LTS (GNU/Linux 4.19.84-microsoft-standard x86_64)), the browser won't connect to the local server.

This happens every time I start my computer (has been happening for a weekish now), but only when starting after the computer has been shut down. If I restart the computer, the local servers work fine

Please fill out the below information:

  • Your Windows build number: (Type ver at a Windows Command Prompt)
    Microsoft Windows [Version 10.0.19041.264]

  • What you're doing and what's happening:
    Running a local server for dev site. Happens regardless of site. eg.:

// Eleventy Site
$ npx @11ty/eleventy --serve

[Browsersync] Access URLs:
 --------------------------------------
       Local: http://localhost:8080
    External: http://172.25.237.22:8080
 --------------------------------------
          UI: http://localhost:3001
 UI External: http://localhost:3001
 --------------------------------------
[Browsersync] Serving files from: _site
[Browsersync] Watching files...


// Gatsby site
$ gatsby develop

success run queries - 5.329s - 9/9 1.69/s
 DONE  Compiled successfully in 2177ms                                                                               2:10:28 PM
⠀
 I  Netlify CMS is running at http://localhost:8000/admin/
⠀
You can now view climate-clever in the browser.
⠀
  http://localhost:8000/
⠀
View GraphiQL, an in-browser IDE, to explore your site's data and schema
⠀
  http://localhost:8000/___graphql
⠀
Note that the development build is not optimized.
To create a production build, use gatsby build
⠀
success Building development bundle - 3.192s
  • What's wrong / what should be happening instead:
    I should be able to access the apps at the provided local URL (localhost:8080 for eleventy and localhost:8000 for Gatsby), but when loading the page in the web browser it says it's unable to connect (in both Firefox and Edge)

  • Strace of the failing command, if applicable: (If some_command is failing, then run strace -o some_command.strace -f some_command some_args, and link the contents of some_command.strace in a gist here).
    image
    image

@onomatopellan
Copy link

onomatopellan commented May 30, 2020

@amykapernick
Copy link
Author

Nope, on some scripts this throws an error that --host isn't a recognised parameter, and on the rest the site starts properly, but the URLs still aren't accessible

@onomatopellan
Copy link

This happens every time I start my computer (has been happening for a weekish now), but only when starting after the computer has been shut down. If I restart the computer, the local servers work fine

That hint sounds a lot like Fast Startup. I always disable it and had no localhost problems so far.
https://www.tenforums.com/tutorials/4189-turn-off-fast-startup-windows-10-a.html

@amykapernick
Copy link
Author

Awesome, that's working now! At least I have a workaround for now (that doesn't require me restarting my computer as soon as I turn it on)

I wonder what the issue is that's making it not work when computer has fast booted

@gsalamin
Copy link

gsalamin commented Jun 3, 2020

To avoid disabling Fast Startup, restarting WSL as pointed in #4636 worked for me (wsl --shutdown).

@matze19999
Copy link

same problem here on 19640.mn_release.200530-1731 on Surface Pro X. wsl --shutdown doesn't work

@krojew
Copy link

krojew commented Jun 16, 2020

Ran into this issue today. Seems like 127.0.0.1 doesn't work at all.

@WozniakMac
Copy link

WozniakMac commented Jun 16, 2020

Ran into this issue today. Seems like 127.0.0.1 doesn't work at all.

@krojew
Try to add C:\Windows\System32\wsl.exe to Windows Defender Firewall

@krojew
Copy link

krojew commented Jun 16, 2020

I'm not using Windows Defender.

@onomatopellan
Copy link

Until the bug is fixed, make sure you disable Fast Startup.
If you still have localhost forwarding problems with Fast Startup disabled then it's another issue.

@krojew
Copy link

krojew commented Jun 16, 2020

I had to revert back to WSL1.

@ojacques
Copy link

ojacques commented Jul 3, 2020

Had the issue, fixed it temporarily (until bug is fixed) by disabling Fast Startup as recommended above.
Alternatively, opening a Powershell script, and issue wsl --shutdown, re-open WSL terminal brought me back to business every-time.

@matze19999
Copy link

Had the issue, fixed it temporarily (until bug is fixed) by disabling Fast Startup as recommended above.
Alternatively, opening a Powershell script, and issue wsl --shutdown, re-open WSL terminal brought me back to business every-time.

Didn't work for me, I fixed it by writing a little bash script, which modifies the windows host file everytime wsl is starting. Works perfectly :)

@garryburch
Copy link

@matze19999 Same here - would you mind providing your bash script? Thank you

@pixelpylon
Copy link

WSL2 seems to change localhost IP on every boot. Anybody found a decent "workaround"?

@matze19999
Copy link

matze19999 commented Jul 3, 2020

@matze19999 Same here - would you mind providing your bash script? Thank you

#!/bin/bash

NEWIP=`ifconfig | grep eth0 -A1 | tail -n1 | cut -d ' '  -f10 `

# delete IP from windows hosts file
sed '/wsl/d' -i '/mnt/c/Windows/System32/drivers/etc/hosts' || true

echo "$NEWIP		wsl" >> '/mnt/c/Windows/System32/drivers/etc/hosts'

Thats the script. Make sure your user has the permission to modify / create files in the "/Windows/System32/drivers/etc/" folder because sed will create a temp file in this directory. Run this script everytime you start wsl and you'll be fine.

@Scarysize
Copy link

Sorry for dropping in, but might this bug also cause an openssh-server running in WSL to not be available from the outside (beyond localhost)? I've set up ssh on port 2222:

In WSL/Ubuntu 20

$ netstat -an
Proto ... Local Address  Foreign Address   State
tcp       0.0.0.0:2222   0.0.0.0:*         LISTEN

In PowerShell on the same host

$ netstat -an
Proto ... Local Address    Foreign Address   State
TCP       127.0.0.1:2222   0.0.0.0:0         LISTENING

When I try to ssh from my Mac I get a connection timeout. Not even telnet 192.168.178.xx 2222 connects. I am able to ssh from the powershell into WSL (and from WSL into WSL...).

Fastboot disabled, Firewall Inbound Rule for TCP 2222 active. Out of ideas.

@matze19999
Copy link

Sorry for dropping in, but might this bug also cause an openssh-server running in WSL to not be available from the outside (beyond localhost)? I've set up ssh on port 2222:

In WSL/Ubuntu 20

$ netstat -an
Proto ... Local Address  Foreign Address   State
tcp       0.0.0.0:2222   0.0.0.0:*         LISTEN

In PowerShell on the same host

$ netstat -an
Proto ... Local Address    Foreign Address   State
TCP       127.0.0.1:2222   0.0.0.0:0         LISTENING

When I try to ssh from my Mac I get a connection timeout. Not even telnet 192.168.178.xx 2222 connects. I am able to ssh from the powershell into WSL (and from WSL into WSL...).

Fastboot disabled, Firewall Inbound Rule for TCP 2222 active. Out of ideas.

Same problem here with exposed port on docker container.

@onomatopellan
Copy link

@Scarysize @matze19999 That's another issue. To access WSL2 from other computer you need port forwarding. See #4150 (comment)

@Scarysize
Copy link

@onomatopellan Oh wow thanks, was googling around for hours but did not find that comment. I'll give it a try!

@radutomy
Copy link

radutomy commented Aug 3, 2020

I have the same problem here. I disabled fast startup. Reverting back to WSL 1 is the only thing that works.

@therealkenc
Copy link
Collaborator

This one went fixinbound on June 16, so conservatively /fixed 20180.

There is no repro in the OP to actually confirm. For users still experiencing problems that may seem related on 20180 or better, you are going to want one of those (a repro with CLI steps that can be run) on the new submission.

@ghost ghost closed this as completed Aug 4, 2020
@ghost ghost added the fixedininsiderbuilds label Aug 4, 2020
@ghost
Copy link

ghost commented Aug 4, 2020

This bug or feature request originally submitted has been addressed in whole or in part. Related or ongoing bug or feature gaps should be opened as a new issue submission if one does not already exist.

Thank you!

@agarwalvaibhav0211
Copy link

When will this be available for non insider Users?

@bogdan-calapod
Copy link

Probably with 20H2

@johnorourke
Copy link

johnorourke commented Sep 19, 2020

Not sure if this will help anyone but I had the same with firebase and React. The issue turned out to be:

  • in WSL2, /etc/hosts lists 'localhost' as '127.0.0.1'
  • in Windows (build 19041) 'localhost' resolves to ::1
  • so the server in WSL was listening on 127.0.0.1 and the browser was trying to reach ::1

My fix was to remove the 127.0.0.1 alias from /etc/hosts, and add 'localhost' to the ::1 line - after that it worked like a charm, though that could have side effects in other software.

@vinhboy
Copy link

vinhboy commented Nov 19, 2020

Nice. I don't know how you figured out it was because of Fast Startup, but disabling that fixed it for me.

And just to add a data point, I have been running services on WSL2 with no issue for over a month now. Then today, out of nowhere, I couldn't access any of my services via localhost (PostgreSQL, node, etc...). I cannot remember the computer shutdown or rebooted before this happen, but I guess that must have happened right? But that really doesn't make sense because I have shutdown and restarted many times in the past and WSL2 always came back just fine.

Anyways, thanks for the tips.

@Lucide
Copy link

Lucide commented Nov 22, 2020

I'm in the same situation, except for the fact that I disabled Fast startup a long time ago.
I have a Ubuntu 20.4 WSL2 vm that last week became unreachable by ssh. For the first time, restarting the pc did not fix the issue. No logged firewall interference.
wsl --shutdown restart is no good either, nor is a service restart.
Sometimes, but it's becoming increasingly rare, I find the connection to be working until the next reboot.
Ugly to get back to a plain vm, after having a taste of the deeply integrated features WSL1. In the name of progress..

@ledtest
Copy link

ledtest commented Nov 24, 2020

Had the issue, fixed it temporarily (until bug is fixed) by disabling Fast Startup as recommended above.
Alternatively, opening a Powershell script, and issue wsl --shutdown, re-open WSL terminal brought me back to business every-time.

This is helpful for me,thanks.
Please follow this step:
1.No need to close your firewall
2.Open a Powershell,run wsl --shutdown
3.Re-open WSL,run sudo python3 manage.py runserver
4.Open your browser,enter http://127.0.0.1:8000,you will see it works correctly.

@danhphan
Copy link

I have the same issue. Run wsl --shutdown in Powershell and then open Ubuntu 20.04 again work for me.

@lrphael
Copy link

lrphael commented Dec 31, 2020

The same issue for me, but it didn't work again after disabling Fast Startup.

@95lux
Copy link

95lux commented Jan 12, 2021

Why is this issue closed? The problem still persists.

@therealkenc
Copy link
Collaborator

Why is this issue closed? The problem still persists.

Depending on your use case and whether you are on build ~20180 or better, you probably want to subscribe still-open #4851 #4150, others. This issue went fixinbound in June 2020. Or opening a thread in discussions for community suggestions regarding work-arounds for specific use cases is always welcome.

@microsoft microsoft locked and limited conversation to collaborators Jan 13, 2021
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests