Khi sử dụng dịch vụ Cloudflare WARP 1.1.1.1 trên Windows, thỉnh thoảng dịch vụ WARP bị mất kết nối Internet trong khoảng vài phút sau đó thì lại sử dung bình thường. Việc này làm mình rất ức chế vì nhiều khi đang xem phim đến chỗ gây cứng thì bị mất hứng. Mình đã thử biến WARP thành proxy server chạy trên Linux rồi viết script để tự kết nối lại (mình đã có bài viết hướng dẫn làm cái này) nhưng thấy tốc độ bị giảm đáng kể.
EDIT: hiện nay tính năng kết nối thông qua proxy (được tích hợp sẳn trong Cloudflare WARP) đã có thể sử dụng tốt nên mình mình không cần chạy server riêng làm proxy server nữa. Tuy nhiên hiện tượng bị mất kết nối vẫn thỉnh thoảng xảy ra nên mình đã viết đoạn script mới để khắc phục lỗi này, các bạn chỉ cần tạo file “.bat” với nội dung dưới đây rồi chạy trực tiếp với quyền admin là được. Đoạn script này đơn giản chỉ là kiểm tra kết nối sau mỗi 5 giây, nếu thấy mất kết nối thì sẽ tự khởi động lại WARP.
Lưu ý: Mình set proxy port của mình là 40000, các bạn nhớ chỉnh lại cho đúng port đã set trong WARP nha.
@echo off echo Monitoring WARP connection... :loop curl -x socks5://localhost:40000 -I -X POST http://www.google.com >nul && ( REM echo Connection succeeded ) || ( echo %TIME% Connection failed net stop CloudflareWARP /Y && net start CloudflareWARP ) timeout 5 >nul goto :loop
Lưu ý: Phần dưới đây đã không còn sử dụng nữa, mình chỉ giữ lại để các bạn tham khảo thôi nha.
Function Connection-Check {
try {
$online = Test-PSOnePing -ComputerName google.com -Timeout 2000
}
catch [System.Net.NetworkInformation.PingException]
{
Get-Date -Format "dd/MM/yyyy HH:mm:ss"
'Ping error'
}
$result = $online | Select-Object -Property Online
if ( $result -match 'True' ) {
return $true
} else {
return $false
}
}
Function Warp-Check {
$online = Connection-Check
if ( -Not $online ) {
Restart-Service -Name "CloudflareWARP" -Force
Start-Sleep -s 5
Get-Date -Format "dd/MM/yyyy HH:mm:ss"
'Restarted'
}
}
Get-Date -Format "dd/MM/yyyy HH:mm:ss"
'Checking WARP...'
Do {
Warp-Check
Start-Sleep -s 3
}
while ($true)
Để chạy đoạn script này trên Windows mình đã sử dụng “Powershell-ISE” của Windows 10. Nhưng trước khi chạy thì phải mở quyền để cho phép chạy script trên Windows:
Mở “PowerShell” với quyền Administrator rồi gõ lệnh sau:
set-executionpolicy remotesigned
Sau đó cài đặt thêm thư viện Test-PSOnePing:
Install-Module -Name PSOneTools -Scope CurrentUser -Force
Từ đây bạn đã có thể sử dụng đoạn script trên để duy trì kết nối Internet của mình mà không sợ bị gián đoạn nữa.