New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 823525 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

Ethernet and Wifi Static IP are reset each time when network settings are accessed

Project Member Reported by marchuk@chromium.org, Mar 19 2018

Issue description

ChromeOS version: 63,64,65,66
ChromeOS device model: any
Case#: 15193857

Description:
Reproduced on most of recent versions in SVL-TC3:
When configured, static IP settings for ethernet are working fine, unless users access network settings. After that settings are reset to default.

Steps to reproduce: 
1. Connect chromebook to ethernet, configure static IP for ethernet, e.g. IP 102.168.10.100 mask 255.255.255.0  gw 192.168.10.1 at login page.
2. Device works fine, network settings are remembered and applied, even after restarts, adding users, guest mode, etc.
3. Navigate to network settings at login page.

Current Behavior / Reproduction: 
Static IP settings are reset to 192.168.1.1 per screehshot

Expected Behavior: 
Settings are not reset and remains as configured previously.

 
2018-03-13 (2).png
43.7 KB View Download
Summary: Ethernet and Wifi Static IP are reset each time when network settings are accessed (was: Ethernet Static IP are reset each time when network settings are accessed)
Same for Wifi.
Attaching logfile and timelines:
3/21/2018:

10:55 at sign-in page connected to CHR_TEST Wifi and configured static IP 102.168.10.12
10:56 signed-in as Guest, accessed settings, settings were not reset (IMG_20180321_105616.jpg)
10:56 Exited Guest, aborted Hangouts Kiosk, returned back to sing-in page
10:57 Accessed properties of CHR_TEST, settings were reset to default.
Configured static IP 192.168.10.13, signed-in as Guest, sent debug log (debug-logs_20180321-105747)

IMG_20180321_105616.jpg
3.9 MB View Download
debug-logs_20180321-105747
1.5 MB View Download
Cc: kotah@google.com kotah@chromium.org

Comment 3 by kotah@chromium.org, Mar 21 2018

Cc: -kotah@google.com kirtika@chromium.org
Labels: -Pri-2 Pri-1
Owner: snanda@chromium.org
snanda@, kirtika@, can you review? We started to receive a few reports from enterprise customers.

Comment 4 by kotah@chromium.org, Mar 21 2018

Found relevant UpdateFromIPConfig events in net.log, but it seems like the network used for testing is not working. 

2018-03-21T10:55:02.209695-07:00 INFO shill[1374]: [INFO:connection.cc(272)] UpdateFromIPConfig: Flushing old addresses and routes.
2018-03-21T10:55:02.210962-07:00 INFO shill[1374]: [INFO:connection.cc(277)] UpdateFromIPConfig: Installing with parameters: local=192.168.10.12 broadcast=192.168.10.255 peer=<unknown> gateway=192.168.1.1

2018-03-21T10:55:22.286257-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(277)] Connection diagnostics events:
2018-03-21T10:55:22.286307-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #0: Event: Portal detection          Phase: End (DNS)        Result: Timeout
2018-03-21T10:55:22.286337-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #1: Event: Ping DNS servers          Phase: Start            Result: Success
2018-03-21T10:55:22.286368-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #2: Event: Ping DNS servers          Phase: End              Result: Failure   Msg: No DNS servers responded to pings. Pinging first DNS server at 8.8.4.4
2018-03-21T10:55:22.286578-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #3: Event: Find route                Phase: Start            Result: Success   Msg: Requesting route to 8.8.4.4
2018-03-21T10:55:22.286600-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #4: Event: Find route                Phase: End              Result: Success   Msg: Found route to 8.8.4.4 (remote)
2018-03-21T10:55:22.286615-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #5: Event: ARP table lookup          Phase: Start            Result: Success   Msg: Finding ARP table entry for 8.8.4.4
2018-03-21T10:55:22.286674-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #6: Event: ARP table lookup          Phase: End              Result: Failure   Msg: Could not find ARP table entry for 8.8.4.4
2018-03-21T10:55:22.286805-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #7: Event: IP collision check        Phase: Start            Result: Success
2018-03-21T10:55:22.286835-07:00 INFO shill[1374]: [INFO:connection_diagnostics.cc(279)]   #8: Event: IP collision check        Phase: End              Result: Failure   Msg: No IP collision found

2018-03-21T10:56:45.818343-07:00 WARNING shill[1374]: [WARNING:connection.cc(242)] Broadcast address is not set.  Using default.
2018-03-21T10:56:45.818367-07:00 INFO shill[1374]: [INFO:connection.cc(272)] UpdateFromIPConfig: Flushing old addresses and routes.
2018-03-21T10:56:45.818908-07:00 INFO shill[1374]: [INFO:connection.cc(277)] UpdateFromIPConfig: Installing with parameters: local=192.168.1.1 broadcast=192.168.1.255 peer=<unknown> gateway=192.168.1.1

marchuk@, does the issue repro with working networks too?

Yes, (in #2 repro, forgot to specify gateway to 192.168.10.1). On working networks it's also reproduced, both on ethernet and wifi

Comment 6 by kotah@chromium.org, Mar 21 2018

Thanks for the info. I am also able to see this issue - static IP config resets to 192.168.1.1 when you open settings outside of user sessions.

1) Boot device, connect to wifi and configure static IP  (Go to settings > network > gear icon, and disable "Configure IP address automatically")
2) Open the network setting UI again and see IP address is set to 192.168.1.1

In other words, if I connect to wifi and configure static IP and do NOT open the settings UI again, I can keep the connection and sign-in to user accounts. This would be a workaround.

snanda@, can you review?
Owner: steve...@chromium.org
My simple repro sequence:

1) Reboot system, get back to the login page
2) System menu -> network -> gear icon
3) Turn off "Configure IP address automatically"
4) Static IP field autopopulates with the last IP obtained via DHCP.  Close dialog.
5) Static IP is OK (confirmed by clicking the (i) icon).  This gets sent to shill around line 14359 in log.txt.
6) System menu -> network -> gear icon
7) Dialog now shows "Configure IP address automatically" disabled (good) but defaults back to 192.168.1.1 IP configuration (bad).  The bad configuration gets sent to shill around line 16871 in log.txt.

Sniffing dbus, I see that shill is returning the correct static IP configuration from GetProperties, but right after Chrome receives that information, it immediately overwrites it with the "192.168.1.1" IPs:

method call time=1521669155.837177 sender=:1.7 -> destination=org.chromium.flimflam serial=658 path=/service/2; interface=org.chromium.flimflam.Service; member=GetProperties
method return time=1521669155.837502 sender=:1.33 -> destination=:1.7 serial=1141 reply_serial=658
[snip]
      dict entry(
         string "Device"
         variant             object path "/device/eth0"
      )
[snip]
      dict entry(
         string "GUID"
         variant             string "36b352de-dd10-493a-a36a-5d2d00c0131c"
      )
      dict entry(
         string "IPConfig"
         variant             object path "/ipconfig/eth0_0_dhcp"
      )
[snip]
      dict entry(
         string "SavedIPConfig"
         variant             array [
               dict entry(
                  string "Address"
                  variant                      string "100.127.29.55"
               )
               dict entry(
                  string "ExcludedRoutes"
                  variant                      array [
                     ]
               )
               dict entry(
                  string "Gateway"
                  variant                      string "100.127.31.254"
               )
               dict entry(
                  string "IncludedRoutes"
                  variant                      array [
                     ]
               )
               dict entry(
                  string "Mtu"
                  variant                      int32 0
               )
               dict entry(
                  string "NameServers"
                  variant                      array [
                        string "8.8.8.8"
                        string "8.8.4.4"
                     ]
               )
               dict entry(
                  string "PeerAddress"
                  variant                      string ""
               )
               dict entry(
                  string "Prefixlen"
                  variant                      int32 21
               )
               dict entry(
                  string "SearchDomains"
                  variant                      array [
                        string "corp.google.com"
                        string "prod.google.com"
                        string "prodz.google.com"
                        string "google.com"
                     ]
               )
            ]
      )
      dict entry(
         string "State"
         variant             string "online"
      )
      dict entry(
         string "StaticIP.Address"
         variant             string "100.127.29.55"
      )
      dict entry(
         string "StaticIP.Gateway"
         variant             string "100.127.31.254"
      )
      dict entry(
         string "StaticIP.Prefixlen"
         variant             int32 21
      )
      dict entry(
         string "StaticIPConfig"
         variant             array [
               dict entry(
                  string "Address"
                  variant                      string "100.127.29.55"
               )
               dict entry(
                  string "Gateway"
                  variant                      string "100.127.31.254"
               )
               dict entry(
                  string "Prefixlen"
                  variant                      int32 21
               )
            ]
      )
[snip]
      dict entry(
         string "UIData"
         variant             string "{"user_settings":{"IPAddressConfigType":"Static","NameServersConfigType":"DHCP","StaticIPConfig":{"Gateway":"100.127.31.254","IPAddress":"100.127.29.55","RoutingPrefix":21,"Type":"IPv4"},"Type":"Ethernet"}}"
      )
[snip]
      dict entry(
         string "Visible"
         variant             boolean true
      )
   ]
method call time=1521669155.877609 sender=:1.7 -> destination=org.chromium.flimflam serial=659 path=/service/2; interface=org.chromium.flimflam.Service; member=SetProperties
   array [
      dict entry(
         string "GUID"
         variant             string "36b352de-dd10-493a-a36a-5d2d00c0131c"
      )
      dict entry(
         string "Profile"
         variant             string "/profile/default"
      )
      dict entry(
         string "StaticIPConfig"
         variant             array [
            ]
      )
      dict entry(
         string "UIData"
         variant             string "{"user_settings":{"IPAddressConfigType":"DHCP","NameServersConfigType":"DHCP","Type":"Ethernet"}}"
      )
   ]
method call time=1521669155.877650 sender=:1.7 -> destination=org.chromium.flimflam serial=660 path=/device/eth0; interface=org.chromium.flimflam.Device; member=GetProperties
method call time=1521669155.879503 sender=:1.7 -> destination=org.chromium.flimflam serial=661 path=/service/2; interface=org.chromium.flimflam.Service; member=SetProperties
   array [
      dict entry(
         string "GUID"
         variant             string "36b352de-dd10-493a-a36a-5d2d00c0131c"
      )
      dict entry(
         string "Profile"
         variant             string "/profile/default"
      )
      dict entry(
         string "StaticIPConfig"
         variant             array [
               dict entry(
                  string "Address"
                  variant                      string "192.168.1.1"
               )
               dict entry(
                  string "Gateway"
                  variant                      string "192.168.1.1"
               )
               dict entry(
                  string "Prefixlen"
                  variant                      int32 24
               )
            ]
      )
      dict entry(
         string "UIData"
         variant             string "{"user_settings":{"IPAddressConfigType":"Static","NameServersConfigType":"DHCP","StaticIPConfig":{"Gateway":"192.168.1.1","IPAddress":"192.168.1.1","RoutingPrefix":24,"Type":"IPv4"},"Type":"Ethernet"}}"
      )
   ]


I think |this.ipConfig_| might not be getting set prior to entering this function?

https://cs.chromium.org/chromium/src/ui/webui/resources/cr_components/chromeos/network/network_ip_config.js?q=%22192.168.1.1%22+chromeos&sq=package:chromium&l=115&dr=C
log.txt
1.5 MB View Download
Labels: -M-65 ReleaseBlock-Stable
Status: Started (was: Untriaged)
Ugh, looks like this has been around for a while. Looking into it now.

Labels: Needs-Feedback
It looks like this only appears to occur when inspecting the network properties from the login screen. Please confirm.

Comment 10 by kotah@chromium.org, Mar 21 2018

Yes - Checking IP config within user session or guest mode doesn't reset client ip, if that what #c9 is about.
Project Member

Comment 11 by bugdroid1@chromium.org, Mar 22 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b69bc652e78052d674228215cf1f59a015dfe4b8

commit b69bc652e78052d674228215cf1f59a015dfe4b8
Author: Steven Bennetts <stevenjb@chromium.org>
Date: Thu Mar 22 02:31:29 2018

Network config: Only call automaticChanged_ on user action

Currently setting automatic_  may trigger automaticChanged_ before
ipConfig_ is set, causing unexpected behavior. We should only trigger
the automaticChanged_ function on user action.

Bug:  823525 
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: Id653bb88bb20b22abd9c85d8c1417b2b8355f5ca
Reviewed-on: https://chromium-review.googlesource.com/974510
Reviewed-by: Toni Barzic <tbarzic@chromium.org>
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544954}
[modify] https://crrev.com/b69bc652e78052d674228215cf1f59a015dfe4b8/ui/webui/resources/cr_components/chromeos/network/network_ip_config.html
[modify] https://crrev.com/b69bc652e78052d674228215cf1f59a015dfe4b8/ui/webui/resources/cr_components/chromeos/network/network_ip_config.js

Labels: -Needs-Feedback Merge-Request-66
Status: Fixed (was: Started)
Project Member

Comment 13 by sheriffbot@chromium.org, Mar 23 2018

Labels: -Merge-Request-66 Merge-Review-66 Hotlist-Merge-Review
This bug requires manual review: M66 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), josafat@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 14 by kotah@chromium.org, Mar 23 2018

Cc: josa...@chromium.org
@Josafat, can you review if this can be merged to M66? This issue affects ChromeOS connectivity, and is impacting large EDU deployment.
Labels: -Merge-Review-66 Merge-Approved-66
Project Member

Comment 16 by bugdroid1@chromium.org, Mar 26 2018

Labels: -merge-approved-66 merge-merged-3359
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1b177573352b87118911e8bcd2bdbc04e859bc8a

commit 1b177573352b87118911e8bcd2bdbc04e859bc8a
Author: Steven Bennetts <stevenjb@chromium.org>
Date: Mon Mar 26 17:29:40 2018

Network config: Only call automaticChanged_ on user action

Currently setting automatic_  may trigger automaticChanged_ before
ipConfig_ is set, causing unexpected behavior. We should only trigger
the automaticChanged_ function on user action.

TBR=stevenjb@chromium.org

(cherry picked from commit b69bc652e78052d674228215cf1f59a015dfe4b8)

Bug:  823525 
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: Id653bb88bb20b22abd9c85d8c1417b2b8355f5ca
Reviewed-on: https://chromium-review.googlesource.com/974510
Reviewed-by: Toni Barzic <tbarzic@chromium.org>
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#544954}
Reviewed-on: https://chromium-review.googlesource.com/981077
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#438}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
[modify] https://crrev.com/1b177573352b87118911e8bcd2bdbc04e859bc8a/ui/webui/resources/cr_components/chromeos/network/network_ip_config.html
[modify] https://crrev.com/1b177573352b87118911e8bcd2bdbc04e859bc8a/ui/webui/resources/cr_components/chromeos/network/network_ip_config.js

Not resetting anymore on both ethernet and wifi on 66.0.3359.62 for me
Cc: harpreet@chromium.org
Status: Verified (was: Fixed)
Verified this on M66-10452.85.0 for Wifi & Ethernet, it WAI.

Sign in to add a comment