Обмен технологиями

【Сервер】Сопоставление портов

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



1. Концепция сопоставления портов

Сопоставление портов, также известное как переадресация портов, — это технология, которая перенаправляет поток данных с одного сетевого порта на другой сетевой порт. Обычно это используется для служб, работающих за брандмауэром или маршрутизатором, что позволяет внешним устройствам получать доступ к определенным службам во внутренней сети. Сопоставление портов может выполняться внутри локальной сети или между сетями с использованием таких протоколов, как SSH.

1.1 Типы сопоставления портов

  1. Переадресация локального порта

    • Сопоставьте порт на локальном компьютере с портом на удаленном сервере.
    • Пример: изменить локальный порт8080сопоставлен с удаленным сервером80порт, чтобы его можно было передать локальноlocalhost:8080Получите доступ к веб-сервису удаленного сервера.
  2. Удаленная переадресация портов

    • Сопоставьте порт на удаленном сервере с портом на локальном компьютере.
    • Пример: добавьте удаленный сервер2222Сопоставление портов с локальным компьютером22порт, чтобы к службе SSH локального компьютера можно было получить доступ через удаленный сервер.
  3. Динамическая переадресация портов

    • Создайте прокси-сервер SOCKS, через который можно будет получить динамический доступ к портам нескольких удаленных серверов.
    • Пример. Создайте прокси-сервер SOCKS, который позволит браузеру получать доступ к нескольким веб-сайтам удаленных серверов через прокси.

1.2 Сценарии применения сопоставления портов

  1. Удаленный доступ к внутренним сервисам: Благодаря сопоставлению портов из внешней сети можно получить доступ к определенным службам внутри компании или домашней сети, например веб-серверам, серверам баз данных и т. д.

  2. Проникнуть через брандмауэр: посредством сопоставления портов вы можете обойти ограничения брандмауэра и получить доступ к службам, заблокированным брандмауэром.

  3. Повышение безопасности: Сопоставление портов через туннель SSH может зашифровать передачу данных и повысить безопасность.

  4. Балансировка нагрузки и прокси: Балансировщики нагрузки и прокси-серверы часто используют технологию сопоставления портов для распределения и пересылки трафика для повышения надежности и производительности обслуживания.

1.3 Пример

Предположим, что на удаленном сервере работает веб-служба, и порт, который она прослушивает,80 . Чтобы получить доступ к этой службе с вашего локального компьютера, создайте сопоставление локальных портов, используя следующую команду SSH:

ssh -L 8080:localhost:80 user@remote-server
  • 1

Эта команда изменит настройки локального компьютера.8080Сопоставление портов с удаленным сервером80 порт.Теперь откройте его в локальном браузере.http://localhost:8080, что эквивалентно доступу к веб-службе удаленного сервера.

2. Зачем нам нужно выполнять сопоставление портов?

Существует несколько основных причин для сопоставления портов (или перенаправления портов) во время разработки:

  1. Доступ к защищенным сервисам: Некоторые службы на машине разработки могут прослушивать только локальный хост (127.0.0.1 ) и не может быть доступен напрямую извне. Благодаря сопоставлению портов эти службы можно открыть и сделать доступными извне.

  2. безопасность : переадресация портов через SSH-туннель обеспечивает безопасный доступ к внутренним службам без прямого раскрытия службы. Туннель SSH шифрует передачу данных для дополнительной безопасности.

  3. Легко отлаживать : В процессе разработки разработчикам может потребоваться доступ к нескольким службам, работающим на машине разработки. Благодаря сопоставлению портов доступ к этим службам можно получить напрямую локально, без необходимости каждый раз входить на компьютер разработки.

  4. Обход ограничений брандмауэра или сети : В некоторых сетевых средах могут существовать брандмауэры или сетевые ограничения, препятствующие прямому доступу к службам на компьютере разработки. Благодаря туннелированию SSH эти ограничения можно обойти и получить доступ к сервисам.

  5. Многопользовательский доступ: Если нескольким разработчикам требуется доступ к одной и той же службе, сопоставление портов позволяет каждому разработчику получить доступ к службе в своей локальной среде без входа непосредственно на компьютер разработки.

например:

Предположим, на вашей машине разработки работает сервер Jupyter Notebook. Он прослушивает порт 7860, но разрешает только локальный доступ. С помощью следующей команды SSH вы можете сопоставить порт 7860 машины разработки с вашим локальным портом 7860:

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Таким образом, вы можете получить к нему доступ в своем локальном браузере. http://127.0.0.1:7860 для просмотра и использования сервера Jupyter Notebook на вашей машине разработки.

3.Принцип

3.1 [На просторечии] Объяснение принципов

Машина разработки имеет собственнуюоткрытый портиПубличный IP, можно использовать для нашего локального SSH-соединения.

Но в машине разработки, то есть на сервереЗапустить программуКогда его программа находится на серверев определенном портуВ ходе выполнения

Итак, если мы хотим увидеть эффект работы программы на локальном сервере, нам нужно создатьСопоставление портов, когда браузер откроет локальный порт, перенаправьте его на порт сервера для просмотра.

3.2 Принципиальная схема

Вставьте сюда описание изображения

4.Код

ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
  • 1

Например:

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Эта команда используется для создания SSH-туннеля. Ниже приводится подробное объяснение каждой части:

  • ssh: команда, используемая для инициации SSH-соединения.
  • -p 37367: укажите номер порта удаленного хоста для подключения (в данном примере порт 37367).
  • [email protected]: имя пользователя (root) и имя хоста (ssh.intern-ai.org.cn).
  • -CNg: Комбинация опций:
    • -C: Активировать сжатие.
    • -N: Скажите SSH не выполнять удаленные команды, а только переадресацию портов.
    • -g: разрешить удаленным хостам подключаться к перенаправленному порту.
  • -L 7860:127.0.0.1:7860: выполнить переадресацию локального порта и сопоставить порт 7860 локального компьютера с портом 7860 из 127.0.0.1 удаленного хоста.
  • -o StrictHostKeyChecking=no: отключить проверку ключа хоста, что предотвращает появление интерактивных подсказок при первом подключении.

Таким образом, эта команда создаст туннель SSH между локальным компьютером и удаленным хостом, перенаправит локальный порт 7860 на порт 7860 удаленного хоста и не будет выполнять удаленные команды или проверять ключ хоста.

Как показано ниже:
После сопоставления портов отображается программа, работающая на порту сервера 7860.
Вставьте сюда описание изображения