[Remoting] Issue connecting from client on DNS64/NAT64 network to host on IPv4 network |
|||
Issue descriptionInternal user reported that user cannot connect their client on DNS64/NAT64 network to a host on IPv4 network using the Chrome app. More info: b/120879046 The problem is exactly the same as issue 829117 . Basically the host sends candidates with IPv4 literals to the client and the client tries to directly connect to them without synthesizing an IPv6 address, which fails. We have already enable IPv6 synthesis on iOS using getaddrinfo(). We could try it on other platforms, but I'm not 100% sure if that works well on other platforms. Potentially a getaddrinfo() implementation can trigger DNS64 lookup every time it is called, which is presumably slow. This will probably also impact the host, i.e. an IPv4-only client cannot connect to a DNS64/NAT64 host.
,
Jan 7
Currently we only intend to allow Chromotocol host and client to connect via relay. Fixing direct or STUN IPv4<->NAT64 connections for Chromotocol and WebRTC requires too many changes in the protocol layer(s) and might not worth the time doing because relay is probably good enough.
,
Jan 9
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11 commit 9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11 Author: Yuwei Huang <yuweih@chromium.org> Date: Wed Jan 09 22:27:44 2019 [Remoting ChromeApp] Implement RFC 7050 DNS64/NAT64 IP synthesis This CL implements DNS64/NAT64 prefix discovery and IPv6 synthesis for the ChromeApp following the RFC 7050 spec. This enables the ChromeApp to connect to our IPv4-only relay servers on DNS64/NAT64 network. Note that this CL does not make it possible to do direct or STUN connection between IPv4-only peer and DNS64/NAT64 peer, as that requires more fixes on the ICE stack. Bug: 914617 Change-Id: I069365e6276d8e778077a26c846f68a597fcf128 Reviewed-on: https://chromium-review.googlesource.com/c/1392286 Commit-Queue: Yuwei Huang <yuweih@chromium.org> Reviewed-by: Joe Downing <joedow@chromium.org> Cr-Commit-Position: refs/heads/master@{#621339} [modify] https://crrev.com/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11/remoting/client/plugin/chromoting_instance.cc [modify] https://crrev.com/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11/remoting/client/plugin/chromoting_instance.h [modify] https://crrev.com/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11/remoting/protocol/BUILD.gn [modify] https://crrev.com/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11/remoting/protocol/native_ip_synthesizer.cc [modify] https://crrev.com/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11/remoting/protocol/native_ip_synthesizer.h [add] https://crrev.com/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11/remoting/protocol/rfc7050_ip_synthesizer.cc [add] https://crrev.com/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11/remoting/protocol/rfc7050_ip_synthesizer.h [add] https://crrev.com/9ebfa0e3cca6ababaf89aa7aad8e7d847c955e11/remoting/protocol/rfc7050_ip_synthesizer_unittest.cc
,
Jan 10
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50 commit 1132c5859bfa6ae6ab5d304ccb725af18d9c1e50 Author: Yuwei Huang <yuweih@chromium.org> Date: Thu Jan 10 01:05:06 2019 [Remoting Host] Enable RFC 7050 IP synthesis on hosts This CL enables DNS64/NAT64 prefix discovery and IP synthesis on the host. This allows hosts on DNS64/NAT64 network to connect to our IPv4-only relay servers using Chromotocol. Connections via WebRTC are not affected because they have IPv6 relay endpoints. As stated in CL 1392286, this does not fix direct/STUN connection between IPv4-only and DNS64/NAT64 peers. Non-NaCl platforms support NetworkChangeNotifier so the host will refresh the prefix only when the network interface has been changed, rather than refreshing it every time we are about to make the connection. Bug: 914617 Change-Id: I458156fa1221d8755e84e62b8409b1cb15d1f024 Reviewed-on: https://chromium-review.googlesource.com/c/1392360 Commit-Queue: Yuwei Huang <yuweih@chromium.org> Reviewed-by: Joe Downing <joedow@chromium.org> Cr-Commit-Position: refs/heads/master@{#621399} [modify] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/host/chromoting_host.cc [modify] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/host/chromoting_host_unittest.cc [modify] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/host/it2me/it2me_host_unittest.cc [modify] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/host/it2me/it2me_native_messaging_host_main.cc [modify] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/protocol/BUILD.gn [modify] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/protocol/native_ip_synthesizer.cc [modify] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/protocol/native_ip_synthesizer.h [add] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/protocol/rfc7050_prefix_refresher.cc [add] https://crrev.com/1132c5859bfa6ae6ab5d304ccb725af18d9c1e50/remoting/protocol/rfc7050_prefix_refresher.h
,
Jan 16
Hi AJ, could you do a test pass for this? You will need two devices that both have WiFi. It could be great if you test with a Windows host (laptop?) since I only tested it with a Mac host. Here are the steps: 1. Install latest M73 host on the host, and latest M73 ChromeApp on the client. 2. Start the host 3. Switch WiFi networks on both the host and client, wait for a few minutes, then try to connect to each other and verify that they connect. Here are the combinations to test: +--------------------+--------------------+ | Host | Client | +--------------------+--------------------+ | GoogleGuest | GoogleGuest | +--------------------+--------------------+ | GoogleGuest-V6Only | GoogleGuest-V6Only | +--------------------+--------------------+ | GoogleGuest | GoogleGuest-V6Only | +--------------------+--------------------+ | GoogleGuest-V6Only | GoogleGuest | +--------------------+--------------------+ Thanks!
,
Jan 18
(5 days ago)
Hi Yuwei, I ran through all combinations twice, and had no trouble connecting at any point. I used a Windows Host and Mac Client.
,
Jan 18
(5 days ago)
Great. Thank you AJ! |
|||
►
Sign in to add a comment |
|||
Comment 1 by yuweih@chromium.org
, Dec 13Status: Assigned (was: Untriaged)