Điểm:3

Thực hiện các thay đổi /etc/resolv.conf vĩnh viễn trong WSL 2

lá cờ in

Trên WSL 2, khi cố gắng kết nối với một trang web, tôi gặp sự cố:

$ping www.google.com
ping: www.google.com: Lỗi tạm thời trong việc phân giải tên

Bây giờ, để khắc phục điều này, tôi phải thêm /etc/wsl.conf với nội dung này:

[mạng]
tạoResolvConf = true

Và tôi cần phải thay đổi /etc/resolv.conf đến:

máy chủ định danh 8.8.8.8

Điều này hoạt động tốt.

Tuy nhiên, khi tôi khởi động lại hệ thống của mình, khi tôi tắt wsl hoặc làm bất cứ điều gì tương tự, /etc/resolv.conf được ghi đè bằng giá trị trước đó.

Tất nhiên, nếu tôi thay đổi /etc/wsl.conf như sau và khởi động lại một lần nữa:

[mạng]
tạoResolvConf = sai

Bản sửa lỗi được đề cập ở trên đã biến mất một lần nữa.

Vì vậy, làm cách nào để tôi thực hiện các thay đổi của mình đối với /etc/resolv.conf vĩnh viễn trên WSL 2?

lá cờ ru
`/etc/resolv.conf` thường là một liên kết tượng trưng và bị ghi đè bởi NetPlan/SystemD. Khi nó 'ghi đè' dữ liệu, bạn thấy gì trong `ls -al /etc/resolv.conf`?
Olivier Grégoire avatar
lá cờ in
@ThomasWard đây là kết quả của lệnh đó: `lrwxrwxrwx 1 root root 29 Jan 25 17:43 /etc/resolv.conf -> ../run/resolvconf/resolv.conf`. Tôi nghĩ rằng `..` có liên quan đến thư mục của riêng tôi, vì vậy tôi đã thử trong các thư mục khác và nó vẫn là `../run/resolvconf/resolv.conf`. Và tôi thấy rằng tệp đó hiện có giá trị `8.8.8.8`.
lá cờ ru
OK đó là bình thường.Khi bạn đang thay đổi mọi thứ, hãy đảm bảo rằng bạn đã xem `/etc/resolvconf` - ở đâu đó trong đó có tệp 'head' mà bạn có thể định cấu hình để có các máy chủ DNS chính của mình trước bất kỳ thứ gì do hệ thống đặt - điều này rất hữu ích vì đó là cách giải quyết hoạt động với các kết nối mạng động (Trình quản lý mạng) trong bản cài đặt cơ bản của Ubuntu. Chỉ vì tương lai nên họ ở lại. Chỉnh sửa tệp đầu cho độ phân giải, những thay đổi đó là liên tục. Có thể có các mục KHÁC được tạo bên dưới nhưng bạn sẽ đặt DNS chính theo cách đó. Nếu nó hoạt động, tôi sẽ chuyển nó thành câu trả lời
Olivier Grégoire avatar
lá cờ in
@ThomasWard `sudo find /run -type f`, chỉ trả về `/run/resolvconf/resolv.conf` và `/run/sudo/ts/myusername`. Không có gì khác trong đó.
lá cờ ru
Tôi không nói nó nằm trong `/run` - lưu ý rằng thư mục tôi đã nói trong nhận xét của mình là **`/etc/resolvconf`**, và *not* trong `/run`
Olivier Grégoire avatar
lá cờ in
@ThomasWard Tôi nghĩ đó là lỗi đánh máy vì /etc/resolvconf (hoặc tương tự) không tồn tại.
NotTheDr01ds avatar
lá cờ vn
@ThomasWard Xin lưu ý rằng OP cho biết đây là WSL. Systemd/NetPlan không nên chơi ở đây, phải không? WSL thường định cấu hình `/etc/resolv.conf` từ máy chủ Windows, trừ khi bị vô hiệu hóa với `/etc/wsl.conf` đã đề cập.
lá cờ ru
@NotTheDr01ds WSL2 là một môi trường ảo hóa hoàn toàn, do đó, nó *có thể* tham gia. Chúng tôi không biết liệu chúng có phải là WSL1 hay không. Như OP đã chỉ ra, họ phải kích hoạt nó và sau đó tắt nó. Nếu họ vô hiệu hóa nó, sẽ không có gì quản lý DNS, vì vậy OP phải tự xử lý.
NotTheDr01ds avatar
lá cờ vn
@ThomasWard Tôi không chắc rằng tôi sẽ gọi nó là "hoàn toàn ảo hóa". Ngay cả WSL2 cũng sử dụng quy trình `init` (PID 1) của riêng nó để kết nối tương tác giữa WSL và Windows. Quan trọng nhất đối với câu hỏi này, ít nhất, đó là `init` trên WSL (cả 1 và 2) nơi mạng được thiết lập. Thực sự, có rất ít "Ubuntu" liên quan đến khía cạnh đó, *đặc biệt là* không phải Systemd.
NotTheDr01ds avatar
lá cờ vn
@OlivierGrégoire Bạn có thể giải thích (với bản chỉnh sửa cho câu hỏi) về "điều đó không hoạt động trở lại" không? `resolv.conf` có bị ghi đè không, ngay cả với `wsl.conf`? Nếu vậy, hãy thử xóa khoảng trắng xung quanh dấu bằng (`generateResolvConf=false`). Đó là một cú sút xa, nhưng một sự thay đổi dễ dàng để thử.
Olivier Grégoire avatar
lá cờ in
@NotTheDr01ds xong rồi! nhưng `/run/resolvconf/resolv.conf` hiện đã bị xóa khi tôi thoát/khởi động lại wsl
NotTheDr01ds avatar
lá cờ vn
Chắc chắn, nhưng tôi nghĩ đó là những gì bạn muốn? Với việc nó không còn sử dụng `/run/resolvconf/resolv.conf` nữa, bạn có thể tạo thành công `/etc/resov.conf` theo cách thủ công không?
Olivier Grégoire avatar
lá cờ in
@NotTheDr01ds Tôi thực sự có thể tạo nó, nhưng khi tôi tắt WSL, tệp sẽ bị xóa.
NotTheDr01ds avatar
lá cờ vn
Xin lỗi, trong nhận xét trước bạn đã nói rằng `/run/resolvconf/resolv.conf` đã bị xóa khi bạn khởi động lại. Đó có phải là `/etc/resolv.conf` hay thực sự là cả hai đều bị xóa?
Olivier Grégoire avatar
lá cờ in
@NotTheDr01ds Trong phần cài đặt WSL của tôi (tôi sẽ không nói chung vì tôi không biết), `/etc/resolv.conf` là một liên kết tượng trưng tới `/run/resolvconf/resolv.conf`.Đó là cái sau bị xóa trong khi cái đầu tiên vẫn là một liên kết tượng trưng ngay cả khi cái sau bị xóa.
lá cờ kn
Bumping, vì tôi đang gặp vấn đề tương tự và chưa có giải pháp nào
Điểm:0
lá cờ mv

Có cùng một vấn đề và làm theo các bước sau mà tôi tìm thấy trên repo github của WSL như một giải pháp thay thế:

  1. Xóa /etc/resolv.conf
  2. Tạo /etc/resolv.conf bằng vim/nano
  3. Chèn máy chủ tên thích hợp
  4. Bắt đầu phiên mới và xác minh xem độ phân giải có bị đặt lại không

Nguồn: câu trả lời của bradley101 tại đây https://github.com/Microsoft/WSL/issues/1908

lá cờ ru
Câu trả lời này có vẻ chưa đầy đủ - loại bỏ độ phân giải và sau đó tạo lại nó * mà không * nêu chi tiết cách định dạng nó, v.v.là một cách tốt để phá vỡ mọi thứ và chỉ cần nói "Nguồn là câu trả lời khác này" mà không cung cấp các bước * hoàn thành * có thể phá vỡ WSL.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.