Mở đầu
Chào các bạn, sau cái bài Xử lý vấn đề “Port Already in Use” trên Linux và Windows thì mình lại gặp 1 trường hợp nữa, cái trường hợp này nó xảy ra quá lâu rồi và do mình lười fix nên nó vẫn còn đó, cách đây khoảng 10 ngày thì mình fix được rồi. Chính vì thế mình viết lên đây vừa là chia sẻ, vừa là note lại cho bản thân để sau này lỡ bị lại thì có lệnh xài luôn cho nhanh :joy:
Nguyên nhân
Vấn đề này nó cũng giống việc bị sử dụng port bởi service khác rồi, nhưng mà với thông báo khác. Mình ví dụ với Docker vì mình sử dụng Docker mở port khá nhiều
|
|
Như các bạn có thể thấy, mình không thể mapping port 8080 từ Container ra bên ngoài máy mình, nó báo lỗi Ports are not available
An attempt was made to access a socket in a way forbidden by its access permissions
. Ban đầu thì mình cũng nghĩ nó bị trùng port ở đâu thôi, check thì chẳng có cái service nào đang chạy ở 8080 cả, thế mà vẫn bị chặn :|.
Trước mình cũng có viết 1 bài debug Gitlab, mình cũng bị cái lỗi phiền phức này không cho mở port 3000, các bạn có thể đọc lại tại phần này Setup debug Gitlab, tưởng không khó mà cũng không khó lắm - Extend. Và mình đã tạm thời fix bằng việc xoá cái port đang bị Excluded đó đi bằng lệnh
|
|
Vấn đề máy mình ở đây bị excluded port
quá nhiều, không thể fix bằng cái cách đó được, mình có thể show ra đây cho các bạn có thể thấy
|
|
Bị Port Exclusion Ranges
từ port 1061 đến tận 14903, quá nhiều mà k biết để làm gì, cực kỳ khó chịu. Sau một hôm than thở với người anh tên Phương giấu tên, anh bảo là do Hyper-V hay sao ấy, anh ấy không bị lỗi giống mình. Vì lúc khởi động máy lên thì nó exclusion ít lắm, khi mở Docker (Docker chạy base WSL2 sử dụng Hyper-V) lên thì exclusion nhiều thế kia, nên mình cũng ngờ ngợ rồi.
Người anh Phương giấu tên kia có gửi cho mình 1 link github về issue giống mình, bạn đọc có thể đọc tại https://github.com/microsoft/WSL/issues/5306. Sau khi reseearch một hồi thì mình biết nguyên nhân là do đâu, và vấn đề này được recommend giải quyết từ năm 2019 (thế mà còn lười không research để fix - chán bản thân :<)
https://github.com/docker/for-win/issues/3171#issuecomment-554587817
Vậy thì nguyên nhân ở đây không phải do Docker, cũng chẳng phải do Hyper-V hay WSL2, nguyên nhân là do Windows update lỗi, dẫn tới nó cập nhật luôn dynamic port range từ 1024 luôn. Dynamic port range được sử dụng để Windows có thể sử dụng những port đó làm gì đấy mà không cho thằng nào khác sử dụng cả. Bằng một cách thần bí nào đấy nó set dynamic port range về 1024. Bạn đọc có thể check dynamic port đang được set ở giá trị nào thông qua câu lệnh
|
|
Và kết quả trên là cái setting mà khiến mình khốn đốn bao lâu nay
Kết thúc chuỗi hành trình đầy chông gai
Cảm ơn các bạn đã đọc đến đây, và đây là 1 câu lệnh duy nhất khiến các bạn không còn khổ sở như mình nữa
|
|
Đơn giản là set dynamic ranger port về giá trị ban đầu vốn có của nó, sau đó restart máy là xong, đơn giản vậy thôi.
Cẩn thận hơn thì có thể check lại
|
|
Chúc các bạn đỡ khổ sở về vấn đề này nữa, see you :joy: