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

Гайд по настройке выделенного сервера Battlefield 2142 на Kali Linux: установка, конфиги, сеть, systemd, устранение проблем.

2026.04.28                  


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

Важное предупреждение:

  • Kali Linux создан для пентеста и безопасности. Он использует rolling-модель обновлений и нестандартные настройки ядра/библиотек, что не рекомендуется для игровых серверов. Технически гайд работает, так как Kali базируется на Debian. Для стабильной работы в продакшене настоятельно рекомендуется использовать Debian 12 или Ubuntu 22.04/24.04 LTS.

Требования

Компонент Значение
ОС Kali Linux (x86_64)
ОЗУ ≥ 1 ГБ (рекомендуется 2 ГБ+)
CPU ≥ 2 ядра
Порты UDP 16567 (игровой), UDP 27900 (query/master)
Права sudo доступ, пользователь без root для запуска сервера
Файлы Серверные файлы BF2142 Linux (из легальной копии игры или архивов)

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

BF2142 использует 32-битные серверные бинарники. На 64-битной Kali необходимо включить мультиархитектуру и установить зависимости.

# Включаем поддержку i386
sudo dpkg --add-architecture i386
sudo apt update

# Устанавливаем 32-битные библиотеки и утилиты
sudo apt install -y \
  libc6:i386 libstdc++6:i386 lib32z1 \
  libncurses5:i386 libtinfo5:i386 \
  lib32gcc1 screen wget unzip tar

Проверка работоспособности 32-битного окружения:

file /usr/lib/i386-linux-gnu/libc.so.6
# Должно содержать: ELF 32-bit LSB shared object

Шаг 2: Загрузка и размещение серверных файлов

Официальные серверы EA отключены, но бинарники доступны в архивах или в комплекте с игрой.

# Создаём директорию и назначаем владельца (не используйте root)
sudo mkdir -p /opt/bf2142-dedicated
sudo chown $USER:$USER /opt/bf2142-dedicated
cd /opt/bf2142-dedicated

# Распакуйте ваш архив сервера сюда. Пример структуры:
# /opt/bf2142-dedicated/
# ├── bf2142_dedicated      # бинарник
# ├── linux32/              # иногда бинарник здесь
# ├── mods/
# └── Settings/

Если бинарник называется bf2142_ded или находится в linux32/, адаптируйте пути в следующих шагах.


Шаг 3: Базовая настройка сервера

Основной конфиг обычно лежит в Settings/server.cfg или mods/bf2142/Settings/server.cfg.

# Пример server.cfg
server.name "Kali BF2142 Dedicated"
server.password ""
server.maxplayers 48
server.port 16567
server.queryport 27900
server.mod bf2142
server.gameMode conquest
server.mapRotation "conquest_lund_16,conquest_shanghai_16,conquest_fort_16,conquest_suez_32"
server.dedicated 1
server.autoRecordDemo 0

Важно:

Убедитесь, что в конфиге нет строк server.masterServer или server.gameSpy, если вы не используете эмулятор мастер-сервера (см. ниже).


Шаг 4: Тестовый запуск

cd /opt/bf2142-dedicated
chmod +x bf2142_dedicated  # или linux32/bf2142_dedicated

# Запуск в foreground для проверки
./bf2142_dedicated +set dedicated 1 +exec server.cfg

Если сервер стартует, вы увидите:

[Server] Initializing dedicated server...
[Server] Listening on port 16567

Для работы в фоне используйте screen:

screen -S bf2142
./bf2142_dedicated +set dedicated 1 +exec server.cfg
# Отключиться: Ctrl+A → D
# Подключиться обратно: screen -r bf2142

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

5.1. Брандмауэр (UFW)

sudo apt install ufw
sudo ufw allow 16567/udp
sudo ufw allow 27900/udp
sudo ufw enable
sudo ufw status

5.2. Проброс портов на роутере

  • Откройте UDP 16567 и UDP 27900 на внешний IP вашего роутера.
  • Направьте их на локальный IP машины с Kali.

5.3. Проверка доступности

# С другого ПК или через сервис типа portchecker.co
nc -vz -u <внешний_ip> 16567

Шаг 6: Автоматический запуск через systemd

Создаём службу для стабильной работы:

sudo nano /etc/systemd/system/bf2142.service
[Unit]
Description=Battlefield 2142 Dedicated Server
After=network.target

[Service]
Type=simple
User=bf2142srv
Group=bf2142srv
WorkingDirectory=/opt/bf2142-dedicated
ExecStart=/opt/bf2142-dedicated/bf2142_dedicated +set dedicated 1 +exec server.cfg
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

Активация:

# Создаём непривилегированного пользователя (если ещё нет)
sudo useradd -r -s /bin/false -d /opt/bf2142-dedicated bf2142srv
sudo chown -R bf2142srv:bf2142srv /opt/bf2142-dedicated

sudo systemctl daemon-reload
sudo systemctl enable --now bf2142.service
sudo systemctl status bf2142.service

Журнал сервера:

journalctl -u bf2142.service -f

Мастер-сервер: почему сервер не виден в списке?

Официальные мастер-серверы EA (gamespy, battlefield2142.ea.com) отключены навсегда. Без эмулятора сервер работает только в локальной сети или по прямому IP.

Варианты решения:

  1. Прямое подключение: В клиенте используйте open <ip>:16567
2. Комьюнити-эмуляторы:
  • BF2142 Revive Master Server (open-source, работает на 27900)
  • Project Frostbite / BF2142 Community Edition
3. Настройка в server.cfg (пример для эмулятора):
   server.masterServer "master.bf2142-revive.org"
   server.masterServerPort 27900
   server.gameSpy 1

Актуальные адреса эмуляторов меняются. Ищите на bf2142-revive.com или reddit.com/r/battlefield2142.


Устранение частых проблем

Симптом Решение
cannot execute binary file: Exec format error Не включён i386. Выполните dpkg --add-architecture i386 и переустановите зависимости.
error while loading shared libraries: libtinfo.so.5 sudo apt install libtinfo5:i386
Сервер падает через 10-30 сек Проверьте server.cfg на синтаксические ошибки, права на папку mods/, отсутствие конфликтующих конфигов.
bind failed: Address already in use Порт 16567/27900 занят. sudo lsof -i :16567 или ss -ulnp для поиска.
Игроки не подключаются Брандмауэр/роутер блокирует UDP. Проверьте tcpdump -i any udp port 16567 для отладки.
Ошибки ldd Запустите ldd bf2142_dedicated и установите все => not found библиотеки с суффиксом :i386.

Финальные рекомендации

  1. Не используйте root для запуска сервера. Это критично для безопасности.
  2. Резервное копирование: Регулярно архивируйте mods/ и Settings/.
3. Логи: Перенаправляйте вывод в файл для анализа:
   ./bf2142_dedicated +set dedicated 1 +exec server.cfg 2>&1 | tee server.log
  1. Альтернатива: Если сервер нужен для постоянной работы, рассмотрите миграцию на Debian 12 netinst (меньше зависимостей, стабильные ядра, меньше конфликтов с библиотеками).
  2. Юридический аспект: Запуск сервера разрешён для личного/комьюнити использования. Распространение оригинальных файлов без лицензии нарушает EAC.