Dịch vụ Internet Connection Sharing (ICS) trên Windows cho phép chia sẻ kết nối Internet của máy tính với thiết bị khác trong mạng cục bộ (qua Wi-Fi hoặc Ethernet). Cho phép tất cả máy trong LAN truy cập Internet qua một kết nối trên một máy (máy có thể kết nối Internet qua modem 5G/4G/LTE, cáp trực tiếp qua adapter thứ 2, vệ tinh, PPPoE, VPN, v.v.). Lúc này máy Windows với 2 card mạng kết nối 2 mạng khác nhau đóng vai trò gateway. ICS là dịch vụ Windows tích hợp cung cấp chia sẻ kết nối mạng, dịch địa chỉ (NAT) và chức năng DHCP server.
Cũng dùng ICS biến thiết bị Windows 10 thành mobile hotspot.
Bật chia sẻ kết nối mạng trong Properties card mạng (tab Sharing → Internet Connection Sharing → Allow other network users to connect through this computer's Internet connection).
Nhược điểm khó chịu trên Windows 10 hiện đại: nếu máy chia sẻ kết nối mạng khởi động lại, các máy khác trong LAN/Wi-Fi mất Internet.
Nguyên nhân: trên build Windows 10 mới, dịch vụ Internet Connection Sharing bị tắt sau 4 phút và không tự khởi động lại nếu không có lưu lượng qua kết nối chia sẻ. Để khôi phục, phải bỏ tích và tích lại tùy chọn chia sẻ trong properties card mạng dùng để kết nối Internet.
Để ICS tự khởi động sau reboot Windows 10, bật DWORD registry EnableRebootPersistConnection giá trị 1 tại khóa HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedAccess.
Dễ hơn tạo tham số registry bằng PowerShell:
New-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\SharedAccess -Name EnableRebootPersistConnection -Value 1 -PropertyType dword
Đặt khởi động tự động cho dịch vụ Internet Connection Sharing (SharedAccess). Đổi startup type từ Manual sang Automatic trong services.msc hoặc PowerShell:
Set-Service SharedAccess –startuptype automatic –passthru
Khởi động dịch vụ:
Start-Service SharedAccess
Cũng dùng script PowerShell sau tìm tất cả kết nối mạng có chia sẻ Internet trên máy, tắt chia sẻ và bật lại:
$NetShareObject = New-Object -ComObject HNetCfg.HNetShare
$list = New-Object System.Collections.Generic.List[System.Object]
foreach( $connection in $NetShareObject.EnumEveryConnection ){
$config = $NetShareObject.INetSharingConfigurationForINetConnection( $connection )
if( $config.SharingEnabled -eq 1 ){
$type = $config.SharingConnectionType
$list.Add( @($type,$config) )
$config.DisableSharing( )
}
}
Start-Sleep 1
foreach( $array in $list ){
$array[1].EnableSharing($array[0])
}
Chạy script PowerShell tự động qua Windows Task Scheduler khi máy khởi động.