Rust вызывает больше путаницы, чем большинство игр, потому что использует три разных порта для трёх разных задач, причём один из них работает по TCP, а остальные — по UDP. Если открыть только игровой порт, к серверу можно будет подключиться, введя IP-адрес вручную, но в браузере серверов он не появится.
Порты
| Порт | Протокол | Назначение | Открывать? |
|---|---|---|---|
| 28015 | UDP | Игра: через него подключаются игроки | Да |
| 28017 | UDP | Запросы Steam (query): благодаря им сервер попадает в браузер сообщества | Да |
| 28016 | TCP | RCON / веб-консоль | Только если пользуетесь им снаружи |
| 28083 | TCP | Приложение Rust+ | Только если нужен Rust+ |
Два замечания к таблице:
- Порт запросов по умолчанию не зафиксирован. Если не указать
+server.queryport, Rust выберет порт выше наибольшего из игрового порта и порта RCON — при обычной установке это 28017. Если вы меняли какой-то из них, пересчитайте или задайте порт вручную. - Rust+ слушает порт, указанный в
+app.port. Если ничего не указано, используется наибольший из игрового порта и порта RCON плюс 67, то есть 28083 при стандартной установке.
Windows (PowerShell от имени администратора)
# Игра и запросы: самое необходимое
New-NetFirewallRule -DisplayName "Rust game UDP 28015 (in)" -Direction Inbound -Protocol UDP -LocalPort 28015 -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "Rust query UDP 28017 (in)" -Direction Inbound -Protocol UDP -LocalPort 28017 -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "Rust game UDP 28015 (out)" -Direction Outbound -Protocol UDP -LocalPort 28015 -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "Rust query UDP 28017 (out)" -Direction Outbound -Protocol UDP -LocalPort 28017 -Action Allow -Profile Any
А если вы будете пользоваться RCON или Rust+ снаружи (только в этом случае):
New-NetFirewallRule -DisplayName "Rust RCON TCP 28016 (in)" -Direction Inbound -Protocol TCP -LocalPort 28016 -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "Rust+ TCP 28083 (in)" -Direction Inbound -Protocol TCP -LocalPort 28083 -Action Allow -Profile Any
Linux
# Ubuntu / Debian
ufw allow 28015/udp
ufw allow 28017/udp
ufw allow 28016/tcp # только если пользуетесь RCON снаружи
# AlmaLinux / Rocky
firewall-cmd --permanent --add-port=28015/udp
firewall-cmd --permanent --add-port=28017/udp
firewall-cmd --permanent --add-port=28016/tcp
firewall-cmd --reload
# Слушает?
ss -lntup | grep -E '28015|28016|28017'
RCON — с осторожностью
RCON даёт полный контроль над консолью сервера. Если открыть его в интернет с коротким паролем, через несколько дней кто-нибудь его подберёт и сотрёт вам карту. Задайте длинный уникальный пароль в +rcon.password, а если RCON пользуетесь только вы, лучше подключайтесь через SSH-туннель:
ssh -L 28016:localhost:28016 root@VASH_IP
Так вы подключаетесь своей программой для RCON к localhost:28016, ничего не открывая всему миру.
Сервера нет в браузере сообщества
- Не открыт порт запросов (UDP 28017). Самая частая причина: при открытом игровом порте можно зайти по IP-адресу, но Steam не показывает сервер в списке.
- Неверный протокол. Игровой порт и порт запросов работают по UDP. Правило для TCP 28015 не открывает ничего полезного.
- Сервер появляется не сразу. После запуска Steam может индексировать его несколько минут. Дайте ему время, прежде чем что-то менять.
- Только что был вайп. Сервер перезапускается и заново регистрируется, так что ненадолго пропасть из списка — это нормально.
- Фильтрация AntiDDoS: вкладка Безопасность вашей услуги. Если у вас есть фильтры, созданные вручную, в них должны быть 28015 и 28017 по UDP.
Подбирая машину перед вайпом, учтите одну вещь: потребление ресурсов Rust растёт на протяжении всего цикла, потому что всё, что строят игроки, остаётся на карте. Наш калькулятор для Rust это учитывает.