WSL2: Hướng dẫn nâng cao về cấu hình mạng, NAT và chế độ nhân bản

Cập nhật lần cuối: 2 tháng 2026
  • WSL2 sử dụng một máy ảo với mạng riêng, có thể cấu hình thông qua chế độ NAT hoặc chế độ nhân bản và được quản lý bởi Hyper-V.
  • Sự kết hợp giữa wsl.conf và .wslconfig cho phép bạn điều chỉnh mọi thứ, từ việc tự động gắn kết ổ đĩa và systemd đến bộ nhớ, CPU và các chính sách mạng.
  • Các tính năng như dnsTunneling, autoProxy và tường lửa Hyper-V giúp cải thiện khả năng tích hợp với VPN, máy chủ proxy và bảo mật trong Windows 11.
  • Với cấu hình cẩn thận, WSL2 trở thành một nền tảng vững chắc cho việc phát triển, container và tự lưu trữ an toàn.

Cấu hình mạng trong WSL2

WSL2 đã thay đổi hoàn toàn cách Linux tích hợp với Windows.Đặc biệt là trong mọi thứ liên quan đến mạng: giờ đây chúng ta có một máy ảo nhẹ với ngăn xếp mạng riêng, địa chỉ IP riêng và các quy tắc truy cập riêng biệt. Điều này mở ra rất nhiều khả năng cho việc phát triển, thử nghiệm, container và môi trường tự lưu trữ, nhưng cũng làm dấy lên những lo ngại khi các dịch vụ trở nên không thể truy cập được, như đã xảy ra với WSL1.

Hiểu về cấu hình mạng WSL2, chế độ NAT và chế độ nhân bản, cách sử dụng các tệp .wslconfig và wsl.conf, và cách chúng tương tác với tường lửa, VPN, Docker hoặc các công cụ như Tailscale. Đây là chìa khóa để tránh những rắc rối. Chúng ta hãy cùng xem từng bước cách thiết lập này hoạt động, cách hiển thị các dịch vụ cho Windows và mạng LAN, các lệnh cần sử dụng để lấy địa chỉ IP chính xác và các tùy chọn cấu hình nâng cao mà bạn có để tinh chỉnh môi trường của mình, làm cho nó ổn định và trên hết là an toàn.

Cách thức hoạt động thực tế của mạng trong WSL2

WSL2 không còn chia sẻ ngăn xếp mạng máy chủ như WSL1 nữa.Thay vào đó, nó chạy mỗi bản phân phối Linux bên trong một máy ảo nhỏ được quản lý bởi Hyper-V. Máy ảo đó có bộ điều hợp ảo riêng (thường là...) eth0) và một địa chỉ IP riêng được gán bởi một bộ chuyển mạch ảo nội bộ.

Ở chế độ mặc định, WSL2 sử dụng kiến ​​trúc dựa trên NAT. (Dịch địa chỉ mạng). Windows đóng vai trò là bộ định tuyến/máy chủ, và bản phân phối Linux nằm trên một mạng con riêng, thường nằm trong phạm vi được chỉ định. 172.16.0.0/12Mạng con này có thể thay đổi sau khi khởi động lại máy hoặc khởi động lại WSL, điều này đã khiến không ít người phát điên khi cấu hình các quy tắc tường lửa tĩnh.

Về mặt thực tế, điều này có nghĩa là địa chỉ IP của bản phân phối WSL2 của bạn không ổn định và cũng không thể truy cập trực tiếp từ mạng LAN. Cũng như với WSL1: theo mặc định, chỉ có thể kết nối giữa Windows và WSL2 thông qua các quy tắc chuyển hướng và NAT, và việc truy cập vào mạng cục bộ yêu cầu các bước bổ sung hoặc sử dụng chế độ nhân bản.

Ngoài kiến ​​trúc cơ bản này, Windows 11 22H2 và các phiên bản sau này còn bổ sung thêm các khả năng mạng mới. (chế độ phản chiếu, dnsTunneling, autoProxy, tường lửa Hyper-V, v.v.) được điều khiển từ tệp cấu hình toàn cục. .wslconfigtrong khi một số tùy chọn nhất định trong Linux được quản lý bằng /etc/wsl.conf.

Xác định địa chỉ IP trong WSL2

Làm việc với WSL2 đòi hỏi phải phân biệt rõ ràng giữa hai kịch bản IP khác nhau.: Khi bạn cần địa chỉ IP của bản phân phối Linux và khi bạn cần địa chỉ IP của máy chủ Windows được nhìn từ Linux. Mỗi trường hợp được giải quyết bằng một lệnh khác nhau.

Tình huống 1: Từ Windows, bạn muốn biết địa chỉ IP của bản phân phối WSL2. Để cho phép một ứng dụng trên máy chủ (ví dụ: máy khách, trình duyệt hoặc công cụ kiểm thử) kết nối với một dịch vụ đang chạy trong Linux. Để thực hiện điều này, bạn có thể chạy các lệnh sau trong Windows (sử dụng CMD hoặc PowerShell):

wsl.exe --distribution <DistroName> hostname -i

Nếu bạn muốn sử dụng bản phân phối mặc định, bạn có thể bỏ qua tham số phân phối. và chỉ cần gọi wsl.exe hostname -iTrong nền, lệnh này được chạy trên Linux. hostname --ip-addresses và trả về địa chỉ IP của phiên bản đó. Kết quả điển hình có thể trông như thế này:

172.30.98.229

Tình huống 2: Từ bản phân phối Linux, bạn cần biết địa chỉ IP của máy chủ Windows.Ví dụ, để kết nối ứng dụng WSL2 với máy chủ chạy trực tiếp trên Windows (Node.js, SQL Server, Caddy, v.v.). Trong giao diện dòng lệnh Linux, bạn có thể sử dụng:

ip route show | grep -i default | awk '{ print $3 }'

Kết quả đầu ra sẽ là địa chỉ gateway mặc định của máy ảo WSL2., tương ứng với địa chỉ IP của máy chủ Windows khi nhìn từ Linux, đại loại như sau:

172.30.96.1

Giá trị đó (ví dụ, 172.30.96.1(Đây là địa chỉ mà các máy khách Linux của bạn nên trỏ đến) Khi bạn muốn truy cập các dịch vụ đang chạy trên máy chủ Windows trong khi ở chế độ NAT cổ điển.

Chế độ NAT: hành vi mặc định của mạng WSL2

Theo mặc định, WSL2 hoạt động ở chế độ NAT, và đối với nhiều môi trường phát triển đơn giản, điều này là quá đủ.Điều quan trọng là phải hiểu điều gì hiệu quả "một cách tự nhiên" và điều gì không, để không lãng phí thời gian theo đuổi những điều không có thật.

Truy cập các dịch vụ Linux từ Windows bằng localhostNếu bạn chạy một ứng dụng mạng (ví dụ: máy chủ Node.js, máy chủ Flask, máy chủ SQL trên Linux) trên bản phân phối WSL2 của mình, bạn có thể truy cập nó từ Windows bằng cách sử dụng localhost:puertoWindows tự động chuyển tiếp các kết nối đến địa chỉ IP nội bộ của máy ảo WSL2.

Truy cập các dịch vụ đang chạy trên Windows từ LinuxĐây là lúc mọi thứ thay đổi. Để truy cập một ứng dụng mạng trên máy chủ (chẳng hạn như máy chủ Node.js, SQL Server hoặc Caddy trên Windows) từ WSL2, bạn phải sử dụng địa chỉ IP của máy chủ như được nhìn thấy từ Linux, thu được bằng lệnh định tuyến mặc định:

ip route show | grep -i default | awk '{ print $3 }'

Với địa chỉ IP đó, bạn có thể kết nối từ Linux đến bất kỳ dịch vụ nào trên máy chủ., ví dụ http://172.30.96.1:3000 Nếu máy chủ Windows của bạn lắng nghe trên cổng 3000 trên tất cả các giao diện.

Khi bạn kết nối bằng địa chỉ IP từ xa (không phải localhost), các ứng dụng sẽ xem chúng là các kết nối mạng LAN.Điều này có nghĩa là nhiều máy chủ phải được cấu hình để lắng nghe. 0.0.0.0 thay vì 127.0.0.1Ví dụ, với Flask, bạn có thể khởi chạy:

  Hướng dẫn cách chiếu màn hình điện thoại lên máy tính từng bước một

app.run(host='0.0.0.0')

Thay đổi này cải thiện khả năng truy cập nhưng đòi hỏi phải tập trung vào vấn đề bảo mật.Bởi vì bạn đang cho phép kết nối từ mạng cục bộ của mình, chứ không chỉ từ chính máy tính đó.

Truy cập WSL2 từ mạng cục bộ (LAN) bằng NAT

Một trong những thay đổi khó chịu nhất khi chuyển từ WSL1 sang WSL2 là các bản phân phối không còn truy cập trực tiếp được từ mạng LAN nữa.Trong WSL1, nếu Windows của bạn hiển thị trên mạng, các dịch vụ của bản phân phối sẽ kế thừa khả năng hiển thị đó gần như một cách dễ dàng.

Trong WSL2, máy ảo có địa chỉ IP riêng và không được tự động công khai trên mạng LAN.Để đạt được chức năng tương tự như trước đây, ở chế độ NAT, bạn cần tạo một proxy cổng trong Windows, giống như cách bạn làm với bất kỳ máy ảo Hyper-V nào.

Windows có sẵn một công cụ kinh điển cho việc này: netsh interface portproxyMột lệnh điển hình để chuyển hướng cổng máy chủ đến địa chỉ IP/cổng của WSL2 sẽ là:

netsh interface portproxy add v4tov4 listenport=<puertoHost> listenaddress=0.0.0.0 connectport=<puertoWSL> connectaddress=(wsl hostname -I)

Trên thực tế, bạn sẽ thay thế các dấu hiệu bằng các giá trị cụ thể., ví dụ:

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

đây listenaddress=0.0.0.0 Điều này cho thấy Windows sẽ lắng nghe trên tất cả các địa chỉ IPv4 của máy chủ.và sẽ chuyển tiếp những gì đến qua cổng 4000 đến 192.168.101.100:4000Đây sẽ là địa chỉ IP của WSL2 được lấy bằng lệnh:

  • wsl hostname -I Nó cung cấp cho bạn địa chỉ IP của bản phân phối Linux bên trong máy ảo WSL2.
  • cat /etc/resolv.conf Nó hiển thị địa chỉ IP của máy chủ Windows Vista từ WSL2.

Với kỹ thuật này, bạn có thể truy cập dịch vụ đang chạy trên WSL2 từ bất kỳ máy tính nào trên mạng LAN.với điều kiện tường lửa Windows cho phép và bạn chắc chắn rằng mình đang để lộ một dịch vụ của máy ảo, chứ không phải trực tiếp máy chủ.

IPv6 và các tính năng mạng hiện đại

WSL2 cũng có thể hoạt động với IPv6, điều này đặc biệt quan trọng trong môi trường hiện đại, mạng VPN và mạng doanh nghiệp.Để quản lý địa chỉ, các lệnh cơ bản trong Linux tương đương với các lệnh của IPv4:

  • wsl hostname -i Từ Windows, xem địa chỉ IP của bản phân phối WSL2.
  • ip route show | grep -i default | awk '{ print $3 }' Từ Linux để lấy địa chỉ IP của máy chủ Windows

Sự cải thiện đáng kể về chất lượng hỗ trợ IPv6 và VPN thể hiện rõ nhất ở chế độ mạng nhân bản.Tính năng này có sẵn trên Windows 11 22H2 và các phiên bản sau này, mà chúng ta sẽ xem xét chi tiết hơn ở phần sau.

Chế độ mạng phản chiếu: phản chiếu giao diện Windows trên Linux

Trên các máy tính chạy Windows 11 22H2 trở lên, bạn có thể bật chế độ mạng "phản chiếu". Trong WSL2, mô hình thay đổi hoàn toàn: thay vì NAT cổ điển, Linux "nhận diện" các giao diện mạng Windows được phản chiếu.

Để kích hoạt tính năng này, bạn cần chỉnh sửa tệp. .wslconfig của người dùng của bạn, đó là trong %UserProfile%\.wslconfigTừ PowerShell với quyền quản trị viên, bạn có thể mở nó bằng lệnh:

notepad $env:USERPROFILE\.wslconfig

Bên trong, hãy thêm (hoặc sửa đổi) phần [wsl2] để kích hoạt chế độ phản chiếu.:

[wsl2]
networkingMode=mirrored

Sau khi lưu tập tin, bạn cần khởi động lại WSL2 để các thay đổi có hiệu lực.Ví dụ, với:

wsl --shutdown

Khi bạn khởi động lại, WSL sẽ sử dụng kiến ​​trúc mạng phản chiếu mới.Điều này mang lại một số lợi thế rất mạnh mẽ:

  • Hỗ trợ IPv6 gốc và khả năng tích hợp được cải thiện với mạng doanh nghiệp và VPN.
  • Khả năng kết nối với các dịch vụ Windows từ Linux bằng cách sử dụng 127.0.0.1 trực tiếp (mặc dù điều đó không được phép) ::1 (ví dụ như giao thức loopback IPv6 cho việc này)
  • Cải thiện khả năng hỗ trợ đaicast trong quá trình tích hợp Windows-Linux.
  • Truy cập trực tiếp vào WSL từ mạng LAN mà không cần sử dụng lệnh netsh portproxy.sử dụng địa chỉ IP của chính máy tính Windows đó.

Việc kích hoạt chế độ này sẽ giải quyết nhiều vấn đề NAT thường gặp trên WSL2. và đây là tùy chọn được khuyến nghị trong hầu hết các môi trường phát triển và tự lưu trữ hiện đại, nơi bạn có thể sử dụng phiên bản Windows 11 được cập nhật.

Đường hầm DNS và việc sử dụng máy chủ proxy trong WSL2

Trong Windows 11 22H2 và các phiên bản sau này, việc phân giải tên từ WSL2 cũng đã được cải tiến đáng kể.Điểm mấu chốt nằm ở hai chức năng được định nghĩa trong .wslconfig: dnsTunneling y autoProxy.

các tùy chọn dnsTunneling Chức năng này được bật mặc định trong phần [wsl2]. Điều này cho phép các yêu cầu DNS của Linux được xử lý thông qua tính năng ảo hóa, thay vì được gửi đi dưới dạng các gói mạng thông thường. Điều này cải thiện đáng kể khả năng tương thích với VPN và các cấu hình mạng phức tạp trên máy chủ.

Về phần mình, autoProxy=true buộc WSL phải sử dụng cài đặt proxy HTTP của Windows.Nếu máy chủ nằm sau máy chủ proxy của công ty hoặc mạng bảo mật, WSL2 sẽ tự động kế thừa cấu hình đó mà không cần bạn phải thao tác thủ công với các biến môi trường.

Ví dụ, bạn có thể có một đoạn mã như thế này trong... .wslconfig:

[wsl2]
dnsTunneling=true
autoProxy=true

Điều này đảm bảo rằng mạng WSL2 hoạt động nhất quán với cấu hình máy chủ.Đặc biệt hữu ích trong các công ty có chính sách mạng và lọc dữ liệu nghiêm ngặt.

Tường lửa Hyper-V và khả năng tiếp cận dịch vụ bảo mật

Trong môi trường hiện đại, mạng WSL2 cũng đi qua một tường lửa chuyên dụng.Bắt đầu từ WSL 2.0.9 trên Windows 11 22H2, tính năng tường lửa Hyper-V được bật theo mặc định, bổ sung thêm một lớp lọc cho lưu lượng truy cập máy ảo (bao gồm cả lưu lượng truy cập WSL2).

Nếu bạn đang làm việc ở chế độ sao chép và muốn hiển thị vĩnh viễn các dịch vụ WSL2 ra mạng LAN, hãy làm theo hướng dẫn trên. (Ví dụ: API, bảng điều khiển hoặc dịch vụ tự lưu trữ), bạn cần đảm bảo rằng các quy tắc tường lửa cho phép điều đó.

Một cách tiếp cận hợp lý từ PowerShell với quyền quản trị viên là tạo quy tắc Hyper-V cho mạng riêng.:

  Cách cài đặt bản vá PhotoGIMP trên Windows và Mac

New-NetFirewallHyperVRule -DisplayName "WSLPrivateInboundRule" -Profiles Private -Direction Inbound -Action Allow -VMCreatorId ((Get-NetFirewallHyperVVMCreator).VMCreatorId)

Nếu vì bất kỳ lý do nào bạn muốn vô hiệu hóa tính năng bảo vệ Hyper-V cụ thể đó (Một lựa chọn ít được khuyến khích hơn), bạn có thể sử dụng:

Set-NetFirewallHyperVVMSetting -Name ((Get-NetFirewallHyperVVMCreator).VMCreatorId) -Enabled False

Ý tưởng là giữ cho tường lửa hoạt động bất cứ khi nào có thể.Giới hạn các quy tắc chỉ áp dụng cho mạng riêng và các cổng bạn thực sự cần, đồng thời chỉ sử dụng biện pháp vô hiệu hóa hàng loạt như là phương án cuối cùng và luôn hướng đến việc tăng cường cấu hình lại ngay khi mọi thứ hoạt động bình thường.

Kiến trúc mạng WSL2, dải địa chỉ X11 và 172.16.0.0/12.

Một trường hợp điển hình cho thấy chi tiết về mạng WSL2 là việc sử dụng các ứng dụng đồ họa thông qua X11.Ví dụ, khởi chạy Xming trên Windows và gửi các ứng dụng Linux thông qua DISPLAY.

Khi nâng cấp từ WSL1 lên WSL2, nhiều người dùng nhận thấy X ngừng hoạt động. vì mạng không còn được "chia sẻ" nữa mà trở thành mạng NAT ảo với các dải địa chỉ như sau: 172.16.0.0/12Điều này cũng có thể thay đổi sau mỗi lần khởi động lại Windows hoặc WSL.

Để X hoạt động trở lại với Xming từ WSL2, thủ thuật thường dùng là lấy địa chỉ IP của Windows mà Linux nhìn thấy. sử dụng:

làm

DISPLAY=$(grep nameserver /etc/resolv.conf | cut -d' ' -f2):0

Song song đó, cần phải điều chỉnh tường lửa Windows để cho phép lưu lượng X11 từ mạng con NAT đó.Một cách tiếp cận thông thường là chỉnh sửa quy tắc Xming bằng cách thêm phạm vi. 172.16.0.0/12 trong TCP+UDP 6000.

Nhiều người cuối cùng đã vô hiệu hóa xác thực Xming bằng tùy chọn đó. -acĐiều này thực chất "mở cửa" cho bất kỳ máy khách X nào đến từ mạng đó. Nó hoạt động, nhưng xét về khía cạnh bảo mật thì khá đáng ngờ, vì vậy nên xem xét các giải pháp hạn chế hơn hoặc sử dụng WSLg (ứng dụng GUI tích hợp) trong Windows 11.

wsl.conf và .wslconfig: cấu hình WSL2 nâng cao

WSL cung cấp hai tệp cấu hình chính kiểm soát cả hoạt động của máy ảo và của từng bản phân phối.: /etc/wsl.conf (theo bản phân phối) và %UserProfile%\.wslconfig (Áp dụng chung cho tất cả các bản phân phối WSL2).

wsl.conf sống bên trong bản phân phối Linux, trong /etc/wsl.confNó được dùng để cấu hình các tùy chọn cục bộ cho bản phân phối đó: tự động gắn kết, tạo tệp hosts y resolv.confKhả năng tương tác với Windows, người dùng mặc định, systemd, v.v.

.wslconfig Nó được lưu trữ bên ngoài hệ điều hành Linux, trong hồ sơ người dùng Windows. (C:\Users\<Usuario>\.wslconfig) và kiểm soát các tham số toàn cục của máy ảo cung cấp năng lượng cho WSL2: bộ nhớ, CPU, nhân hệ điều hành, chế độ mạng, tường lửa, DNS, kích thước ổ đĩa ảo, hỗ trợ giao diện người dùng đồ họa (GUI), v.v.

Một chi tiết thú vị là "quy tắc 8 giây" khi thay đổi cài đặt.Khi chỉnh sửa bất kỳ tập tin nào trong số này, bạn phải đảm bảo rằng máy ảo WSL đã tắt hoàn toàn. Ngay cả khi bạn đóng cửa sổ phân phối, nó vẫn có thể tồn tại trong bộ nhớ trong vài giây.

Để buộc khởi động lại hệ thống con, bạn có thể sử dụng:

  • wsl --list --running để kiểm tra xem có bản phân phối Linux nào đang hoạt động hay không.
  • wsl --shutdown đóng tất cả các đợt phân phối cùng một lúc
  • wsl --terminate <distroName> để dừng một bản phân phối cụ thể

Các thay đổi cấu hình chỉ thực sự được áp dụng khi WSL được tắt và khởi động lại.Đây là điều mà nhiều người thường bỏ qua và cho rằng những điều chỉnh của họ "không hiệu quả".

Các tùy chọn chính của wsl.conf theo từng phần

Tập tin wsl.conf Nó được lấy cảm hứng từ định dạng .ini cổ điển, với các phần và khóa.Các phần chính là [automount], [network], [interop], [user], [boot], [gpu] y [time].

En [automount] Bạn có thể kiểm soát cách các ổ đĩa Windows được gắn kết trong Linux. (thường thấp) /mnt):

  • enabled (kiểu boolean, mặc định là true)Nếu đúng, các ổ C:/, D:/, v.v. sẽ tự động được gắn kết. /mnt/c, /mnt/d...
  • mountFsTab (bool)Nếu điều đó là sự thật, nó sẽ được xử lý. /etc/fstab khi khởi động bản phân phối.
  • root (xích): thư mục gốc nơi các ổ đĩa sẽ được gắn kết, ví dụ /windir//windir/c.
  • options (danh sách phân cách bằng dấu phẩy): Các tham số dành riêng cho DrvFs, chẳng hạn như metadata, uid, gid, umask, fmask, dmask o case.

DrvFs là hệ thống tập tin đóng vai trò cầu nối giữa Windows và Linux.Được thiết kế để truy cập NTFS từ WSL với kiểm soát quyền, siêu dữ liệu và phân biệt chữ hoa chữ thường.

Trong phần [network] Bạn điều chỉnh việc tạo tệp mạng tự động.:

  • generateHostsNếu đúng, WSL sẽ tự động tạo ra /etc/hosts.
  • generateResolvConfNếu đúng, WSL sẽ tạo ra /etc/resolv.conf Với hệ thống DNS cũ.
  • hostname: Tên máy chủ mà bản phân phối sẽ sử dụng.

Mục [interop] kiểm soát khả năng tương tác với Windows:

  • enabledCho phép hoặc vô hiệu hóa khả năng khởi chạy các tiến trình Windows từ WSL.
  • appendWindowsPath: quyết định xem có thêm đường dẫn Windows vào hay không $PATH Linux.

En [user] Bạn có thể chỉ định người dùng sẽ được sử dụng mặc định khi khởi động bản phân phối.:

  • defaultTên người dùng sẽ được sử dụng mặc định khi khởi chạy trong WSL.

Mục [boot] Nó đặc biệt hữu ích trên Windows 11 và Server 2022. Để tự động khởi chạy các dịch vụ, chẳng hạn như Docker trong WSL:

  • command: Chuỗi lệnh cần thực thi khi khởi động WSL, ví dụ: service docker start.
  • protectBinfmt: Bảo vệ quá trình tạo các đơn vị systemd khi systemd được kích hoạt.

Bạn cũng có các phần như sau: [gpu] (cho phép truy cập GPU của Windows từ Linux), và [time] để đồng bộ múi giờ với WindowsĐiều này giúp tránh các vấn đề phát sinh khi bạn chuyển sang giờ mùa hè hoặc khi đi du lịch.

.wslconfig: Điều khiển máy ảo WSL2

Trong khi wsl.conf tinh chỉnh hành vi của từng bản phân phối, .wslconfig cho phép bạn tinh chỉnh máy ảo được chia sẻ bởi tất cả các bản phân phối WSL2.Tệp này chỉ được các bản phân phối chạy trên WSL2 xem xét, chứ không phải WSL1.

Trong .wslconfig Phần chính là [wsl2]nơi bạn xác định các tham số chính:

  • kernel y kernelModules: Đường dẫn tuyệt đối từ Windows đến nhân Linux tùy chỉnh và các mô-đun của nó.
  • memory: Giới hạn bộ nhớ VM (mặc định 50% RAM của máy chủ), ví dụ 4GB.
  • processorsSố lượng bộ xử lý logic được gán cho máy ảo.
  • localhostForwardingCho phép truy cập các cổng mở trong WSL2 từ Windows bằng cách sử dụng localhost.
  • swap y swapFileKích thước và đường dẫn của tệp hoán đổi (swap file) cho máy ảo.
  • guiApplications: Cho phép hoặc vô hiệu hóa hỗ trợ ứng dụng giao diện người dùng đồ họa (WSLg).
  • dnsProxyKhi ở chế độ NAT, hệ thống sẽ quyết định xem máy chủ DNS của Linux sẽ là phiên bản NAT của máy chủ hay là bản sao của máy chủ DNS Windows.
  • networkingModeTại đây bạn có thể lựa chọn giữa none, nat, bridged (lỗi thời), mirrored o virtioproxy.
  • firewall, dnsTunneling y autoProxyCác tùy chọn mà chúng ta đã thảo luận nhằm tích hợp tốt hơn mạng WSL với các chính sách của Windows.
  • defaultVhdSize: Kích thước tối đa của VHD nơi lưu trữ hệ thống tệp của bản phân phối (mặc định là 1 TB).
  Hướng dẫn đầy đủ về giao thức DHCP: hoạt động, ưu điểm và bảo mật

Ngoài ra còn có một phần [experimental] nơi các tính năng được kích hoạt trong quá trình thử nghiệm như:

  • autoMemoryReclaim: Cài đặt khôi phục bộ nhớ tự động (đã tắt, khôi phục dần dần, dropCache).
  • sparseVhdTạo các ổ đĩa ảo thưa để tiết kiệm dung lượng.
  • bestEffortDnsParsing y dnsTunnelingIpAddressTinh chỉnh đường hầm DNS.
  • ignoredPorts: các cổng mà ứng dụng Linux có thể sử dụng ngay cả khi chúng đang được sử dụng trên Windows khi bạn đang ở chế độ nhân bản.
  • hostAddressLoopbackCho phép máy chủ và container kết nối bằng địa chỉ IP cục bộ của máy chủ ở chế độ sao chép.

Việc cấu hình đúng cách tệp .wslconfig sẽ tạo nên sự khác biệt giữa một máy ảo ngốn nhiều tài nguyên và một môi trường được tối ưu hóa, hoạt động tốt với hệ thống Windows và mạng của bạn.đặc biệt nếu bạn làm việc với khối lượng công việc lớn, container hoặc nhiều bản phân phối Linux đồng thời.

WSL2, Docker và mạng cho việc tự lưu trữ với Tailscale

Một ví dụ rất thực tế là sử dụng WSL2 trên máy chủ Windows (thậm chí cả Windows Server 2025) như một nền tảng tự lưu trữ.Kết hợp Ubuntu trên WSL2, Docker Engine (không có Docker Desktop), Tailscale và một máy chủ proxy ngược như Caddy để cung cấp các dịch vụ như n8n hoặc Supabase.

Ý tưởng là tạo ra một môi trường Docker ổn định trong WSL2, tránh được các vấn đề phát sinh khi sử dụng Docker Desktop trên máy chủ.Khi cài đặt Docker Engine trực tiếp trên Ubuntu (WSL2), mạng container phụ thuộc vào mạng WSL2, và mạng này lại phụ thuộc vào chế độ NAT hoặc chế độ phản chiếu được định nghĩa trong tệp .wslconfig.

Với Tailscale được cài đặt trên WSL2, bạn có thể công bố các dịch vụ của mình trên mạng VPN dạng lưới. mà không cần mở cổng trên bộ định tuyến, và sử dụng Caddy làm proxy ngược để tập trung hóa chứng chỉ TLS, định tuyến và cân bằng tải nhẹ giữa các container.

Để duy trì một mạng lưới sạch sẽ, ổn định và an toàn, nên làm như sau::

  • Chọn một chế độ mạng nhất quán duy nhất (NAT hoặc mạng phản chiếu) và ghi lại chế độ đó.
  • Tránh xung đột cổng giữa Windows và WSL2., dựa vào ignoredPorts nếu bạn sử dụng chế độ phản chiếu
  • Kiểm soát mức độ tiếp xúc với dịch vụ chỉ thông qua Tailscale hoặc Caddy.thay vì mở các cổng "mặc định" trong tường lửa
  • Tự động hóa quá trình khởi động Docker, Tailscale và Caddy từ [boot] trong wsl.conf để có môi trường gần giống với môi trường sản xuất hơn.

Với kiến ​​trúc này, WSL2 không còn chỉ là một công cụ phát triển mà còn có thể trở thành một nền tảng tự lưu trữ khá mạnh mẽ.với điều kiện bạn chấp nhận những hạn chế của nó (ảo hóa trên Hyper-V, lớp mạng bổ sung, v.v.) và cấu hình cẩn thận.

Các phương pháp tốt nhất để thiết lập mạng WSL2 cho mục đích phát triển và kiểm thử

Bên cạnh việc tinh chỉnh, có một số hướng dẫn giúp bạn làm việc thoải mái với mạng WSL2. mà không cần liên tục phải vật lộn với địa chỉ IP, cổng và tường lửa.

Đối với các dịch vụ phát triển, hãy sử dụng các cổng cao (trên 1024). và tránh sử dụng các cổng đặc quyền hoặc được sử dụng nhiều; điều này giúp giảm thiểu xung đột và loại bỏ nhu cầu cấp thêm quyền.

Hãy đảm bảo rằng mã nguồn và dữ liệu nằm trong hệ thống tệp của Linux. (bạn ~/ hoặc các tuyến đường nội bộ) thay vì làm việc trực tiếp trên /mnt/cvì việc truy cập NTFS từ WSL chậm hơn và có thể ảnh hưởng đến các dịch vụ đòi hỏi nhiều thao tác I/O.

Tự động hóa cài đặt mạng và quy tắc chuyển hướng bằng tập lệnh. Trong PowerShell và Bash: ví dụ, một kịch bản cấu hình WSL2 khi khởi động. netsh portproxy (Nếu bạn tiếp tục sử dụng NAT) hoặc kiểm tra các quy tắc tường lửa khi sử dụng tính năng nhân bản dữ liệu.

Tránh phụ thuộc vào việc thay đổi địa chỉ IP. được tạo ra bởi bộ chuyển mạch ảo nội bộ. Bất cứ khi nào có thể, hãy làm việc với localhost, tên máy chủ hoặc các mục trong /etc/hosts Đối với các dịch vụ của bạn, để việc thay đổi địa chỉ IP không làm hỏng một nửa cơ sở hạ tầng thử nghiệm của bạn.

Trong môi trường chuyên nghiệp hoặc bán chuyên nghiệp, tốt nhất là không nên dựa dẫm một cách mù quáng vào tính năng chuyển tiếp tự động của WSL.Hãy cấu hình rõ ràng các cổng, máy chủ proxy và quy tắc tường lửa để biết chính xác những gì đang được phơi bày và ở đâu.

Khi được cấu hình đúng cách, WSL2 cung cấp một mạng lưới biệt lập nhưng linh hoạt, hoàn hảo cho việc phát triển nâng cao, kiểm thử API, làm việc với container và mô phỏng môi trường phân tán.Điều mấu chốt là phải nắm vững các chế độ mạng (NAT so với chế độ phản chiếu), các tệp wsl.conf và .wslconfig, và sự tương tác với tường lửa và các công cụ trong hệ thống của bạn (Docker, Tailscale, máy chủ proxy ngược), để Windows và Linux có thể chạy trên cùng một máy mà không trùng lặp cổng hoặc ảnh hưởng đến bảo mật.