Cảm ơn bác đã gợi ý, chủ đề kết nối máy In trong các bản Windows 10, 11 thời gian gần đây luôn làm đau đầu anh em ktv, em thì không có môi trường để test nhiều về cái này.
Cái này mới nhưng khá quan trọng với anh em IT Admin , bác nào làm về cái này thì cũng nên tìm hiểu.
* Bắt đầu từ bản Windows 11 22H2 MS đã thay đổi giao thức kết nối mặc định giữa các máy trong mạng và máy In thông qua
RPC over TCP (by default)
*Trước đây sử dụng giao thức mặc định là
RPC over Named Pipes.
RPC over Named Pipes trên Windows 11 22h2 vẫn còn nhưng mặc định bị Disabled, Nếu vẫn muốn dùng giao thức này cho kết nối máy In thì có thể bật lại trong Group Policy hoặc Registry.
Tất nhiên MS không khuyến khích cái này vì kém an toàn hơn so với RPC over TCP vì phải bật insecure Guest logon cho giao thức SMB Ver1,2,3 (
SMB 1,2,3 mặc định bị disabled trong các bản Windows 10 kể từ bản 1709)
*Cấu hình để máy Host 22h2 (Client hoặc Server dùng để shared máy In) có thể Listening được cả 2 loại kết nối
RPC over TCP và
RPC over Named Pipes thì chạy lệnh sau trong CMD (admin).
Mã:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcProtocols /t REG_DWORD /d 0x7 /f
* Nếu muốn enable giao thức
RPC over Named Pipes như trước đây thì dùng lệnh này.
Mã:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcUseNamedPipeProtocol /t REG_DWORD /d 1 /f
(áp dụng cho cả host và client)
*Một lưu ý quan trọng đối với giao thức RPC over Named Pipes là để kết nối thành công máy In (shared) trong mạng LAN là phải tắt cái
authorization level for printer cho máy chủ host.
Mã:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print" /v RpcAuthnLevelPrivacyEnabled /t REG_DWORD /d 0 /f
(Không khuyến nghị vì không an toàn do lỗ hổng bảo mật
CVE-2021-1678 Windows Print Spooler Spoofing Vulnerability )
Ngoài ra còn phải bật cho phép Insecure Guest Logon cho giao thức SMB2, SMB3 (Vốn bị Disabled) bằng lệnh sau.
Mã:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v AllowInsecureGuestAuth /t REG_DWORD /d 1 /f
*Đối với giao thức RPC over TCP thì mặc định hệ thống sẽ communicate thông qua dynamic Port (từ port 49152-đến port 65535) và kiểu Xác thực
negotiate authentication.
Nếu không muốn dùng Dynamic port thì người dùng có thể Set Specific Port như sau.
Mã:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v RpcTcpPort /t REG_DWORD /d <port number> /f
(port number từ 49152 =>65535)
Mặc định hệ thống sẽ dùng phương thức xác thực
negotiate authentication, để chuyển thành phương thức xác thực
Kerberos authentication thì dùng lệnh sau sẽ an toàn hơn.
Mã:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v ForceKerberosForRpc /t REG_DWORD /d 1 /f
(2 cái này là tùy chọn, không bắt buộc)
Trên đây là hướng dẫn của MS dành cho kết nối với máy In được shared trong mạng với 2 giao thức mới và cũ cho bản Windows 11 22H2, không phải do em nghĩ ra.
Ngoài Registry thì tất cả các config trên đều có trong Group Policy ở đường dẫn sau, nếu các thích dùng GP hơn thì chỉnh trong đây.
Computer Configuration >
Administrative Templates >
Printers >