Чи можете ви пересилати один і той же порт №2 на різні внутрішні адреси IP?


14

Якщо я передам порт UDP-порта 80 на своєму ПК, чи можу я отримати доступ до порту 80 з іншого ноутбука?


1
Ні; Пересилаючи порт, ви відправляєте весь трафік на одну адресу. Якщо вам потрібні два пристрої для отримання даних на один і той же порт, тоді вам потрібно переслати їх на один пристрій, який з'єднує ці 2 додаткові пристрої до мережі (скажімо, іншого маршрутизатора, наприклад).
Рамхаунд

1
Порт 8080 можна безпечно використовувати як альтернативу 80 для вторинної системи. Тому направляйте 80 на ПК та 8080 на ноутбук, якщо це потрібно для ваших потреб.
Перемогти

Ви пишете "Якщо я передам UDP порт 80 UDP на своєму ПК, чи можу я отримати доступ до порту 80 з іншого ноутбука?" <--- Ну, очевидно, інакше в чому полягає сенс просування порту.
барлоп

AT Ramhound Дійсно так, добре, так чому б ти не пояснив, як ти це зробив?
барлоп

1
Я рекомендую прийняти відповідь VL-80. Його відповідь дуже хороша. Він відповідає , що ви на самому справі asked-- ніхто не може говорити про те , як він відповідає на те , що ви призначені , щоб запитати.
Девід Бетц

Відповіді:


14

Ви задаєте тут два різних питання.

Чи можете ви пересилати один і той же порт №2 на різні внутрішні адреси IP?

Ні. Подумайте про це. Якщо пакет надходить на вашу зовнішню адресу та порт 80 UDP (якщо вважати, що у вас є лише одна зовнішня IP-адреса), то як ваш маршрутизатор буде знати, на яку з двох внутрішніх IP-адрес він повинен бути пересланий?

Якщо ви хочете розмістити дві різні послуги, вам знадобиться окремий порт для кожного.

Якщо я передам порт UDP-порта 80 на своєму ПК, чи можу я отримати доступ до порту 80 з іншого ноутбука?

Так. Переадресація портів зазвичай стосується лише пакетів, які мають порт 80 на вашій стороні. Коли хтось спробує підключитися до вас, ваш маршрутизатор побачить:

  • вхідний пакет з випадкового порту X іншого комп'ютера на ваш порт 80
  • вихідну відповідь з вашого порту 80 на інший порт X

Але вихідні з'єднання (коли ви відвідуєте веб-сторінку в іншому місці) змінять її з точки зору маршрутизатора.

  • вихідний пакет від випадкового порту X до порту іншого комп'ютера (веб-сервера) 80
  • вхідна відповідь від порту 80 іншого на ваш порт X

Тож переадресація портів зовсім не вплине на них.

(До речі, HTTP зазвичай працює на TCP . Лише в QUIC-експериментах Chrome використовується UDP.)


Знову "на який із двох внутрішніх IP-адрес слід переслати ", чому б не надіслати обидва сервери 192.168.1.100 та сервер 192.168.1.101?
Pacerier

1
@Pacerier: Що робитиме клієнт, коли отримає дві абсолютно різні відповіді? Він автоматично не здійснить два з'єднання, коли програма вимагає лише одного. У кращому випадку він прийме один пакет відповідей і відкине інший, що марно, оскільки ви не можете сказати, який саме сервер ви хотіли ... якщо тільки і .100 і .101 не надають абсолютно однакові послуги (балансування навантаження). У гіршому випадку, друга відповідь навіть перешкоджатиме завершенню першої спроби з'єднання (наприклад, якщо другий сервер продовжує отримувати пакети, призначені для першого, він продовжуватиме відповідати з TCP RST)
користувач1686

1
@Pacerier: Отже, у конкретному випадку балансування навантаження (з майже однаковими серверами), що можна зробити - див. Відповідь VL-80 нижче для більш детальної інформації. Насправді є програми з балансування навантаження, які дублюють початковий пакет і використовують той сервер, який швидше відповів. Але якщо ви хочете таким чином розмістити два різних веб-сайти, це не спрацює, оскільки браузер не надсилає ім'я хоста веб-сайту до довгого часу, коли буде встановлено TCP-з'єднання.
користувач1686

4

Чи можете ви пересилати один і той же порт №2 на різні внутрішні адреси IP?

Так, ви можете абсолютно зробити це з UDP і в деякій мірі з TCP .

Оскільки UDP є протоколом без стану бездротового зв'язку, ви можете прослуховувати певний порт, і як тільки пакет надійде, ви можете його скопіювати та надіслати на два різних внутрішніх пункти призначення. Оскільки немає рукостискань або відстеження стану, усі ці пункти призначення зможуть отримувати ці пакети успішно. Samplicator - одна з програм, яка може зробити це за вас. Зауважте, що це не є чистим переадресацією порту відповідно до його визначення.

Це можливо для TCP , але з деякими обмеженнями - ви можете прослуховувати певний порт і як тільки пакет прийде, ви можете переслати його до певного внутрішнього хоста в пулі. TCP використовує з'єднання, тож коли ви перенаправляєте початковий пакет до певного внутрішнього хоста, тепер необхідно переслати решта пакетів у цьому сеансі на той же внутрішній хост.

Використовуючи цю технологію, ви можете мати кілька серверів сервера для обробки запитів до одного зовнішнього пункту призначення.

Якщо я передам порт UDP-порта 80 на своєму ПК, чи можу я отримати доступ до порту 80 з іншого ноутбука?

Це питання трохи незрозуміле. Якщо ви перенаправляєте трафік зі своєї зовнішньої адреси на один із внутрішніх хостів, то сам цей факт не заважає вам отримати доступ до того ж порту з внутрішньої мережі.

Скажімо, ви пересилаєте порт 80 від Aдо B. У той же час Cви зможете Bбез проблем отримати доступ до порту 80 далі .

     A (external IP)
     |
 ---------
 |       |
 B       C

2
Питання стосується маршрутизаторів. Жоден маршрутизатор класу споживачів не має функції UDP-копіювання / TCP-балансування навантаження, яку ви описуєте, і жодне з цього не називається "переадресація порту".
Джейсон C

4
1) Питання не вказує, чи повинно бути обладнання для споживачів. 2) Незалежно від того, що ви написали техніку, яку я описав твори.
VL-80

2
Жоден маршрутизатор професійного рівня також не матиме цих функцій, якщо тільки пакет не включає лише маршрутизатор. Це не переадресація порту, і маршрутизатори не виконують цих функцій. Питання задалося про "переадресацію порту" і було позначене маршрутизатором . Подумайте про людей, у яких би виникло це те саме питання, знайдіть його і прочитайте свою відповідь, і подумайте, чи допомагаєте ви чи плутаєте. Ваша термінологія все одно неправильна.
Джейсон C

Ви пишете "Це можливо для TCP, ....... після того, як ви переслали початковий пакет до певного внутрішнього хоста, тепер необхідно переслати решта пакетів у цьому сеансі на той же внутрішній хост." <--- То як це можливо з TCP? Ви згадуєте Samplicator для UDP, добре .. так що копіює його для UDP .. Але що ви пропонуєте для TCP?
барлоп

4
Ця відповідь хороша. Я збирався сказати щось подібне. Що стосується UDP, це все, що стосується багатоадресної передачі та IGMP. TCP, так, круглий робін, перехід з ладу тощо ... Так, маршрутизатори можуть це зробити - сьогоднішні маршрутизатори не є сліпими пристроями 90-х. Питання досить розпливчасте, щоб дозволити багаторазове читання, але саме так я і читав qeaction.
Девід Бетц

1

Ви не можете пересилати один і той же порт на кілька IP одночасно, я навіть не бачив маршрутизатор / керований комутатор, який навіть дозволить вам це зробити, не надсилаючи назад помилку конфігурації. Ви можете налаштувати його для декількох IP-адрес, але одночасно може бути включено лише одне з правил переадресації. Таким чином, ви можете відключити можливість включення іншого та навпаки, але це марно. Потрібно турбуватися лише про переадресацію портів, якщо ви хочете отримати доступ до певних портів / послуг на локальному комп'ютері через зовнішню IP-адресу. Скажіть, якщо ви хочете запустити 2 веб-сервери на 2 ваших локальних комп'ютерах і матимете змогу постійно отримувати доступ до обох, найпростіший спосіб зробити це - змінити порти служб, один слухати на порту 80, а інший на 8080 або потрібний порт. 99% послуг дозволять вам розміщувати / слухати будь-який порт, який ви хочете. Якщо ви не вказали порт, він повернеться до сервісу за замовчуванням. Існують і інші більш просунуті способи ведення справ, але це найпростіший спосіб, і прогресивні методи не вважаються і не називаються "переадресацією портів", хто каже, що потрібно по-різному повернутися до школи мереж.


1
"Я навіть не бачив маршрутизатора / керованого комутатора, який навіть дозволить вам це зробити ..." - Побутовий маршрутизатор Technicolor TC7200.U дозволить вам додати конфігурацію переадресації для того ж порту (портів) на різні IP-адреси. Я не впевнений, чи насправді це вперед, хоча.
Джонатан Хрест

-2

Ні. Подумайте про це. Якщо пакет надходить на вашу зовнішню адресу та порт 80 UDP (якщо вважати, що у вас є лише одна зовнішня IP-адреса), то як ваш маршрутизатор буде знати, на яку з двох внутрішніх IP-адрес він повинен бути пересланий?

Якщо ви хочете розмістити дві різні послуги, вам знадобиться окремий порт для кожного.

Як ваш маршрутизатор знає пересилати адреси? Через NAT.

Якщо ви купуєте домен, ви можете встановити це ім'я домену як ім'я комп'ютера та ім'я NETBIOS.

Наприклад, 2 різні комп'ютери, що розміщують веб-сайти на різних внутрішніх, але на тих самих зовнішніх портах, повинні бути названі по домену, або вам доведеться налаштувати свій внутрішній сервер DNS з обома доменами внутрішніх IP-адрес, доданих до записів, до яких підключається маршрутизатор і кожного разу, коли хтось намагається підключитися до маршрутизатори NAT доменне ім'я (не загальнодоступна IP-адреса) передасть з'єднання відповідно.

Ви не можете пересилати абсолютно однакові порти до кількох IP-адрес у одній мережі, але ви можете використовувати ті самі зовнішні порти, якщо внутрішні порти відрізняються, навпаки, коли йдеться про вихідний мережевий трафік


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