After connecting to VPN Firefox is unable to navigate to sites inside the VPN but Chrome can
Categories
(Core :: Networking, defect, P2)
Tracking
()
People
(Reporter: tnmurphy, Assigned: CuveeHsu)
Details
(Whiteboard: [necko-triaged])
Attachments
(7 files)
Reporter | ||
Comment 1•8 years ago
|
||
Reporter | ||
Comment 2•8 years ago
|
||
Updated•8 years ago
|
Comment 3•8 years ago
|
||
Comment 4•8 years ago
|
||
Comment 5•8 years ago
|
||
Comment 6•8 years ago
|
||
Reporter | ||
Comment 7•8 years ago
|
||
Reporter | ||
Comment 8•8 years ago
|
||
Comment 10•8 years ago
|
||
Comment 11•8 years ago
|
||
Comment 12•8 years ago
|
||
Comment 13•8 years ago
|
||
Comment 14•8 years ago
|
||
Comment 15•8 years ago
|
||
Comment 16•8 years ago
|
||
Comment 17•8 years ago
|
||
Comment 18•8 years ago
|
||
Comment 19•7 years ago
|
||
Comment 20•7 years ago
|
||
Comment 21•7 years ago
|
||
Comment 22•7 years ago
|
||
Updated•7 years ago
|
Updated•7 years ago
|
Comment 23•7 years ago
|
||
This is not the same issue as bug 1522673.
Junior, can you take a look into this?
Assignee | ||
Comment 24•7 years ago
|
||
It's pretty weird. No nsHttpChannel except detect portal and telemetry was created after "network:link-status-changed" in comment 8.
The DNS cached is cleared, which is good.
Comment 20 catches my eyes since it hints that we might mis-reuse the existed connections.
In that case, we should have some nsHttpChannel's
We might need more information based on logs in comment 7 and comment 8.
And, I can try to reproduce when I get a chance.
Assignee | ||
Comment 25•6 years ago
|
||
I can not reproduce with Viscosity and Tunnelblick in macOS, which comment 9 indicated (local site or public site)
Assignee | ||
Comment 26•6 years ago
|
||
Want to make some progress here.
Is it still an issue for current version? If yes, could you make HTTP log with prepended "nsNotifyAddr:5"?
It would be good to gather log like:
(1) enable logging
(2) visit the website by refreshing or entering URL bar
(3) enable VPN
(4) visit the website again (which hangs or returns failure)
https://developer.mozilla.org/en-US/docs/Mozilla/Debugging/HTTP_logging
Reporter | ||
Comment 28•6 years ago
|
||
Reporter | ||
Comment 29•6 years ago
|
||
Reporter | ||
Comment 30•6 years ago
|
||
Reporter | ||
Comment 31•6 years ago
|
||
(In reply to Junior [:junior] from comment #26)
Want to make some progress here.
Is it still an issue for current version? If yes, could you make HTTP log with prepended "nsNotifyAddr:5"?
It would be good to gather log like:
(1) enable logging
(2) visit the website by refreshing or entering URL bar
(3) enable VPN
(4) visit the website again (which hangs or returns failure)
This instruction is the wrong-way around. The website that cannot be reached is inside the VPN - you cannot see it from outside. The problem is that when you do connect to the VPN, Firefox still cannot reach it because somehow it's still resolving addresses the old way. After some long time (10s of minutes in my case) the browser does catch up with the system but not in the way that Chrome does very quickly.
Assignee | ||
Comment 32•6 years ago
|
||
(In reply to Tim Murphy from comment #31)
(In reply to Junior [:junior] from comment #26)
Want to make some progress here.
Is it still an issue for current version? If yes, could you make HTTP log with prepended "nsNotifyAddr:5"?
It would be good to gather log like:
(1) enable logging
(2) visit the website by refreshing or entering URL bar
(3) enable VPN
(4) visit the website again (which hangs or returns failure)This instruction is the wrong-way around. The website that cannot be reached is inside the VPN - you cannot see it from outside. The problem is that when you do connect to the VPN, Firefox still cannot reach it because somehow it's still resolving addresses the old way. After some long time (10s of minutes in my case) the browser does catch up with the system but not in the way that Chrome does very quickly.
Thanks for description and the log.
I mentioned about step (2) since some people also suffer from public sites.
Assignee | ||
Comment 33•6 years ago
|
||
Hello Tim,
Could you please also provide log for good case for the intranet access?
the main file is enough (i.e., non-child)
Thanks!
Assignee | ||
Comment 34•6 years ago
|
||
(In reply to Junior [:junior] from comment #33)
Hello Tim,
Could you please also provide log for good case for the intranet access?
the main file is enough (i.e., non-child)Thanks!
Good case for the host name instead of IP address.
Looks like it's workable after minutes (or probably restart firefox?)
Thanks!
Reporter | ||
Comment 35•6 years ago
|
||
Reporter | ||
Comment 36•6 years ago
|
||
I felt that I had to search and replace the company domain name (sorry) with mycompany.com. This is the good case where I loaded Firefox after connecting.
I am not sure this is really what you want. Maybe you want me to have a failure and then wait 10-20 minutes until there is a success? I don't have a predictable time - the last time I came back after 30 minutes or so and it worked. I will try to get this kind of thing tomorrow.
Assignee | ||
Comment 37•6 years ago
|
||
(In reply to Tim Murphy from comment #36)
I felt that I had to search and replace the company domain name (sorry) with mycompany.com. This is the good case where I loaded Firefox after connecting.
I'm a little confused. I suppose what you mean is search and replace in the log files.
I figure out you already did this in Comment 28, right?
Could you specify what URI you failed to browse?
I supposed it's http://jira/, but now it looks like http://jira.mycompany.com
No sorry from you is needed, and thanks for gathering this for us.
You always can send me the log directly if it's needed.
Reporter | ||
Comment 38•6 years ago
|
||
(In reply to Junior [:junior] from comment #37)
(In reply to Tim Murphy from comment #36)
I felt that I had to search and replace the company domain name (sorry) with mycompany.com. This is the good case where I loaded Firefox after connecting.
I'm a little confused. I suppose what you mean is search and replace in the log files.
I figure out you already did this in Comment 28, right?
Yes to both.
Could you specify what URI you failed to browse?
I supposed it's http://jira/, but now it looks like http://jira.mycompany.com
I browsed for http://jira.mycompany.com because I didn't want to allow anything like the search domains to cause a problem - I wanted to show that it was definitely an issue with name resolution.
Assignee | ||
Comment 39•6 years ago
|
||
After some investigation, it could be http-cache related (not DNS cache)
Could you try two things for me:
(a) Try to use private browsing to browse http://jira.mycompany.com
again. If my theory is right, a new private browsing window is without cache, so it should work.
(b) Toggle network.http.rcwn.enabled
in about:config
to false. Restart the browser and reproduce again.
Thanks!
Assignee | ||
Comment 40•6 years ago
|
||
(In reply to Junior [:junior] from comment #39)
After some investigation, it could be http-cache related (not DNS cache)
Could you try two things for me:
(a) Try to use private browsing to browsehttp://jira.mycompany.com
again. If my theory is right, a new private browsing window is without cache, so it should work.
(b) Togglenetwork.http.rcwn.enabled
inabout:config
to false. Restart the browser and reproduce again.Thanks!
For (a), maybe try a shift-reload?
Assignee | ||
Comment 41•6 years ago
|
||
More findings
From comment 28:
2019-04-02 19:16:05.077515 UTC - [Parent 20064: Main Thread]: D/nsHttp Creating nsHttpChannel [this=0x7fba7e55d000]
This channel succeeded to get resource from network
2019-04-02 19:16:23.723314 UTC - [Parent 20064: Link Monitor]: D/nsNotifyAddr SendEvent: changed
We got a network change. I supposed we connect to VPN now.
2019-04-02 19:16:38.039335 UTC - [Parent 20064: Main Thread]: D/nsHttp Creating nsHttpChannel [this=0x7fba7d579000]
This channel went to get resource from cache.
However, per comment 31, we can only access the site under VPN.
It confuses me why the first connection is good to connect.
Maybe we're already under VPN before the first connect, but event goes later.
We prune all the dead connections (included we just connect which should not regard as dead).
Try to reconnect again, connection goes to cache, and it's not working for some weird reason.
However, both connections did there job well, send all their data to child.
For the second connection, we got
2019-04-02 19:16:38.104299 UTC - [Child 23853: Main Thread]: D/nsHttp HttpChannelChild::Cancel [this=0x7fc617955800, status=804b0002]
2019-04-02 19:16:38.104319 UTC - [Child 23853: Main Thread]: D/nsHttp 0x7fc617955800 called from script: http://jira.mycompany.com/:1:434
Now I believe it's not a network/cache issue.
http://jira.mycompany.com/
is text/html
, possible with some script, which cannot be examined at our side.
Compared to the success sample in Comment 35.
The only difference from request header is Cookie
, and we get different result from server
The failure sample is a non-keepalive 200, which kinda indicates "reject to connect"
The good sample is a 302, forwarding to another page.
Therefore, the server side will have more information to debug, instead of randomly guessing the cookie setting.
Reporter | ||
Comment 42•6 years ago
|
||
When I type a non-existing URL into my browser (when the hostname doesn't exist) my ISP sends me to it's own "search page". This is Virgin Media BTW. So it looks like a successful connection but it's really a failure to get to the true destination website.
Unfortunately the private browsing window behaves the same. I am attaching a log (log5) with one request before I connected and one after. I really think this issue is something about which nameserver is being queried first.
So basically Firefox is sending out a request which doesn't cause a connection error and looks totally successful to it and it's just wrong because it asked the "pre-VPN" nameserver instead of the "post-VPN" nameserver.
Reporter | ||
Comment 43•6 years ago
|
||
Assignee | ||
Comment 44•6 years ago
|
||
(In reply to Tim Murphy from comment #42)
When I type a non-existing URL into my browser (when the hostname doesn't exist) my ISP sends me to it's own "search page". This is Virgin Media BTW. So it looks like a successful connection but it's really a failure to get to the true destination website.
Unfortunately the private browsing window behaves the same. I am attaching a log (log5) with one request before I connected and one after. I really think this issue is something about which nameserver is being queried first.
So basically Firefox is sending out a request which doesn't cause a connection error and looks totally successful to it and it's just wrong because it asked the "pre-VPN" nameserver instead of the "post-VPN" nameserver.
shift-refresh will re-do the DNS, bypass the cache.
Is you URL bar changed after your ISP brings you to the search page? If no, you may try a hard refresh.
Or you might set
network.dnsCacheExpiration and network.dnsCacheExpirationGracePeriod
in about:config to 0 or small enough numbers
Go to about:networking#dns to check if the DNS record is cached.
FWIW, we delegate the DNS resolution to OS.
Assignee | ||
Comment 45•6 years ago
|
||
Note for cache:
I did a quick experiment: do we use the cache data after changing network?
Firefox and chrome are still use cache if it's not stale when I switch among wifi, hotspot, vpn,
Assignee | ||
Comment 46•6 years ago
|
||
needinfo? for comment 42.
If the shift reload doesn't work, we have problems to dig.
Reporter | ||
Comment 47•6 years ago
|
||
It is quite difficult to do "shift-refresh" since I am effectively refreshing the "virgin media" search page which I was redirected to. Anyhow after doing shift-ctrl-R on that redirected page I tried putting in the desired page (jira) again and this time I got it.
Comment 48•6 years ago
|
||
Also check if restarting the browser makes it work.
It might be that our call to getaddrinfo stops working if resolv.conf is changed mid session.
Reporter | ||
Comment 49•6 years ago
|
||
I know that if I exit the browser and restart then everything works fine - that was my usual solution which gets annoying after a while.
Assignee | ||
Comment 50•6 years ago
|
||
Cache-Control: max-age=600
(seconds) might be the pain point here.
I didn't do much experiment in chrome, but it seems always hit the net for the .html
Updated•6 years ago
|
Assignee | ||
Comment 52•6 years ago
|
||
Thanks Tim very much for helping us get the problem! Happy hacking.
Comment 53•3 years ago
|
||
I have this exact same problem in Firefox 99.0 under Linux.
Everything works with no VPN.
With VPN:
- Most webpages load, albeit slowly.
- Google and google search won't load in Firefox (but load in Chrome).
- Restarting Firefox DON'T fix the problem.
- In a new private window it DOES work.
Please, reopen the bug as it was clearly not fixed.
Comment 54•3 years ago
|
||
(In reply to vnmabus from comment #53)
I have this exact same problem in Firefox 99.0 under Linux.
Everything works with no VPN.
With VPN:
- Most webpages load, albeit slowly.
- Google and google search won't load in Firefox (but load in Chrome).
- Restarting Firefox DON'T fix the problem.
- In a new private window it DOES work.
Please, reopen the bug as it was clearly not fixed.
Forgot to say: if I connect to my mobile phone internet instead of to the Wifi it DOES work. In fact, it is funny because I have a problem connecting to SSH in the exact same circumstances that cause this bug. Could it be related?
Comment 55•3 years ago
|
||
Could you file a new bug and also try to get a http log?
Thanks.
Comment 56•3 years ago
|
||
(In reply to Kershaw Chang [:kershaw] from comment #55)
Could you file a new bug and also try to get a http log?
Thanks.
Filed bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1765513
Description
•