VNC: какой порт использует
VNC по умолчанию использует TCP-порт 5900, а каждый следующий дисплей получает порт со сдвигом на единицу: 5901, 5902 и так далее. Номер порта связан с номером дисплея простым правилом: 5900 плюс номер. Ниже — полная таблица портов, веб-доступ через 5800, служебные режимы, проверка занятых портов, настройка брандмауэра и подключение через SSH-туннель.
Содержание
Разделы идут от базового порта к исключениям, проверке и защите соединения.
- Основной порт VNC — 5900
- Таблица портов и дисплеев
- Почему порт связан с номером дисплея
- Веб-доступ через порт 5800
- Служебные порты 5999 и 5500
- Как узнать, какой порт слушает сервер
- Порт в брандмауэре
- Подключение через SSH-туннель
- Порт и безопасность
- Если подключение не проходит
- Порты других протоколов
- Вопросы и ответы
Начнём с базового значения, от которого считаются все остальные.
Основной порт VNC — 5900
Протокол RFB, на котором работает VNC, по умолчанию слушает TCP-порт 5900. Этот номер закрепился за технологией и указывается в документации большинства серверов и клиентов.
Если в клиенте ввести только IP-адрес без порта, программа обычно пробует именно 5900. Для первого дисплея этого достаточно: сервер отвечает и запрашивает пароль.
Порт можно изменить. В большинстве серверов для этого есть параметр запуска, а в клиенте достаточно указать нужное значение через двоеточие после адреса.
В адресе легко перепутать два формата записи. Запись server:1 означает дисплей, и клиент сам пересчитает его в порт 5901. Запись server:5901 означает порт напрямую. Оба варианта приводят к одному результату, но второй понятнее при нестандартных настройках.
Важно! 5900 — порт по умолчанию, а не единственный допустимый. Некоторые администраторы специально переносят сервер на другой номер, чтобы снизить число автоматических сканирований.
Таблица портов и дисплеев
Каждый дисплей получает собственный порт. Правило простое: к 5900 прибавляется номер дисплея, который в интерфейсе обозначается двоеточием.
| Порт | Дисплей | Назначение |
|---|---|---|
| 5900 | :0 | первый дисплей, значение по умолчанию |
| 5901 | :1 | второй дисплей, часто создаётся автоматически |
| 5902 | :2 | третий дисплей, отдельный сеанс |
| 5903 | :3 | четвёртый дисплей |
| 5904 | :4 | пятый дисплей |
| 5905 | :5 | шестой дисплей |
| 5906 | :6 | седьмой дисплей |
| 5800 и выше | :0 и далее | веб-доступ к тому же дисплею |
Диапазон 5900–5906 покрывает типовые случаи. На практике дисплеев бывает больше, и тогда используются 5907, 5908 и следующие номера.
Почему порт связан с номером дисплея
Номер дисплея в Unix-подобных системах обозначает отдельный графический экран. В VNC эта логика сохранена: один сервер может обслуживать несколько независимых сеансов, и каждому нужен свой сетевой адрес.
Смещение на 5900 выбрано исторически. Клиент получает номер дисплея и сам вычисляет порт, поэтому в адресе достаточно указать, например, server:2 — программа обратится к 5902.
Отсюда типичная ошибка. Администратор запустил сервер на дисплее :1, а клиент подключается к 5900 и получает отказ. Проверка списка дисплеев решает проблему быстрее, чем перебор портов.
Веб-доступ через порт 5800
Раньше вместе с VNC-сервером запускался веб-интерфейс на порту 5800. Он отдавал страницу с Java-апплетом, который открывал сеанс прямо в браузере, без установки клиента.
Схема работала на портах 5800 плюс номер дисплея: 5800 для :0, 5801 для :1 и так далее. Для своего времени это было удобно, особенно для разового доступа с чужого компьютера.
Сегодня такой подход устарел. Браузеры прекратили поддержку Java-апплетов, поэтому старый веб-интерфейс в большинстве случаев не открывается.
На смену пришли веб-клиенты на JavaScript, например noVNC. Они работают через WebSocket, а сервер публикует их на обычном HTTP-порту или за обратным прокси с TLS.
Важно! Если в инструкции упоминается порт 5800 с Java-апплетом, инструкция устарела. Для браузерного доступа используют веб-клиент на JavaScript и защищённое соединение.
Служебные порты 5999 и 5500
Кроме основного диапазона, некоторые серверы задействуют дополнительные номера. Они относятся к служебным режимам и зависят от реализации.
Порт 5999 встречается у серверов, которые обслуживают подключение к уже существующему сеансу или предоставляют дополнительный канал управления. Порт 5500 используют отдельные реализации для служебных задач, например для обмена данными между компонентами.
Значения не универсальны. Прежде чем открывать их в брандмауэре, стоит посмотреть документацию конкретного сервера: у другого продукта эти же номера могут означать совсем иное.
Как узнать, какой порт слушает сервер
Проверка занимает минуту и избавляет от догадок. Сначала смотрят, какие порты открыты на самой машине.
В Linux подойдут команды ss или netstat с фильтром по номеру. В Windows используют netstat с ключом -ano, а затем сопоставляют идентификатор процесса с именем программы в списке задач.
- ss -tlnp — список слушающих TCP-портов с процессами.
- netstat -ano — те же данные в Windows.
- lsof -i :5900 — какая программа заняла конкретный порт.
Второй шаг — проверка извне. С другого компьютера в той же сети подключаются клиентом к адресу и порту. Если соединение устанавливается и появляется запрос пароля, порт открыт.
Третий шаг — параметры запуска сервера. У TigerVNC порт задаётся ключом -rfbport, у других серверов есть аналогичные опции в конфигурационном файле.
В Windows проверку удобно делать командой Test-NetConnection с указанием адреса и порта. Она показывает, устанавливается ли TCP-соединение, и сразу отделяет проблему сети от проблемы клиента.
Порт в брандмауэре
Открытый сервер и закрытый порт — частая причина отказа. Правило добавляют на той машине, где работает VNC-сервер.
В Windows создают правило входящего подключения для TCP и нужного порта: например, 5900, если сервер работает на первом дисплее. В Linux с ufw достаточно разрешить порт командой allow 5900/tcp.
Открывать порт стоит только для доверенных адресов. Если доступ нужен из другой сети, правило ограничивают диапазоном офисных адресов или адресом VPN-шлюза, а не всем интернетом.
В облаке к брандмауэру добавляется второй уровень — группа безопасности. Правило в ней открывает порт для подсети, а локальный брандмауэр пропускает трафик уже внутри виртуальной машины. Закрыть нужно оба уровня, иначе подключение не пройдёт.
Важно! Порт 5900, открытый в интернет, регулярно попадает под автоматический перебор паролей. Ограничение по адресам и туннель снижают этот риск сильнее, чем смена номера порта.
Подключение через SSH-туннель
Туннель решает две задачи сразу: скрывает порт от внешней сети и шифрует трафик. Схема простая: клиент подключается к локальному порту, а SSH передаёт данные на удалённую машину.
Команда выглядит так: ssh -L 5901:localhost:5901 user@server. После её выполнения VNC-клиент открывают на адрес localhost:5901.
Номера в команде можно менять. Левая часть — локальный порт на компьютере пользователя, правая — адрес и порт на стороне сервера. Если сервер слушает только localhost, туннель остаётся единственным способом подключения.
Проверить работу легко: при активном туннеле клиент подключается к localhost, а на сервере порт 5900 или 5901 остаётся закрытым для внешних адресов.
Порт и безопасность
Выбор порта влияет на безопасность меньше, чем настройки аутентификации. Смена номера снижает шум в журналах, но не защищает от целенаправленного поиска.
Основные меры выглядят так. Сервер слушает localhost или внутренний интерфейс, доступ идёт через туннель, пароль сложный, а вход по сети ограничен правилами брандмауэра.
Дополнительно стоит проверить, не запущен ли сервер с отключённой аутентификацией. Такая настройка встречается при отладке и оставляет машину открытой для любого, кто знает порт.
Если подключение не проходит
Ошибки при подключении обычно связаны с портом, адресом или фильтрацией. Таблица помогает сузить причину.
| Симптом | Вероятная причина | Что сделать |
|---|---|---|
| Отказ сразу после подключения | не тот номер порта или дисплея | проверить список дисплеев на сервере |
| Соединение зависает | порт закрыт брандмауэром | добавить правило для TCP-порта |
| Порт занят при запуске | дисплей уже используется | взять другой номер дисплея |
| Работает только localhost | сервер слушает петлевой адрес | использовать SSH-туннель |
Отдельный случай — двойной NAT и мобильные сети. Там прямое подключение к порту не работает даже при открытом брандмауэре, и нужен промежуточный узел или туннель.
Порты других протоколов
Для сравнения полезно помнить соседние значения. RDP в Windows слушает 3389, а программы удалённого доступа с собственным протоколом часто используют 443.
PCDesk, российское ПО из Единого реестра российского программного обеспечения, работает по TCP и UDP на порту 443. Это позволяет подключаться в сетях, где нестандартные порты закрыты, а также резервирует канал через WebSocket.
Практический вывод: если 5900 в сети недоступен, VNC можно провести через SSH, а для постоянной работы в организации стоит выбрать программу с протоколом, который проходит фильтрацию.
Вопросы и ответы
Ниже — короткие ответы на частые вопросы.
Какой порт использует VNC по умолчанию?
TCP-порт 5900 для первого дисплея :0. Каждый следующий дисплей получает порт на единицу больше.
Какой порт у второго дисплея?
5901. Правило общее: 5900 плюс номер дисплея, поэтому для :2 это 5902, для :3 — 5903.
Зачем нужен порт 5800?
Раньше на нём работал веб-доступ с Java-апплетом. Сегодня такая схема устарела, и для браузера используют клиенты на JavaScript.
Что означает :0 в адресе VNC?
Это номер дисплея. Сервер сопоставляет его с портом 5900, поэтому в клиенте можно указать как server:0, так и server:5900.
Как подключиться, если порт закрыт провайдером?
Использовать SSH-туннель на разрешённый порт, VPN или программу удалённого доступа, которая работает через 443.
Можно ли изменить номер порта VNC?
Да. Серверы позволяют задать порт параметром запуска или в конфигурации, а клиент принимает номер порта вместе с адресом.
Почему клиент подключается, но экран пустой?
Вероятно, выбран дисплей, на котором нет активного сеанса. Проверьте, какой дисплей занят, и подключитесь к его порту.
Нужно ли открывать порт 5900 в интернет?
Не рекомендуется. Безопаснее держать сервер во внутренней сети, а доступ давать через туннель или VPN с ограничением по адресам.