TeamSpeak использует несколько портов, и у каждого своя роль: один — голос, другой — файлы, остальные — служебные. Путаница обычно возникает в двух местах: TCP открывают вместо UDP, и порты сервера путают с портами клиента. Разберём всё по порядку.
Наружу открываются всего два порта. Остальное либо исходящее, либо доступно только с самой машины — вот вся картина одним взглядом.
Порты сервера TeamSpeak 3
Это порты, которые сервер слушает и которые нужно открыть входящими в фаерволе серверной машины.
| Порт | Протокол | Назначение | Открывать наружу? |
|---|---|---|---|
| 9987 | UDP | Голос и весь основной трафик клиентов | Да, обязательно |
| 30033 | TCP | Передача файлов, аватарки, иконки | Да, если нужны файлы |
| 10011 | TCP | ServerQuery (raw, без шифрования) | Нет — только localhost |
| 10022 | TCP | ServerQuery по SSH (шифрованный) | Только при необходимости |
| 10080 | TCP | WebQuery по HTTP | Нет — только localhost |
| 10443 | TCP | WebQuery по HTTPS | Только при необходимости |
| 41144 | TCP | TSDNS — устаревший сервис разрешения имён | Нет (см. ниже) |
Обязательны только первые два. Все остальные официальная документация помечает как optional: обычному игровому серверу они не нужны.
Кроме входящих, сервер сам устанавливает исходящие соединения к инфраструктуре TeamSpeak. Здесь важна версия сервера — в ветке 3.1 адреса и порты сменились, и инструкции, написанные во времена 3.0, до сих пор советуют открывать порт, который давно не используется:
| Куда | Протокол | Удалённый порт | Версии сервера | Назначение |
|---|---|---|---|---|
accounting2.teamspeak.com | TCP | 443 | 3.1.x и новее | Проверка лицензии |
accounting.teamspeak.com | TCP | 2008 | только 3.0.x | Проверка лицензии, устаревшее |
weblist.teamspeak.com | UDP | 2010 | все версии | Публикация в глобальном списке |
Актуальный сервер — 3.13.x, то есть ветка 3.1: ему нужен исходящий 443/TCP, а не 2008. Если исходящие соединения на 443 заблокированы, сервер не сможет проверить лицензию. Weblist (2010/UDP) нужен, только если сервер публикуется в глобальном списке серверов; закрывать его безопасно.
Доменное имя тут важнее адреса: IP за ним уже менялся, поэтому правила firewall пишите по имени или разрешайте исходящий 443 целиком, а не прибивайте к конкретному адресу.
Если на одной машине работает несколько виртуальных серверов, у каждого свой голосовой порт: первый получает 9987, следующие по умолчанию создаются на 9988, 9989 и так далее. Файловый и query-порты общие на всю инсталляцию.
Порты сервера TeamSpeak 6
TeamSpeak 6 Server на момент проверки (август 2026) распространяется в статусе beta — официальный репозиторий прямо называет релиз бета-версией для сбора обратной связи, а встроенная лицензия на 32 слота продлевается на время бета-периода. Основные порты не изменились, а вот интерфейс управления переехал с raw-протокола на веб-API.
| Порт | Протокол | Назначение | Опция конфигурации |
|---|---|---|---|
| 9987 | UDP | Голос | --default-voice-port |
| 30033 | TCP | Передача файлов | --filetransfer-port |
| 10080 | TCP | Query по HTTP | --query-http-port |
| 10443 | TCP | Query по HTTPS | --query-https-port |
| 10022 | TCP | Query по SSH | --query-ssh-port |
Классического raw-ServerQuery на 10011 в TeamSpeak 6 нет. Query-порты в официальных примерах Docker-развёртывания закомментированы — для обычного сервера они не обязательны, и наружу их пробрасывать не нужно. Правило то же, что и для 10011 в третьей версии: интерфейс управления — не для публичного интернета.
Клиент и сервер — разные списки портов
На сервере порты открываются входящими (INPUT): фаервол должен пропускать пакеты, которые приходят от клиентов на 9987/UDP и 30033/TCP.
Клиенту входящие порты не нужны вообще. Домашний роутер и Windows Firewall по умолчанию разрешают исходящие соединения, поэтому на стороне клиента обычно настраивать нечего. Клиент устанавливает исходящие соединения:
| Порт | Протокол | Зачем клиенту |
|---|---|---|
| 9987 | UDP | Подключение к серверу и голос (или нестандартный порт сервера) |
| 30033 | TCP | Скачивание и загрузка файлов, аватарок, иконок |
| 41144 | TCP | Только при подключении через устаревший TSDNS |
Пробрасывать 9987 на роутере нужно только тому, кто держит сервер дома — потому что в этот момент его машина и есть сервер. Игроку, который просто подключается к чужому серверу, проброс портов не нужен; если подключение не работает, причина в другом.
Почему 10011 нельзя открывать наружу
ServerQuery — это не «служебный порт», а полный административный доступ к серверу; что через него можно сделать, разобрано отдельно. Залогинившись на 10011, можно создавать и удалять виртуальные серверы, раздавать права, кикать и банить пользователей, читать список каналов — всё, что умеет админ.
При этом протокол на 10011 — текстовый и нешифрованный: логин и пароль serveradmin летят по сети открытым текстом. Открытый наружу 10011 к тому же круглосуточно сканируют боты, подбирающие пароли, — сервер в ответ плодит записи о банах и флуд-блокировках.
Правильная схема:
- 10011 слушает только
127.0.0.1(вts3server.ini:query_ip=127.0.0.1), либо закрыт фаерволом для всех внешних адресов; - удалённое администрирование — через SSH-туннель до сервера (
ssh -L 10011:127.0.0.1:10011 user@server, дальше подключаться кlocalhost:10011); - либо через шифрованный ServerQuery-SSH на 10022 — но и его стоит ограничить списком доверенных IP;
- файл
query_ip_allowlist.txt(в старых версиях сервера —query_ip_whitelist.txt) должен содержать только localhost и действительно доверенные адреса: попавшие в него IP не ограничиваются защитой от флуда.
Веб-хостинги TeamSpeak и панели управления работают именно так — через localhost на той же машине, а не через открытый в интернет query-порт.
Открываем порты: готовые команды
Ниже — минимальный набор для типового сервера: голос плюс файлы. Query-порты наружу не открываем.
ufw (Ubuntu / Debian)
sudo ufw allow 9987/udp comment 'TeamSpeak voice'
sudo ufw allow 30033/tcp comment 'TeamSpeak file transfer'
sudo ufw reload
sudo ufw status verbose
Если сервера ещё нет и вы читаете это перед установкой, фаервол проще настраивать не отдельно, а по ходу дела: в пошаговой установке TeamSpeak на Ubuntu 24.04 эти же правила ufw ставятся вместе с systemd-автозапуском и бэкапом.
Если нужен шифрованный query-доступ с конкретного адреса (замените 203.0.113.10 на свой IP):
sudo ufw allow from 203.0.113.10 to any port 10022 proto tcp comment 'TeamSpeak query SSH'
iptables
sudo iptables -A INPUT -p udp --dport 9987 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 30033 -j ACCEPT
Явно закрыть raw-query снаружи, оставив localhost:
sudo iptables -A INPUT -p tcp --dport 10011 -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 10011 -j DROP
Правила iptables не переживают перезагрузку сами по себе — сохраните их штатным для вашей системы способом, например пакетом iptables-persistent:
sudo apt install iptables-persistent
sudo netfilter-persistent save
Windows Firewall (netsh)
Команды выполняются в командной строке от имени администратора:
netsh advfirewall firewall add rule name="TeamSpeak Voice" dir=in action=allow protocol=UDP localport=9987
netsh advfirewall firewall add rule name="TeamSpeak FileTransfer" dir=in action=allow protocol=TCP localport=30033
Проверить, что правила создались:
netsh advfirewall firewall show rule name="TeamSpeak Voice"
Как сменить стандартные порты
Менять порты приходится в двух случаях: стандартный порт занят другим процессом или провайдер/сеть режет диапазон.
TeamSpeak 3
Порты задаются в ts3server.ini (если файла нет, запустите сервер один раз с параметром createinifile=1):
default_voice_port=9988
filetransfer_port=30034
query_port=10011
query_ssh_port=10022
query_ip=127.0.0.1
Те же параметры можно передать при запуске:
./ts3server_startscript.sh start default_voice_port=9988 filetransfer_port=30034
После смены не забудьте поправить правила фаервола под новые номера. Голосовой порт уже созданного виртуального сервера меняется отдельно — через настройки виртуального сервера (в клиенте: правка виртуального сервера, поле «Порт»).
TeamSpeak 6
Три равнозначных способа:
# 1. Флаги командной строки
./tsserver --default-voice-port 9988 --filetransfer-port 30034
# 2. Переменные окружения (удобно для Docker)
TSSERVER_DEFAULT_PORT=9988 TSSERVER_FILE_TRANSFER_PORT=30034 ./tsserver
# 3. Постоянный конфиг: сгенерировать tsserver.yaml и править его
./tsserver --write-config-file
Полный список опций — ./tsserver --help и файл CONFIG.md в официальном репозитории. В Docker следите, чтобы внешний порт файлового трансфера совпадал с внутренним (30033:30033) — иначе передача файлов не заработает: сервер сообщает клиенту именно тот порт, на котором слушает сам.
На стороне клиента
Нестандартный порт указывается через двоеточие в адресе подключения:
ts.example.com:9988
TSDNS: почему 41144 больше не нужен
TSDNS — собственный сервис TeamSpeak для привязки красивых имён к адресам серверов, работавший по TCP-порту 41144. Начиная с клиента 3.1, TeamSpeak разрешает адреса через стандартные DNS SRV-записи (_ts3._udp.example.com), и необходимость в отдельном сервисе отпала: официальная документация называет TSDNS устаревшим. Поднимать TSDNS на новых серверах не нужно; порт 41144 актуален только для совместимости со старыми инсталляциями, где он уже используется.
Частые ошибки — короткий чек-лист
| Симптом | Причина |
|---|---|
| «No reply from server» при верном адресе | Не открыт 9987/UDP на сервере, либо открыт как TCP |
| Голос работает, файлы и аватарки — нет | Закрыт 30033/TCP |
| Сервер не стартует, ошибки лицензии в логе | Заблокирован исходящий 443/TCP (на ветке 3.0.x — 2008/TCP) |
| Сервера нет в глобальном списке | Заблокирован исходящий 2010/UDP |
| В логе шквал failed query login | 10011 открыт наружу — закройте и смените пароль serveradmin |
| В Docker не передаются файлы | Внешний порт 30033 проброшен на другой внутренний |
Официальные источники
- Which ports does the TeamSpeak 3 server use? — support.teamspeak.com
- Does TeamSpeak 3 support DNS SRV records? — support.teamspeak.com
- How To Self-Host The TeamSpeak 6 Beta Server — support.teamspeak.com
- teamspeak/teamspeak6-server — официальный репозиторий TeamSpeak 6 Server (beta), файл
CONFIG.mdс полным списком опций