Windows: Сопоставление сетевого трафика IP-адреса и порта с другим IP-адресом и портом на локальной машине

Windows: Сопоставление сетевого трафика IP-адреса и порта с другим IP-адресом и портом на локальной машине

В Windows мне нужно сопоставить весь трафик одного IP-адреса (например, 10.255.255.255) с другим (например, 127.0.0.1).

Я наткнулся на netsh interface portproxy и попробовал его.

netsh interface portproxy add v4tov4 listenaddress=10.255.255.255 listenport=7073 connectaddress=127.0.0.1 connectport=7071

Цель состоит в том, что если пользователь отправляет какой-либо пакет, 10.255.255.255:7073это как если бы он отправлял пакеты127.0.0.1:7071

netsh interface portproxy show all

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
10.255.255.255  7073        127.0.0.1         7071

Я также добавил правило брандмауэра для порта 7073.

netsh advfirewall firewall add rule name="7073 port" protocol=TCP dir=in localport=7073 action=allow

Это в Windows 11.

Результаты netstat -na|find "7073" пусты, а тот же результат для 7071 выглядит следующим образом:

netstat -na|find "7071"
  TCP    0.0.0.0:7071           0.0.0.0:0              LISTENING

В моем приложении я сначала попытался из postman отправить запрос на 10.255.255.255:7073 и у меня возник таймаут. Тот же запрос можно успешно отправить на 127.0.0.1:7071.

Если я подключаюсь к 7073 через telnet, он не может к нему подключиться.

telnet 10.255.255.255 7073
Connecting To 10.255.255.255...Could not open connection to the host, on port 7073: Connect failed

Я проверил, IP Helperслужба также работает.

Мое намерение заключается в том, что если пользователи уже могли отправлять запросы на 127.0.0.1:7071, после переадресации портов они могут отправлять запросы на 10.255.255.255:7073и видеть то же самое поведение. Мое приложение на самом деле отправляет HTTP-запросы.

Обратите внимание, что НИКАКАЯ служба на самом деле не прослушивает 7073входящий трафик. Но в этом и суть, я хочу, чтобы любой, кто отправляет что-либо на этот порт (даже если его никто не прослушивает), отправлял трафик 7071(на который кто-то прослушивает).

Правилен ли мой подход относительно сопоставления IP:порта с другим для пересылки всего сетевого трафика туда и обратно с исходного IP на целевой IP?

Если да, то что здесь может быть не так?

Спасибо

решение1

Проблема с netshкомандой возникает при указании параметров listenaddressи connectaddress, которые предназначены для один конкретный IP-адрес, а не для диапазона адресов.

Таким образом, использованный вами синтаксис 10.255.255.255указывает именно этот IP-адрес, а не весь диапазон 10.* адресов.

Документация для Команды netsh interface portproxy - добавьте v4tov4 говорит следующее:

connectaddress

УказываетIPv4-адреск которому подключаться. Допустимые значения: IP-адрес, NetBIOS-имя компьютера или DNS-имя компьютера. Если адрес не указан, по умолчанию используется локальный компьютер.

прослушиватьадрес

УказываетIPv4-адресдля которого нужно прослушивать. Допустимые значения: IP-адрес, NetBIOS-имя компьютера или DNS-имя компьютера. Если адрес не указан, по умолчанию используется локальный компьютер.

Если вы хотите заново создать portproxy, вам сначала нужно будет удалить тот, который вы создали с помощью удалить v4tov4.

Связанный контент