Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Định cấu hình chuyển tiếp cổng trên Windows

Bạn có thể định cấu hình chuyển tiếp cổng mạng trong tất cả các phiên bản Windows mà không cần sử dụng các công cụ của bên thứ ba. Sử dụng quy tắc chuyển tiếp cổng, bạn có thể chuyển hướng kết nối TCP đến (IPv4 hoặc IPv6) từ cổng TCP cục bộ đến bất kỳ số cổng nào khác hoặc thậm chí đến một cổng trên máy tính từ xa. Hơn nữa, Windows không cần thiết phải có một dịch vụ lắng nghe trên một cổng TCP cụ thể. Chuyển tiếp cổng Windows thường được sử dụng nhất để vượt qua tường lửa hoặc để ẩn máy chủ nội bộ hoặc dịch vụ khỏi mạng bên ngoài (NAT / PAT).

Trong thế giới Linux, chuyển tiếp cổng được định cấu hình khá đơn giản bằng iptables hoặc firewalld . Trên hệ thống Windows Server, Dịch vụ Định tuyến và Truy cập Từ xa (RRAS) thường được sử dụng để định cấu hình chuyển hướng cổng. Tuy nhiên, có một cách dễ dàng hơn để định cấu hình chuyển tiếp cổng, cách này hoạt động tốt trong bất kỳ phiên bản Windows nào.

Cách định cấu hình chuyển tiếp cổng trên Windows 10 bằng Netsh Portproxy?

Bạn có thể định cấu hình chuyển tiếp cổng trong Windows bằng Portproxy chế độ của Netsh yêu cầu. Cú pháp lệnh như sau:

netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
ở đâu

  • địa chỉ nghe - là địa chỉ IP cục bộ để lắng nghe kết nối đến (hữu ích nếu bạn có nhiều NIC hoặc nhiều địa chỉ IP trên một giao diện);
  • cổng nghe - số cổng TCP lắng nghe cục bộ (kết nối đang chờ bật);
  • địa chỉ kết nối - là địa chỉ IP cục bộ hoặc từ xa (hoặc tên DNS) mà bạn muốn chuyển hướng kết nối đến;
  • cổng kết nối - là một cổng TCP mà kết nối từ listenport tới được chuyển tiếp tới.
Sử dụng netsh interface portproxy add v4tov6 / v6tov4 / v6tov6 tùy chọn, bạn có thể tạo quy tắc chuyển tiếp cổng giữa địa chỉ IPv4 và IPv6.

Giả sử nhiệm vụ của chúng tôi là làm cho dịch vụ RDP phản hồi trên một cổng không chuẩn, chẳng hạn như 3340 (cổng có thể được thay đổi trong cài đặt của dịch vụ Máy tính Từ xa, nhưng chúng tôi đang sử dụng RDP để dễ dàng chứng minh cổng hơn chuyển tiếp). Để thực hiện việc này, chúng ta cần chuyển hướng lưu lượng đến từ cổng TCP 3340 sang một cổng cục bộ khác - 3389 (đây là số cổng RDP mặc định).

Xin lưu ý rằng số cổng cục bộ mà bạn đã chỉ định trong cổng nghe sẽ không được nghe (sử dụng) bởi một dịch vụ hoặc quy trình khác. Kiểm tra xem số cổng không được sử dụng:

netstat -na|find "3340"

Ngoài ra, bạn có thể kiểm tra xem cổng có đang lắng nghe cục bộ hay không bằng cách sử dụng lệnh ghép ngắn PowerShell Test-NetConnection:

Test-NetConnection -ComputerName localhost -Port 3340

Định cấu hình chuyển tiếp cổng trên Windows

Để tạo quy tắc chuyển tiếp cổng trên Windows 10, hãy chạy dấu nhắc lệnh với tư cách quản trị viên và chạy lệnh sau:

netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110

Định cấu hình chuyển tiếp cổng trên Windows

Trong đó 10.10.1.110 - địa chỉ IP hiện tại của máy tính này.

Bây giờ, sử dụng công cụ netstat để kiểm tra xem Windows hiện đang lắng nghe trên cổng cục bộ 3340:

netstat -ano | findstr :3340

Định cấu hình chuyển tiếp cổng trên Windows

Lưu ý . Nếu lệnh này không trả về kết quả nào và chuyển tiếp cổng qua giao diện netsh portproxy không hoạt động, hãy đảm bảo rằng bạn có iphlpsvc (Trình trợ giúp IP) đang chạy trên máy tính của bạn.

Định cấu hình chuyển tiếp cổng trên Windows

Hỗ trợ IPv6 phải được bật trên giao diện mạng mà quy tắc chuyển tiếp cổng được tạo.

Định cấu hình chuyển tiếp cổng trên Windows

Đây là những điều kiện tiên quyết cho hoạt động chính xác của chuyển tiếp cổng. Nếu không có dịch vụ Trình trợ giúp IP và không bật hỗ trợ IPv6, chuyển hướng cổng sẽ không hoạt động.

Để chuyển tiếp cổng hoạt động trên Windows Server 2003 / XP, bạn phải đặt thêm IPEnableRouter tham số thành 1 trong khóa đăng ký HKLM \ SYSTEM \ ControlSet001 \ Services \ Tcpip \ Parameters.

Bạn có thể tìm hiểu quá trình đang lắng nghe trên cổng được chỉ định bằng cách sử dụng PID của nó (trong ví dụ của chúng tôi, PID là 636):

tasklist | findstr 636

Hãy thử kết nối với cổng này từ một máy tính từ xa bằng bất kỳ ứng dụng khách RDP nào. Cổng 3340 phải được chỉ định làm số cổng RDP. Nó được chỉ định sau dấu hai chấm theo sau địa chỉ máy chủ RDP. Ví dụ:10.10.1.110:3340

Định cấu hình chuyển tiếp cổng trên Windows

Kết nối RDP sẽ được thiết lập thành công.

Nếu bạn muốn chuyển tiếp kết nối TCP đến với một máy tính từ xa, hãy sử dụng lệnh sau:

netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101

Quy tắc này sẽ chuyển hướng tất cả lưu lượng RDP đến (từ cổng TCP cục bộ 3389) từ máy tính này đến máy chủ từ xa có địa chỉ IP 192.168.1.100.

Ngoài ra, bạn có thể sử dụng đường hầm SSH của Windows để chuyển tiếp cổng cục bộ đến máy chủ từ xa.

Quản lý Quy tắc Chuyển tiếp Cổng trong Windows

Quan trọng . Đảm bảo rằng tường lửa của bạn (Tường lửa của Bộ bảo vệ Windows của Microsoft hoặc tường lửa của bên thứ ba thường được bao gồm trong phần mềm chống vi-rút) cho phép các kết nối đến cổng mới. Bạn có thể thêm quy tắc cho phép mới vào Tường lửa của Bộ bảo vệ Windows bằng lệnh:

netsh advfirewall firewall add rule name=”forwarded_RDPport_3340” protocol=TCP dir=in localip=10.1.1.110  localport=3340 action=allow

Hoặc sử dụng lệnh ghép ngắn New-NetFirewallRule PowerShell:
New-NetFirewallRule -DisplayName "forwarder_RDP_3340" -Direction Inbound -Protocol TCP –LocalPort 3340 -Action Allow

Khi tạo quy tắc tường lửa đến cho cổng 3340 thông qua giao diện đồ họa Tường lửa của Bộ bảo vệ Windows, không cần chương trình nào được liên kết với nó. Cổng này chỉ được trình điều khiển mạng lắng nghe.

Bạn có thể tạo bất kỳ số lượng quy tắc chuyển tiếp cổng Windows nào. Tất cả các quy tắc portproxy của giao diện netsh là ổn định và được lưu trữ trong hệ thống sau khi khởi động lại Windows.

Ngoài ra, có những trường hợp khi trong Windows Server 2012 R2, quy tắc chuyển tiếp cổng được đặt lại sau khi máy chủ khởi động lại. Trong trường hợp này, bạn cần kiểm tra xem có ngắt kết nối định kỳ trên giao diện mạng hay không và địa chỉ IP có thay đổi khi HĐH khởi động hay không (tốt hơn là sử dụng IP tĩnh thay vì DHCP động). Để giải quyết vấn đề, tôi phải thêm một tập lệnh hàng loạt vào Bộ lập lịch tác vụ Windows với các quy tắc portproxy giao diện netsh chạy khi khởi động hệ thống.

Để hiển thị danh sách tất cả các quy tắc chuyển tiếp cổng TCP đang hoạt động trên Windows, hãy chạy lệnh:

netsh interface portproxy show all

Trong trường hợp của chúng tôi, chỉ có một quy tắc chuyển tiếp từ cổng cục bộ 3340 đến 3389:

Listen on ipv4:             Connect to ipv4:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
10.1.1.110     3340        10.1.1.110     3389

Định cấu hình chuyển tiếp cổng trên Windows

Mẹo . Bạn cũng có thể liệt kê các cài đặt chuyển tiếp cổng trong portproxy như sau:

netsh interface portproxy dump

#========================
# Port Proxy configuration
#========================
pushd interface portproxy
reset
add v4tov4 listenport=3340 connectaddress=10.1.1.110 connectport=3389
popd
# End of Port Proxy configuration

Định cấu hình chuyển tiếp cổng trên Windows

Để xóa một quy tắc chuyển tiếp cổng cụ thể:

netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110

Để xóa tất cả các quy tắc ánh xạ hiện có và xóa hoàn toàn bảng quy tắc chuyển tiếp cổng:

netsh interface portproxy reset

Quan trọng . Lược đồ chuyển tiếp này chỉ hoạt động cho các cổng TCP. Bạn sẽ không thể chuyển tiếp các cổng UDP theo cách này. Ngoài ra, bạn không thể sử dụng giao diện loopback 127.0.0.1 làm connectaddress .

Bạn có thể sử dụng Windows Server với vai trò RRAS và NAT được cài đặt để định cấu hình chuyển tiếp cổng cho lưu lượng UDP. Bạn có thể định cấu hình chuyển tiếp cổng giữa các giao diện máy chủ bằng cách sử dụng snap-in đồ họa (rrasmgmt.msc ) hoặc bằng lệnh:

netsh routing ip nat add portmapping Ethernet1 udp 0.0.0.0 53 192.168.100.100 53

Một tính năng portproxy khác là cơ hội để làm cho nó trông giống như bất kỳ dịch vụ mạng từ xa nào đang chạy cục bộ.

Ví dụ:hãy chuyển hướng kết nối từ cổng cục bộ 5555 đến máy chủ HTTP từ xa có địa chỉ IP 157.166.226.25 (trang web CNN):

netsh interface portproxy add v4tov4 listenport=5555 connectport=80 connectaddress= 157.166.226.25 protocol=tcp

Bây giờ nếu bạn truy cập https:// localhost:5555 / trong trình duyệt của mình, trang CNN Start sẽ mở ra. Vì vậy, mặc dù trình duyệt đang truy cập vào máy tính cục bộ, nó sẽ mở một trang từ máy chủ web bên ngoài.

Định cấu hình chuyển tiếp cổng trên Windows

Các quy tắc chuyển tiếp cổng cũng có thể được sử dụng để chuyển tiếp một cổng từ địa chỉ IP bên ngoài của NIC vật lý tới cổng của máy ảo chạy trên cùng một máy chủ. Trong Hyper-V, bạn có thể định cấu hình chuyển tiếp cổng ở cấp Virtual Switch (xem bên dưới).

Windows không thể chuyển tiếp một loạt các cổng TCP. Nếu bạn cần chuyển tiếp nhiều cổng, bạn sẽ phải tạo thủ công nhiều quy tắc chuyển tiếp portproxy. Cách dễ nhất là tạo danh sách netsh interface portproxy add các lệnh có số cổng khác nhau trong notepad và sau đó dán chúng vào dấu nhắc lệnh để thực thi.

Chuyển tiếp cổng trong Máy chủ Hyper-V

Khi sử dụng vai trò Hyper-V trên máy tính của bạn (nó có thể được cài đặt trên cả Windows 10 và Windows Server hoặc dưới dạng Hyper-V Server miễn phí), bạn có thể định cấu hình quy tắc chuyển tiếp cổng DNAT bằng PowerShell. Giả sử bạn muốn chuyển hướng tất cả lưu lượng https mà máy chủ Hyper-V của bạn nhận được đến địa chỉ IP của máy ảo đang chạy trên máy chủ. Để thực hiện việc này, hãy sử dụng lệnh Hyper-V StaticMapping.

Trước tiên, bạn cần tạo một Switch ảo với NAT:

New-VMSwitch -Name "HTTPS-NAT" -SwitchType NAT -NATSubnetAddress 192.168.100.0/24

Sau đó, bạn cần kết nối máy ảo cần thiết với vswitch được chỉ định và bật quy tắc dịch địa chỉ cho tất cả các máy ảo được kết nối thông qua công tắc ảo Hyper-V này:

New-NetNat -Name HTTPS-NAT -InternalIPInterfaceAddressPrefix 192.168.100.0/24
Add-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/24" -ExternalPort 443 -Protocol TCP -InternalIPAddress "192.168.100.77" -InternalPort 443 -NatName HTTPS-NAT

Sau khi thực hiện các lệnh PowerShell này, tất cả lưu lượng HTTPS đến cổng 443 của máy chủ Hyper-V sẽ được chuyển tiếp đến địa chỉ IP riêng của máy ảo.