Skip to content

docs(troubleshooting): add WSL2 DNS troubleshooting for install preflight and sandbox data plane - #1260

Open
Tantanovo wants to merge 5 commits into
TencentCloud:masterfrom
Tantanovo:docs/wsl-dns
Open

docs(troubleshooting): add WSL2 DNS troubleshooting for install preflight and sandbox data plane#1260
Tantanovo wants to merge 5 commits into
TencentCloud:masterfrom
Tantanovo:docs/wsl-dns

Conversation

@Tantanovo

Copy link
Copy Markdown

What

Adds a bilingual troubleshooting page for two DNS problems that are specific to WSL2, requested by @fslongjin.

  • docs/guide/troubleshooting/wsl-dns.md
  • docs/zh/guide/troubleshooting/wsl-dns.md
  • One index row in each language

quickstart.md lists WSL as a supported platform, and #311 covers the XFS loopback workaround, but neither of the two DNS failures below is documented anywhere. Both were hit while bringing up v0.6.0 on WSL2 for #644.

The two problems

1. Preflight exits 3 before anything is downloaded

online-install.sh requires resolvectl or a loaded NetworkManager. A default Ubuntu-on-WSL install has neither.

The generic prerequisite is documented in self-build-deploy.md ("DNS routing: systemd-resolved (preferred) or NetworkManager + dnsmasq"), so this is not a missing requirement — it is a discoverability gap:

  • quickstart.md lists WSL as supported but its requirements table only mentions glibc and XFS.
  • The error names the command resolvectl, while the command is shipped by the systemd-resolved package. apt install resolvectl does not exist, so the next step is not obvious.

Fix: apt-get install -y systemd-resolved && systemctl enable --now systemd-resolved.

2. Install succeeds, sandbox is created, but run_code cannot resolve

[1] sandbox created in 0.99s
    sandbox_id: 9e0b35c6183f4e969e1a6a8f6bdc5629     <- control plane OK
httpx.ConnectError: [Errno -2] Name or service not known   <- data plane fails

The control plane is fine because it goes through 127.0.0.1:3000. The data plane needs wildcard resolution for *.cube.app, and WSL regenerates /etc/resolv.conf on every start, discarding the CoreDNS nameserver written by dns-host-route-up.sh.

This one is the more valuable of the two for a troubleshooting page: the error mentions neither DNS nor cube.app, and it can appear on a deployment that worked yesterday, because the trigger is a WSL restart rather than a config change.

Fix requires both steps — either alone does not survive a restart:

  1. /etc/wsl.conf[network] / generateResolvConf = false
  2. /etc/resolv.conf is usually a symlink into /run/..., so rm it before writing; point the first nameserver at CoreDNS and keep an upstream resolver as a fallback (with only the CoreDNS address, *.cube.app resolves but general internet resolution breaks).

The page also notes which CoreDNS address applies to which backend (169.254.254.53 on the systemd-resolved path, 127.0.0.54 on the dnsmasq fallback), points to the two DNS-free alternatives already in the repo (path-based access and examples/e2b-dev-sidecar), and lists the two pieces of state that do not survive wsl --shutdown (the loopback XFS mount and resolv.conf).

Environment used for verification

Item Value
Cube Sandbox v0.6.0 (cubemastercli 8721dd15, built 2026-07-24)
Deployment one-click, single node
Distro Ubuntu 24.04.4 LTS on WSL2
Host kernel 6.18.33.2-microsoft-standard-WSL2
glibc 2.39
/data/cubelet loopback XFS, reflink=1

Deployment screenshots and logs from that run are attached to #1238 (14 systemd units active, template READY, guest kernel 6.6.1199 vs host 6.18.33.2).

Checklist

  • Both language files added with the same slug
  • Index row added in both docs/guide/troubleshooting/index.md and docs/zh/guide/troubleshooting/index.md
  • Follows _template.md section structure (Symptom / Environment / Root Cause / Resolution / References)
  • Frontmatter keys aligned across both files (title, author, date, tags, lang)
  • All six relative links verified to exist
  • The quoted online-install.sh snippet matches upstream (marked as an excerpt)
  • Files are LF-only; index diffs are one added line each
  • DCO signed off

Happy to adjust the wording, section split, or file placement if you would prefer this merged into deployment.md instead of a standalone page.

…ight and sandbox data plane

Two DNS problems are specific to WSL2 and are not covered in the current docs:

1. online-install.sh preflight exits 3 because a default Ubuntu-on-WSL install
   has neither resolvectl nor NetworkManager. The generic prerequisite is
   documented in self-build-deploy.md, but quickstart.md lists WSL as supported
   without mentioning it, and the error names the command rather than the
   systemd-resolved package that ships it.

2. After a successful install the control plane works but the data plane fails
   with 'Name or service not known', because WSL regenerates /etc/resolv.conf
   on every start and discards the CoreDNS nameserver written by
   dns-host-route-up.sh, which breaks wildcard resolution for *.cube.app.

Both were reproduced and fixed on a real single-node v0.6.0 deployment on
Ubuntu 24.04.4 (WSL2). Adds bilingual pages and index entries.

Signed-off-by: Tantanovo <1348215719@qq.com>
@Tantanovo
Tantanovo requested a review from fslongjin as a code owner August 3, 2026 03:48

### Problem 1: install `systemd-resolved` to provide `resolvectl`

```bash

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The address mapping here is inverted relative to the implementation. In deploy/one-click/scripts/systemd/dns-host-route-up.sh, /etc/resolv.conf is only written on the dnsmasq paths — and always with the dummy-link IP: write_host_resolv_conf "${RESOLVED_COREDNS_BIND_ADDR}" (line 270), where RESOLVED_COREDNS_BIND_ADDR defaults to 169.254.254.53 (env.example:177). 127.0.0.54 (DEFAULT_COREDNS_BIND_ADDR, env.example:176) is CoreDNS's internal bind address: on the dnsmasq path it appears only in the forwarder rule server=/cube.app/127.0.0.54#53, never in resolv.conf. And on the systemd-resolved path the script does not touch /etc/resolv.conf at all — it routes ~cube.app via resolvectl domain cube-dns0 '~cube.app' (line 168).

The repo's own deploy/one-click/README.md (lines 444–445) confirms the client entry point is the same dummy-link IP on both paths: "cat /etc/resolv.conf should show nameserver 169.254.254.53 on both paths."

So the client-facing nameserver is 169.254.254.53 in both cases; 127.0.0.54 should be described only as CoreDNS's internal bind that dnsmasq forwards cube.app queries to. As written, a reader on the dnsmasq fallback path would write a loopback address into resolv.conf, which is unreachable from inside Docker containers — the exact problem the dummy link was introduced to solve. The same text needs fixing in the zh file (lines 92–94).


```bash
cat /etc/resolv.conf
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same correction as in the Root Cause section: on the dnsmasq fallback path the installer still points /etc/resolv.conf at 169.254.254.53 (the dummy-link IP), not 127.0.0.54. The latter is only CoreDNS's internal bind used by dnsmasq's server=/cube.app/127.0.0.54#53 forwarder. Recommend rewording to: "on both the systemd-resolved path and the dnsmasq fallback path the client entry is 169.254.254.53." (zh file line 148 likewise.)

Comment thread docs/guide/troubleshooting/wsl-dns.md Outdated
- Cube Sandbox version: v0.6.0 (`cubemastercli` `8721dd15`, built 2026-07-24)
- Deployment mode: one-click, single node (control + compute on the same host)
- Host OS / kernel: Ubuntu 24.04.4 LTS on WSL2, `6.18.33.2-microsoft-standard-WSL2`, glibc 2.39
- Related components: `online-install.sh` preflight, CoreDNS (`cube-sandbox-coredns`), CubeProxy, `scripts/systemd/dns-host-route-up.sh`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This script lives at deploy/one-click/scripts/systemd/dns-host-route-up.sh, not scripts/systemd/dns-host-route-up.sh (in the installed tree it is /usr/local/services/cubetoolbox/scripts/systemd/dns-host-route-up.sh, per the ExecStart of deploy/one-click/systemd/cube-sandbox-dns.service). Same wrong path recurs at line 117 of this file, and in the zh file at lines 51 and 92.

@cubesandboxbot

cubesandboxbot Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review: docs(troubleshooting): add WSL2 DNS troubleshooting for install preflight and sandbox data plane (PR #1260)

AI-generated review — no human approval claimed.

Verdict: Approve with minor nits. This is a well-scoped, accurate docs PR. I verified the two shell-script edits and the technical claims in both new pages against the base-branch tree; everything substantive checks out. The only findings are two minor accuracy/wording nits, both non-blocking.


What's in the PR

  • Two script changes (deploy/one-click/install.sh, deploy/one-click/online-install.sh) that enrich the DNS-preflight error message to name the systemd-resolved package instead of just the resolvectl command. String-only changes; no logic or syntax risk; both hunks apply cleanly to the base tree.
  • New bilingual troubleshooting pages docs/guide/troubleshooting/wsl-dns.md (275 lines) and docs/zh/guide/troubleshooting/wsl-dns.md (246 lines), plus one index row in each language's troubleshooting/index.md.

Verified against the base tree

  • Addressing claims169.254.254.53 as the client-facing dummy-link address, 127.0.0.54 as CoreDNS's loopback bind, and cube-dns0 as the dummy link all match deploy/one-click/scripts/systemd/dns-host-route-up.sh (RESOLVED_COREDNS_BIND_ADDR, DEFAULT_COREDNS_BIND_ADDR, RESOLVED_LINK_NAME), the Corefile.template bind substitution, and the existing service-management.md ("127.0.0.54:53 or 169.254.254.53:53").
  • Unit-file claimscube-sandbox-dns.service is Type=oneshot and declares Requires=/BindsTo= on cube-sandbox-coredns.service; cube-sandbox-control.target exists and is the right thing to start. The restart ordering advice (coredns before dns) matches the unit dependency graph.
  • Preflight behavior — the DNS check runs inside check_early_preflight before any download, and exits 3; the quoted online-install.sh snippet matches the post-PR code.
  • Supporting doc claimsquickstart.md lists WSL with only glibc/XFS in the requirements row; self-build-deploy.md documents "DNS routing: systemd-resolved (preferred) or NetworkManager + dnsmasq"; write_host_resolv_conf preserves an upstream fallback; control plane is reached on 127.0.0.1:3000; the path-based access URL and examples/e2b-dev-sidecar match https-and-domain.md.
  • Links/frontmatter — all internal links resolve in both language trees; frontmatter keys align (title/author/date/tags/lang); both index rows added; the EN #environment and ZH #环境信息 anchors match their headings.

Findings (2 minor, inline)

  1. Package attribution for resolvectl (EN doc ~line 90, ZH equivalent, and both new script messages). The claim that resolvectl is "shipped by the systemd-resolved package" is imprecise: on Debian/Ubuntu the binary ships in systemd (the package provides the daemon), and on some RHEL-family distros there is no systemd-resolved package at all, so dnf install systemd-resolved can itself fail — recreating the exact dead-end this PR exists to remove. Suggest pointing at the resolver ("install/enable the systemd-resolved resolver") rather than over-attributing the binary.

  2. "General internet resolution breaks" overstatement (EN doc ~line 170, ZH equivalent). With only the CoreDNS address written, general resolution breaks only while the CoreDNS/dnsmasq stack is down; when it is running, both backends forward non-cube.app queries to the preserved upstream snapshot. The advice (keep a fallback) is correct for the WSL-restart window the page targets; the phrasing is just stronger than the mechanics. Please update both language files together.

Not verified offline

The external GitHub issue/PR links (#311, #411, #644, #1238) could not be confirmed from this offline workspace; they are consistent with the PR description and existing docs references.

Non-blocking nits

  • The new install.sh and online-install.sh messages phrase the same hint slightly differently (apt install systemd-resolved, dnf install systemd-resolved vs apt install systemd-resolved (or dnf install systemd-resolved)); aligning them is cosmetic.
  • apt install resolvectl / dnf install systemd-resolved guidance is a hint, not an enforced check — fine for an error message, but the docs already hedge correctly with the NetworkManager + dnsmasq alternative.

The bot review correctly caught two factual errors in both languages:

1. Client-facing nameserver is 169.254.254.53 on BOTH DNS backends.
   dns-host-route-up.sh writes /etc/resolv.conf only on the dnsmasq paths and
   always with the dummy-link address (RESOLVED_COREDNS_BIND_ADDR);
   127.0.0.54 (DEFAULT_COREDNS_BIND_ADDR) is only CoreDNS's internal loopback
   bind that dnsmasq forwards cube.app queries to, and never appears in
   /etc/resolv.conf. The previous text inverted this mapping.

2. Script path is deploy/one-click/scripts/systemd/dns-host-route-up.sh,
   not scripts/systemd/dns-host-route-up.sh.

Also adopted the non-blocking suggestions: on the systemd-resolved path the
installer does not rewrite resolv.conf (routing lives on the cube-dns0 dummy
link, which WSL also tears down on restart), and the restart notes now mention
the dummy link/forwarder rule loss.

Signed-off-by: Tantanovo <1348215719@qq.com>
@Tantanovo

Copy link
Copy Markdown
Author

Thanks for the review — both blocking issues are confirmed and fixed in 35aad91, in both languages.

  1. DNS address mapping inverted — you are right. write_host_resolv_conf "${RESOLVED_COREDNS_BIND_ADDR}" (dns-host-route-up.sh:270) is the only place resolv.conf is written and it always uses the dummy-link address 169.254.254.53; 127.0.0.54 is only CoreDNS's internal loopback bind in the server=/cube.app/${COREDNS_BIND_ADDR}#53 forwarder rule. The page now states the client-facing nameserver is 169.254.254.53 on both backends, and explicitly warns not to write 127.0.0.54 (unreachable from inside Docker containers).

  2. Wrong script path — corrected to deploy/one-click/scripts/systemd/dns-host-route-up.sh in all four places (Environment + Root Cause in both languages).

Also adopted the two non-blocking suggestions:

  • Root Cause now notes that on the systemd-resolved path the installer does not rewrite resolv.conf — the routing lives on the cube-dns0 dummy link, which WSL also tears down on restart.
  • "Notes for WSL Restarts" now lists the dummy link / server=/cube.app/... forwarder rule as the third piece of state lost across wsl --shutdown.

```bash
# 1. tell WSL to leave resolv.conf alone
sudo tee -a /etc/wsl.conf >/dev/null <<'EOF'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor (non-blocking): tee -a appends unconditionally. If a WSL user already has a [network] section in /etc/wsl.conf (common for memory/swap or hostname settings), this appends a second [network] block, and duplicate INI sections can silently fail to apply or behave unpredictably. Consider adding a one-line note: "If /etc/wsl.conf already has a [network] section, merge generateResolvConf = false into it instead of appending."

# 2. resolv.conf is usually a symlink into /run, so remove it before writing
sudo rm -f /etc/resolv.conf
sudo tee /etc/resolv.conf >/dev/null <<'EOF'
nameserver 169.254.254.53

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor (non-blocking): 223.5.5.5 is AliDNS. It's a fine default for the China audience this repo targets, but for WSL users elsewhere it can be slow or blocked by enterprise networks. Consider noting it's an example ("use any upstream resolver that works on your network, e.g. 223.5.5.5"), since the repo's own dns-host-route-up.sh picks up the host's existing upstream automatically rather than hardcoding one.

```bash
# wildcard sandbox domain must resolve
dig +short +tcp +timeout=3 foo.cube.app @169.254.254.53

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor (non-blocking): dig is not installed by default on Ubuntu — it requires the dnsutils/bind9-dnsutils package. This exact command is consistent with deploy/one-click/README.md, but since this is a troubleshooting page for users who just hit a DNS failure, consider adding a note to install dnsutils first (or swap the first check for getent hosts foo.cube.app, which needs no extra package, like the second check already does).

1. Note that generateResolvConf belongs inside an existing [network] section
   if /etc/wsl.conf already has one, so 'tee -a' does not create a duplicate.

2. Mark 223.5.5.5 as an example upstream and point out that the installer's
   own write_host_resolv_conf reuses the host's existing upstream, whereas
   this file is written by hand.

3. Note that dig ships in dnsutils / bind9-dnsutils, which Ubuntu does not
   install by default, and lead with a getent check that needs no extra
   package.

Signed-off-by: Tantanovo <1348215719@qq.com>
@Tantanovo

Copy link
Copy Markdown
Author

All three suggestions adopted in 591d6af, both languages.

  1. Duplicate [network] section — the code comment and the notes list now say to put generateResolvConf = false inside an existing [network] section rather than appending a second one.

  2. Hardcoded upstream223.5.5.5 is now explicitly marked as an example, with a note that the installer's own write_host_resolv_conf reuses the host's existing upstream while this file is written by hand.

  3. dig prerequisite — the verification block now leads with getent hosts foo.cube.app, which needs no extra package, and notes that dig comes from dnsutils / bind9-dnsutils.

Thanks for the thorough verification against the base tree — the coredns-start.sh:24-25 and env.example:176-177 cross-checks on the two bind addresses were useful confirmation that the corrected wording is right.

```bash
sudo apt-get update
sudo apt-get install -y systemd-resolved
sudo systemctl enable --now systemd-resolved

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding a WSL-specific prerequisite here: systemctl enable --now systemd-resolved only works if systemd is actually PID 1 in the distro — WSL2 requires [boot] / systemd=true in /etc/wsl.conf (plus a wsl --shutdown) for that. Without it, systemctl fails with "System has not been booted with systemd", yet the page's own verification below (command -v resolvectl) would still pass misleadingly, because it only checks that the binary exists — and then the install proceeds past the preflight but fails later at the resolvectl dns step when systemd-resolved's D-Bus isn't up.

Suggest verifying with resolvectl status (or systemctl is-active systemd-resolved) instead of command -v. Please mirror this note in the zh page (docs/zh/guide/troubleshooting/wsl-dns.md).

…hutdown

The page said the dummy link and host routing are lost on restart but did not
say how to rebuild them, which is the part a reader actually needs.

- Give the Corefile path (/usr/local/services/cubetoolbox/coredns/Corefile,
  TOOLBOX_ROOT from scripts/systemd/common.sh) instead of just saying the
  address can be confirmed from the running Corefile.
- Add the recovery sequence: remount XFS, start cube-sandbox-control.target,
  then restart cube-sandbox-coredns.service and cube-sandbox-dns.service if
  *.cube.app still fails, and verify with 'ip addr show cube-dns0'.
- Explain the restart order: cube-sandbox-dns.service is Type=oneshot and
  declares Requires=/BindsTo= on cube-sandbox-coredns.service, so CoreDNS has
  to be listening first.

Signed-off-by: Tantanovo <1348215719@qq.com>
@Tantanovo

Copy link
Copy Markdown
Author

Pushed 2f7b4d6 with one more improvement I noticed while re-reading the page.

The restart notes said the dummy link and host routing are lost after wsl --shutdown, but did not say how to rebuild them — which is the part a reader actually needs at that moment. Added:

  • The Corefile path/usr/local/services/cubetoolbox/coredns/Corefile (TOOLBOX_ROOT from scripts/systemd/common.sh:7), instead of only saying the address can be confirmed from the running Corefile.
  • A recovery sequence — remount the XFS volume, systemctl start cube-sandbox-control.target, and if *.cube.app still fails, restart cube-sandbox-coredns.service then cube-sandbox-dns.service, verifying with ip addr show cube-dns0 and getent hosts foo.cube.app.
  • Why that ordercube-sandbox-dns.service is Type=oneshot and declares Requires= / BindsTo= on cube-sandbox-coredns.service, so CoreDNS has to be listening before host resolution is switched over.

This is the sequence I actually used to recover the deployment after a WSL restart, so it is verified rather than inferred from the unit files alone.

stuck on WSL anyway:

- A default Ubuntu-on-WSL install has **neither**. `systemd-resolved` is not
installed, and NetworkManager is not present, so the first branch fails.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small factual nit on the packaging attribution: on Debian/Ubuntu (and RPM-based distros), the resolvectl binary is shipped by the systemd package, not by systemd-resolved — the systemd-resolved package provides the systemd-resolved daemon and depends on systemd. So apt-get install -y systemd-resolved still fixes Problem 1 correctly (it pulls in systemdresolvectl appears), but the claim "the command is shipped by the systemd-resolved package" is slightly off. Suggest wording like "the command is provided by the systemd package, which systemd-resolved depends on". The zh page (docs/zh/guide/troubleshooting/wsl-dns.md, "这个命令是由 systemd-resolved提供的") carries the same wording and would need the same tweak.

@chenhengqi chenhengqi removed their assignment Aug 3, 2026
Comment thread docs/guide/troubleshooting/wsl-dns.md Outdated
`online-install.sh` stops immediately with:

```text
[online-install] ERROR: DNS setup requires resolvectl or NetworkManager.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding apt install systemd-resolved in error message instead.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 3f566e9.

Covered all three sites that reject a host for missing DNS tooling, so the hint shows up regardless of which path fails:

  • install.sh:232 (check_dns_preflight)
  • online-install.sh:295 (NetworkManager not loaded)
  • online-install.sh:299 (no systemctl at all)

The error now reads:

[online-install] ERROR: DNS setup requires resolvectl or NetworkManager. resolvectl is provided by the systemd-resolved package: apt install systemd-resolved (or dnf install systemd-resolved).

Two follow-on edits since the page quotes this error verbatim: both language versions now match the new text, and the note about the package name being absent is scoped to releases predating this change rather than stated as current behaviour.

…t error

The preflight names the resolvectl command but not the package that ships it,
and 'apt install resolvectl' does not exist, so the next step is not obvious.
Per review feedback on TencentCloud#1260, put the install hint in the error itself rather
than only in the troubleshooting page.

Covers all three sites that reject a host for missing DNS tooling:
install.sh:232 (check_dns_preflight) and online-install.sh:295,299.

The troubleshooting page quotes this error verbatim in both languages, so both
copies are updated to match, and the note about the package name being absent
is scoped to releases predating this change.

Signed-off-by: Tantanovo <1348215719@qq.com>

- A default Ubuntu-on-WSL install has **neither**. `systemd-resolved` is not
installed, and NetworkManager is not present, so the first branch fails.
- The message names the *command* `resolvectl`, which is shipped by the

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor accuracy note on package attribution (also present in the new install.sh/online-install.sh messages and the zh version): on Debian/Ubuntu the resolvectl binary actually ships in the systemd package — the systemd-resolved package provides the daemon/service (and pulls in systemd). On RHEL 9 / OpenCloudOS 9 there is often no systemd-resolved package at all, so dnf install systemd-resolved can itself fail, recreating the exact "next step is not obvious" dead-end this PR is fixing. Consider pointing at the resolver rather than over-attributing the binary, e.g. "install/enable the systemd-resolved resolver (apt install systemd-resolved; otherwise NetworkManager + dnsmasq)".

- If `/etc/wsl.conf` already contains a `[network]` section, put
`generateResolvConf = false` inside it rather than appending a second
section.
- Keep an upstream resolver as the second entry. With only the CoreDNS address,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: "With only the CoreDNS address, *.cube.app resolves but general internet resolution breaks" is stated as absolute, but it only holds while the CoreDNS/dnsmasq stack is down. When the stack is running, CoreDNS (systemd-resolved path) and dnsmasq (dnsmasq path) both forward non-cube.app queries to the preserved upstream snapshot, so general resolution keeps working. The advice itself is right for the WSL-restart window this page is about — consider wording like "if the Cube Sandbox DNS services are not running yet (e.g. right after a WSL restart), only-the-CoreDNS-address leaves no general resolution until they come back" so it doesn't read as unconditional. Same phrasing appears in the zh version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants