переадресація портів у Windows


262

У мене на комп'ютері є дві мережеві дошки:

Основний має локальний ip -> 192.168.1.111 Вторинний має локальний ip -> 192.168.0.200

Основний має підключення до Інтернету, а другий підключений до пристрою з IP 192.168.0.33, він має http-сервер у порту 80.

У мене є головний з'єднання apache-сервера (порт 4422), і я можу отримати доступ з будь-якого місця, що я хочу зараз, коли я виявляю з'єднання з 4422, я хочу перенаправити це з'єднання на 192.168.2.33:80

Як я можу це зробити за допомогою вікон?


Більше інформації можна знайти тут. technet.microsoft.com/en-us/library/cc731068(v=ws.10).aspx
Shankar Damodaran

Відповіді:


507

Я вирішив це, це можна зробити, виконавши:

netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33

Щоб видалити переадресацію:

netsh interface portproxy delete v4tov4 listenport=4422 listenaddress=192.168.1.111

Офіційні документи


21
Просто не забудьте встановити IPv6. Відповідно до цієї статті MS KB , netsh потрібні деякі бібліотеки IPv6 для налаштування функції проксі-порту.
Ренан Мозоне

10
Також ви можете зробити очищення, використовуючи netsh interface portproxy resetабо netsh interface portproxy delete
patrikbeno

7
Я спробував використовувати цю техніку, і поки вона працювала, вона була надзвичайно повільною. Натомість. Я знайшов утиліту під назвою PassPort ( sourceforge.net/projects/pjs-passport ), яка робить той самий тип переадресації портів, пов'язаний з певним NIC, але не має проблем із продуктивністю netsh. Він встановлюється та працює на Win2008SvrR2.
Джеймс Л.

14
Команда вище не працювала для мене ні в Windows7, ні в Windows Server 2003. Мені довелося також вказати параметр Protocol = tcp . Повна команда:netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33 protocol=tcp
alwi

3
Зверніть увагу, що це працює лише на TCP , тому не пощастить, якщо ви хотіли переслати UDP-трафік.
user276648

14

nginx корисний для пересилання HTTP на багато платформ, включаючи Windows. Його легко налаштувати та розширити за допомогою більш досконалої конфігурації. Основна конфігурація може виглядати приблизно так:

events {}

http {
     server {

        listen 192.168.1.111:4422;

        location / {
            proxy_pass http://192.168.2.33:80/;
        }
     }
}

14
Це хороше рішення для переадресації HTTP, але лише для переадресації HTTP (з усіма його застереженнями, наприклад, веб-розетки потребують додаткової конфігурації). Для переадресації HTTPS або інших довільних протоколів (наприклад, RDP) це здебільшого марно.
Улі Келер

2
Однак це неймовірно гарне рішення для переадресації HTTP, тому я радий, що тут.
Кейсі

Чому так? Ви можете транслювати вперед все, що завгодно, включаючи https
user1156544

@uli, про які налаштування ти розмовляєш ... Буде корисно ділитися
user3787216

1
@ UliKöhler Nginx - це інструмент для роз'єднання TCP-з'єднань. Ви можете використовувати його для HTTP, HTTPS, AMQP, WebSockets і будь-якого іншого. Він використовується внутрішньо інструментами для перенаправлення та управління загальним TCP-з'єднанням. Отже, це правильне рішення. Дивіться також netfxharmonics.com/2016/03/nginx
Девід Бетц

1

Я використовував цю маленьку утиліту, коли виникає потреба: http://www.analogx.com/contents/download/network/pmapper/freeware.htm

Востаннє оновлення цієї утиліти було в 2009 році. Я помітив, що на моїй машині Win10 вона іноді зависає, коли інколи відкриваються нові вікна. Крім того, що глюк інтерфейсу, він все одно робить свою роботу чудово.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.