Подробный гайд: выделенный сервер Battlefield 2142 на Rocky Linux
Важные предварительные замечания
- Официальные серверы EA отключены в 2014 году. Выделенный сервер работает для локальных/частных сессий. Для подключения игроков через современный браузер потребуется патч-клиент (например,
BF2142UnlockerилиProject 2142). - Серверный бинарник 32-битный. На x86_64 системе потребуется установка multilib-зависимостей.
- Рекомендуется выделять отдельного пользователя, не
root, и запускать сервер черезsystemd. - Минимальные ресурсы: 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
- Подключитесь из клиента по прямому IP:
connect <IP_СЕРВЕРА>:16567 - Проверьте 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, они восстанавливают работу списка серверов и античита.