Подробный гайд: выделенный сервер Battlefield 2142 на Rocky Linux

Настройка выделенного сервера Battlefield 2142 на Rocky Linux: зависимости, конфигурация, systemd, SELinux, firewalld

2026.04.28                  


Подробный гайд: выделенный сервер Battlefield 2142 на Rocky LinuxПодробный гайд: выделенный сервер Battlefield 2142 на Rocky Linux

Важные предварительные замечания

  1. Официальные серверы EA отключены в 2014 году. Выделенный сервер работает для локальных/частных сессий. Для подключения игроков через современный браузер потребуется патч-клиент (например, BF2142Unlocker или Project 2142).
  2. Серверный бинарник 32-битный. На x86_64 системе потребуется установка multilib-зависимостей.
  3. Рекомендуется выделять отдельного пользователя, не root, и запускать сервер через systemd.
  4. Минимальные ресурсы: 2 ядра, 2 ГБ ОЗУ, 15–20 ГБ диска, стабильный канал ≥5 Мбит/с.

Шаг 1: Подготовка системы и установка зависимостей

# Обновление пакетов
sudo dnf update -y

# Включение репозитория с 32-битными пакетами (CodeReady Builder)
sudo dnf config-manager --set-enabled crb

# Установка обязательных i686-библиотек
sudo dnf install -y \
  glibc.i686 libstdc++.i686 zlib.i686 libgcc.i686 \
  ncurses-compat-libs.i686 libX11.i686 libXext.i686 \
  screen wget tar

Если dnf не находит пакеты, проверьте, что crb включён: sudo dnf repolist | grep crb


Шаг 2: Создание пользователя и распаковка сервера

# Создаём выделенного пользователя без прав sudo
sudo useradd -m -s /bin/bash -c "BF2142 Server" bf2142srv

# Переходим в его каталог
sudo su - bf2142srv
mkdir -p ~/bf2142ded && cd ~/bf2142ded

Поместите архив с официальным серверным дистрибутивом (обычно BF2142_Dedicated_Server.zip или bf2142_lnxded.tar.gz) в ~/bf2142ded и распакуйте:

tar -xzf bf2142_lnxded.tar.gz --strip-components=1
chmod +x bf2142_lnxded

Структура должна содержать:

~/bf2142ded/
├── bf2142_lnxded          # главный бинарник
├── mods/
│   └── bf2142/
│       └── settings/
│           └── serversettings.con
└── logs/

Шаг 3: Базовая конфигурация сервера

Отредактируйте mods/bf2142/settings/serversettings.con:

sv.serverName "BF2142 | Rocky Linux | Denis Server"
sv.maxPlayers 64
sv.port 16567
sv.gameMode "conquest64"
sv.mapList "mp_01,mp_02,mp_03,mp_04,mp_05"
sv.password ""
sv.rconPassword "ВАШ_СЛОЖНЫЙ_ПАРОЛЬ_RCON"
sv.punkBuster 0
sv.autoRotate 1
sv.voteEnabled 1
sv.friendlyFire 100
sv.teamBalance 1

Список карт и режимов можно расширить. Файл maplist.con (если есть) синхронизируйте с sv.mapList.


Шаг 4: Настройка брандмауэра и SELinux

Firewalld

sudo firewall-cmd --permanent --add-port=16567/udp
sudo firewall-cmd --permanent --add-port=29900/udp
sudo firewall-cmd --reload
  • 16567/udp – основной игровой трафик
  • 29900/udp – запросы мониторинга/браузера серверов

SELinux (Rocky Linux по умолчанию в режиме Enforcing)

Бинарник может блокироваться политикой.

Безопасный способ разрешить выполнение:

# 1. Разрешаем исполнение в домашнем каталоге
sudo chcon -Rt bin_exec_t /home/bf2142srv/bf2142ded

# 2. Если сервер всё равно блокируется, создаём кастомный модуль:
sudo ausearch -c 'bf2142_lnxded' --raw | audit2allow -M bf2142ded
sudo semodule -i bf2142ded.pp

Не используйте setenforce 0 в продакшене. Аудит через audit2allow безопаснее.


Шаг 5: Создание systemd-сервиса

Создайте файл /etc/systemd/system/bf2142ded.service:

[Unit]
Description=Battlefield 2142 Dedicated Server
After=network.target
Wants=network.target

[Service]
Type=simple
User=bf2142srv
Group=bf2142srv
WorkingDirectory=/home/bf2142srv/bf2142ded
ExecStart=/home/bf2142srv/bf2142ded/bf2142_lnxded +menu 0 +dedicated 1
Restart=on-failure
RestartSec=15
LimitNOFILE=4096
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Активация:

sudo systemctl daemon-reload
sudo systemctl enable --now bf2142ded

Проверка статуса и логов:

sudo systemctl status bf2142ded
sudo journalctl -u bf2142ded -f --since "10 min ago"

Шаг 6: Проверка работоспособности

1. Убедитесь, что процесс слушает порт:
   ss -ulnp | grep 16567
  1. Подключитесь из клиента по прямому IP: connect <IP_СЕРВЕРА>:16567
  2. Проверьте RCON-доступ (опционально): rcon <IP> 16567 "ВАШ_RCON_PASS" status

Шаг 7: Устранение типовых неполадок

Симптом Причина Решение
error while loading shared libraries: libstdc++.so.6 Отсутствует 32-битная C++ библиотека sudo dnf install libstdc++.i686
cannot execute binary file: Exec format error Запуск на ARM или без multilib Убедитесь, что система x86_64 и установлен glibc.i686
Сервер запускается, но не виден в браузере Официальные мастер-серверы отключены Используйте клиент-патч или подключайтесь по прямому IP
SELinux блокирует запуск Политика не разрешает исполнение в /home Примените chcon -Rt bin_exec_t или audit2allow
Высокий ping/потеря пакетов Брандмауэр/роутер режет UDP Откройте 16567/udp и 29900/udp на всех промежуточных устройствах
Сервер падает с Segmentation fault Неполный патч или повреждённые .con файлы Проверьте целостность mods/, обновите до последнего патча 1.5

Дополнительные рекомендации

  • Логи: Сервер пишет в logs/server.log и logs/console.log. Настройте logrotate для ротации.
  • Бэкап конфигурации: rsync -avz /home/bf2142srv/bf2142ded/mods/bf2142/settings/ /backup/bf2142_conf/
  • Мониторинг: Используйте htop, nload, или prometheus-node-exporter для отслеживания нагрузки.
  • Обновление: При обновлении Rocky Linux проверяйте совместимость glibc.i686 и libstdc++.i686.
  • Сообщество: Для стабильной работы в 2026 году рекомендуется использовать патч-клиент BF2142Unlocker (v3.x+) или форк Project 2142, они восстанавливают работу списка серверов и античита.