Chrome intermittently ignores DNS order in /etc/resolv.con
Reported by
r...@4rc.io,
Jul 27 2016
|
||||||||
Issue descriptionUserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Example URL: Any prive Steps to reproduce the problem: 1. Connect to company VPN using OpenVPN client while Chrome is running 2. Attempt to browse to url resolved by name server inside VPN What is the expected behavior? What went wrong? Chrome attempts to resolve url using ISP's DNS, despite that being listed second in resolv.conf. Firefox and Chromium both manage to resolve the url correctly. Further twist: this is intermittent. _Sometimes_ Chrome is able to correctly resolve these urls. It does not appear that restart Chrome either before or after connecting to VPN has anything to do with whether or not it's able to succeed in respecting resolv.conf. Did this work before? N/A Chrome version: 51.0.2704.106 Channel: stable OS Version: Ubuntu 16.04 Flash Version: Shockwave Flash 22.0 r0
,
Jul 29 2016
Thank you; I've emailed net internals to you.
,
Jul 29 2016
[+juliatuttle]: Are we using the async resolver on Linux, currently? I could see that having trouble with this, though not sure why it would affect Chrome only, unless it's only enabled via a field trial.
,
Jul 29 2016
Attached is the net-internals the reported send to me via email. Please take a look.
,
Jul 29 2016
According to the reporter: the net-internals were captured a few minutes after switching from one vpn to another. It showed there was failed attempt to connect to http://newweb.staging.execvision.io. However, the reported confirmed direct connecting to the IP directly (10.1.3.23) worked fine and curl can also connect to the url on the command line.
,
Aug 3 2016
I don't see any requests for newweb.staging.execvision.io or 10.1.3.23 in that netlog. Could you capture another log, and make sure you start capturing the netlog before attempting to reproduce. Probably would be best to start before doing the VPN switch. The log does indicate the async dns resolver is in use, version is Google Chrome 52.0.2743.82. None of the active field trials look dns related, but I could be wrong. There is a single HOST_RESOLVER_IMPL_JOB in the netlog, and it is using the dns server at 127.0.1.1. The DNS info in the netlog lists the nameservers as: 10.0.0.2:53 127.0.1.1:53 That's all that seemed interesting from this log, we probably need a log that captures from before the VPN switch to see more.
,
Sep 1 2016
rf@4rc.io: I don't think we can make forward progress here without a more complete net-internals log. Could you please provide one? If not, we'll have to just close the bug.
,
Sep 12 2016
Sorry to take so long on this; been busy. Here's a net-internals capturing the switch between VPNs, and the failure to update Chrome's internal DNS.
,
Sep 20 2016
rf@4rc.io: Thanks, but I'm still having trouble even with your most recent log, it seems that some of the info is missing. Could you possibly try one more time, only could you use --log-net-log to make sure your log has all events? (refer to the "Logging on startup" section of https://sites.google.com/a/chromium.org/dev/for-testers/providing-network-details).
,
Oct 28 2016
This is fixed for me on Ubuntu 16.10, now that systemd-resolved is being used. You might want to keep this bug open for systems not on systemd-resolved (whatever the prior mechanism was).
,
Nov 10 2016
I take it back. Even after restarting systemd-resolved, chrome is currently in a state where it's unable to resolve the same staging server's domain name, even after restarting chrome multiple times (and killing the background chrome service). chromium on the other hand can get to it. What is the difference between how chrome and chromium handle domain name resolution? Lot attached, using the command line --log-net-log.
,
Nov 10 2016
I'm sorry, rf@, but it still doesn't look like a good log. The only reference to newweb.staging.execvision.io is a successful URLRequest that looks like it was satisfied from cache. Might you have accidentally taken a trace when you actually had a successful result? Chrome and Chromium are pretty close to identical; it's far more likely that there's a version difference (or, since this behavior is flaky, that the difference is just luck) than an actual difference between the two. Having said that, if by Chromium you mean a package installed from the linux distribution, some bets are off--those packages may incorporate changes to Chromium we have nothing to do with.
,
Nov 10 2016
@rdsmith - nope, I promise you that this log captured the behavior. There were zero chrome processes running; I started it with the command line --log-net-log. I opened a single tab and navigated to the URL, and got the verizon fallback for cannot resolve. It is true that my ubuntu-packaged chromium (which, again, is working reliably on VPN network changes) is on 53.X rather than chrome's 54.X, so that may explain the difference. So, let's discount that as a red herring. So to recap - a) The log apparently shows nothing wrong. b) The system DNS cache (somewhere in systemd-resolved) is flushed (by virtue of restarting it after switching VPNs). c) On the command line, dig returns the right IP address (which is an ELB). d) Other browsers (Firefox, Chromium) can get to it. e) Chrome cannot, even after restarting. f) This is intermittent behavior. Prior to restarting my computer a day or so ago, Chrome was working as expected (i.e. able to resolve the address after flushing the system DNS cache.) What else do you want me to do to try to resolve this? If anybody's interested I'm happy to screenshare and attempt to debug in real time.
,
Nov 10 2016
@rdsmith - I just read your response again and have a thought. You said "the only reference to newweb.staging.execvision.io is a successful URLRequest that looks like it was satisfied from cache". Is it possible that the Verizon "could not resolve" page is being somehow cached by Chrome, and that Chrome hits it rather than going to the system DNS?
,
Nov 11 2016
@rdsmith - one more update. Left up overnight, chrome is now able to resolve the VPN provided urls. Something must have timed out / refreshed.
,
Nov 11 2016
Huh. That's an interesting point you raise (in c#14, about caching the Verizon page). Willing to pop up an Incognito Window (easiest way to get a completely clean slate including an empty cache, and has the advantage of not messing with the state of your working profile) and give it another try?
,
Nov 14 2016
Reproduced this and confirmed that it may be cache related. The VPN connection had some sort of timeout over the weekend, so I reconnected and restarted systemd-resolved. Both chromium and chrome had been left running over the weekend also; in non-incognito tabs, chrome failed to load it and chromium managed. I then opened an incognito tab in chrome and was able to connect.
,
Dec 9 2016
,
Dec 28 2016
I don't think this needs any more feedback?
,
May 8 2017
,
May 9 2017
,
May 9 2017
,
Mar 22 2018
|
||||||||
►
Sign in to add a comment |
||||||||
Comment 1 by zhongyi@chromium.org
, Jul 27 2016Labels: Needs-Feedback
Status: Untriaged (was: Unconfirmed)