Создание своего сервера на старой офисной машине — маршрутизация, файлопомойка, Firewall

Проблема

У многих компаний в чуланах или подсобках пылится старое, но вполне рабочее «железо»: компьютеры с Core i3/i5, материнские платы, блоки питания. Выбросить жалко, а использовать в качестве полноценного рабочего места уже нельзя. В то же время, аренда готового VPN-сервера или покупка нового маршрутизатора с расширенными функциями требует дополнительных затрат.

Сисадмину нужно экономичное решение, которое сможет взять на себя сразу несколько задач: обеспечить безопасный удалённый доступ в локальную сеть через VPN, раздавать IP-адреса в офисе (DHCP) и разрешать имена (DNS), раздавать общие папки для сотрудников и при этом фильтровать трафик и защищать периметр. Современный роутер за 10-15 тысяч рублей может быть слишком ограничен по функционалу, а старый ПК способен стать мощным и гибким сетевым шлюзом. Достаточно установить на него подходящее программное обеспечение, и он превратится в полноценный сервер, который справится с задачами на порядок сложнее, чем большинство готовых SOHO-маршрутизаторов.

Решение

Старый компьютер легко превращается в универсальный сетевой шлюз. Для этого на него устанавливается серверный дистрибутив Linux (например, Ubuntu Server или Debian), который выполняет функции:

  • VPN-сервера (WireGuard или OpenVPN) для безопасного доступа удалённых сотрудников и филиалов.
  • Маршрутизатора  для передачи трафика между локальной сетью и интернетом.
  • Файлового сервера (Samba) для организации общих сетевых папок.
  • Межсетевого экрана (iptables/nftables) для фильтрации трафика, трансляции адресов (NAT) и защиты периметра.
  • DHCP-сервера  для автоматической раздачи IP-адресов устройствам в локальной сети.
  • DNS-сервера (опционально) для разрешения имён внутри офиса и кэширования.

В этой статье мы настроим универсальный сервер на Ubuntu Server 24.04 LTS с использованием WireGuard в качестве VPN-решения, iptables для фаервола, Samba для файлового сервера и ISC DHCP Server для раздачи адресов. Получившееся решение отлично подойдёт для малого офиса или филиала на 20–50 компьютеров и обеспечит производительность, недоступную большинству бюджетных маршрутизаторов.

Пошаговая инструкция

1. Подготовка сервера

1.1. Требования к оборудованию

  • Процессор: от двух ядер (Intel Core i3 или эквивалент).
  • ОЗУ: от 2 ГБ (рекомендуется 4 ГБ и выше).
  • Диск: от 40 ГБ (SSD приветствуется, но HDD тоже подойдёт).
  • Две сетевых карты: одна смотрит в интернет (WAN), другая — в локальную сеть (LAN). Если материнская плата имеет только один порт, добавьте вторую карту (PCIe x1 Gigabit Ethernet стоит недорого).

1.2. Установка Ubuntu Server

Скачайте образ Ubuntu Server 24.04 LTS с официального сайта и запишите на флешку. При установке:

  • Выберите минимальную установку (Minimized).
  • Включите поддержку SSH-сервера для удалённого управления.
  • Создайте пользователя с правами sudo.

1.3. Первичная настройка сети

После установки определите имена интерфейсов:

ip link show

Обычно интерфейсы называются enpXsY или ethX. Для простоты переименуем их в wan и lan. Создайте файл /etc/systemd/network/99-default.link:

sudo tee /etc/systemd/network/99-default.link << EOF
[Match]
MACAddress=xx:xx:xx:xx:xx:xx

[Link]
Name=wan
EOF

Узнайте MAC-адреса с помощью ip link. Аналогично создайте правило для LAN-интерфейса.

Перезагрузитесь:

sudo reboot

После перезагрузки настройте WAN-интерфейс (обычно через DHCP) и LAN-интерфейс со статическим адресом:

sudo tee /etc/netplan/01-netcfg.yaml << EOF
network:
  version: 2
  renderer: networkd
  ethernets:
    wan:
      dhcp4: true
    lan:
      addresses:
        - 192.168.1.1/24
      dhcp4: no
EOF

Примените настройки:

sudo netplan apply

2. Включение IP-форвардинга и настройка NAT

Чтобы сервер маршрутизировал трафик между интернетом и локальной сетью, необходимо включить пересылку пакетов и настроить трансляцию адресов (NAT).

2.1. Включение IP-форвардинга

IP-форвардинг (пересылка IP-пакетов) по умолчанию отключён в ядре Linux из соображений безопасности. Чтобы включить его временно:

sudo sysctl -w net.ipv4.ip_forward=1

Для постоянного включения раскомментируйте строку net.ipv4.ip_forward=1 в файле /etc/sysctl.conf:

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p

2.2. Настройка NAT (маскарадинга)

Чтобы компьютеры локальной сети с приватными IP-адресами могли выходить в интернет, нужно настроить маскарадинг — подмену исходного IP-адреса пакетов на IP-адрес WAN-интерфейса сервера.

sudo iptables -t nat -A POSTROUTING -o wan -j MASQUERADE

Для сохранения правил после перезагрузки установите пакет iptables-persistent:

sudo apt install iptables-persistent -y
sudo netfilter-persistent save

2.3. Базовые правила файрвола

Разрешим пересылку пакетов между интерфейсами и запретим всё остальное:

sudo iptables -A FORWARD -i lan -o wan -j ACCEPT
sudo iptables -A FORWARD -i wan -o lan -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -j DROP

Эти правила разрешают исходящий трафик из локальной сети, ответный трафик из интернета, блокируя всё остальное.

Официальная документация: Детальное описание цепочек FORWARD, NAT и iptables в целом доступно в Red Hat Product Documentation и на сайте проекта netfilter.

3. Установка и настройка VPN-сервера (WireGuard)

WireGuard современный, простой и быстрый VPN-протокол, который легко настраивается и показывает высокую производительность.

3.1. Установка WireGuard

sudo apt install wireguard -y

3.2. Генерация ключей

WireGuard использует пары публичных и приватных ключей на основе криптографии Curve25519. Сгенерируем ключи для сервера:

cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

3.3. Конфигурация сервера

Создайте файл /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <содержимое server_private.key>
Address = 10.0.0.1/24
ListenPort = 51820
SaveConfig = false

# Включение NAT для VPN-клиентов
PostUp = iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o wan -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o wan -j MASQUERADE

Разрешим пересылку пакетов от VPN-клиентов:

sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo netfilter-persistent save

3.4. Добавление клиента

Сгенерируйте ключи для клиента (например, на ноутбуке администратора) и добавьте секцию [Peer] в /etc/wireguard/wg0.conf:

[Peer]
PublicKey = <публичный ключ клиента>
AllowedIPs = 10.0.0.2/32

3.5. Запуск WireGuard

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
sudo wg show

3.6. Конфигурация клиента

На клиенте создайте файл client.conf:

[Interface]
PrivateKey = <приватный ключ клиента>
Address = 10.0.0.2/24
DNS = 192.168.1.1

[Peer]
PublicKey = <публичный ключ сервера>
Endpoint = <публичный IP сервера>:51820
AllowedIPs = 192.168.1.0/24
PersistentKeepalive = 25

Параметр PersistentKeepalive = 25 обеспечивает отправку keepalive-пакетов для поддержания соединения, что необходимо для работы через NAT и файрволы.

Официальная документация: Полное руководство по настройке WireGuard доступно на сайте проекта.

4. Настройка DHCP-сервера

Установим ISC DHCP Server для автоматической раздачи IP-адресов устройствам в локальной сети.

sudo apt install isc-dhcp-server -y

Отредактируйте /etc/dhcp/dhcpd.conf. Пример конфигурации:

# Глобальные параметры
option domain-name "office.local";
option domain-name-servers 8.8.8.8, 1.1.1.1;
default-lease-time 86400;
max-lease-time 604800;

# Локальная подсеть
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;
    option routers 192.168.1.1;
    option broadcast-address 192.168.1.255;
}

# Резервирование для принтера (по MAC-адресу)
host printer {
    hardware ethernet xx:xx:xx:xx:xx:xx;
    fixed-address 192.168.1.50;
}

Укажите интерфейс, на котором DHCP-сервер будет слушать запросы, в файле /etc/default/isc-dhcp-server:

INTERFACESv4="lan"

Запустите сервер:

sudo systemctl enable isc-dhcp-server
sudo systemctl start isc-dhcp-server

Официальная документация: Полное описание синтаксиса dhcpd.conf доступно в руководстве ISC DHCP.

5. Настройка DNS (опционально)

Dnsmasq — лёгкий DNS-сервер с поддержкой кэширования и DHCP. Он идеально подходит для небольших сетей.

sudo apt install dnsmasq -y

Отредактируйте /etc/dnsmasq.conf:

# Интерфейс для прослушивания
interface=lan
# Кэширование
cache-size=1000
# DNS-серверы провайдера
server=8.8.8.8
server=1.1.1.1
# Локальные имена
domain=office.local
# Резолвинг локальных хостов
local=/office.local/

Запустите сервер:

sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq

6. Настройка файлового сервера (Samba)

Samba позволяет организовать общие сетевые папки, доступные для Windows, macOS и Linux-клиентов.

6.1. Установка Samba

sudo apt install samba -y

6.2. Конфигурация

Основной конфигурационный файл Samba — /etc/samba/smb.conf. Создадим резервную копию и отредактируем:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo tee -a /etc/samba/smb.conf << EOF

[global]
   workgroup = OFFICE
   server string = Server
   netbios name = gateway
   security = user
   map to guest = Bad User
   dns proxy = no

[public]
   path = /srv/samba/public
   browseable = yes
   writable = yes
   guest ok = yes
   read only = no
   create mask = 0777
   directory mask = 0777
EOF

6.3. Создание общей папки и настройка прав

sudo mkdir -p /srv/samba/public
sudo chown nobody:nogroup /srv/samba/public
sudo chmod 0777 /srv/samba/public

6.4. Добавление пользователей

sudo useradd -m -s /bin/bash ivanov
sudo smbpasswd -a ivanov

6.5. Запуск Samba

sudo systemctl enable smbd nmbd
sudo systemctl start smbd nmbd

Официальная документация: Руководство по настройке Samba и описание параметров smb.conf доступно на официальном сайте Samba.

7. Расширенная настройка брандмауэра

Для дополнительной защиты ограничим доступ к серверу.

# Разрешить SSH только из локальной сети
sudo iptables -A INPUT -i lan -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP

# Разрешить доступ к Samba только из локальной сети
sudo iptables -A INPUT -i lan -p tcp --dport 445 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 445 -j DROP

# Разрешить VPN-подключения извне
sudo iptables -A INPUT -i wan -p udp --dport 51820 -j ACCEPT

# Базовая защита от сканирования
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

Сохраните правила:

sudo netfilter-persistent save

Официальная документация: Подробное руководство по nftables (современной замене iptables) можно найти на wiki.nftables.org. В Ubuntu Server также доступна официальная документация по nftables.

8. Автоматизация и мониторинг

8.1. Резервное копирование конфигураций

Создайте скрипт /usr/local/bin/backup_config.sh для архивации важных файлов:

#!/bin/bash
BACKUP_DIR="/backup/configs"
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/configs_$(date +%Y%m%d).tar.gz /etc/wireguard /etc/samba /etc/dhcp /etc/dnsmasq.conf /etc/iptables/rules.v4

Добавьте задачу в cron для ежедневного выполнения:

sudo crontab -e
# Добавьте строку:
0 2 * * * /usr/local/bin/backup_config.sh

8.2. Мониторинг через Uptime Kuma

Для контроля доступности сервера и VPN можно установить Uptime Kuma — удобную систему мониторинга с веб-интерфейсом.

sudo docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma

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

ПроблемаВероятная причинаРешение
Компьютеры в локальной сети не выходят в интернетНе настроен NAT, не включён IP-форвардингПроверить sysctl net.ipv4.ip_forward, убедиться в наличии правил MASQUERADE (iptables -t nat -L).
Клиенты не могут подключиться к VPNПорт 51820/1194 заблокирован брандмауэром, неверный ключОткрыть порт в файрволе: iptables -A INPUT -p udp --dport 51820 -j ACCEPT. Сверьте публичные ключи на сервере и клиенте.
Медленная работа файлового сервераНизкая скорость диска, перегружена сетьИспользовать SSD. Настроить jumbo frames. При большом количестве клиентов увеличить max xmit в smb.conf.
DHCP-сервер не раздаёт адресаИнтерфейс не указан в конфигурацииПроверить INTERFACESv4="lan" в /etc/default/isc-dhcp-server и убедиться, что сервер запущен.
Постоянно падает скорость VPNПерегружен процессор, неправильный MTUУменьшить MTU до 1280 в конфигурации WireGuard. Использовать WireGuard вместо OpenVPN для снижения нагрузки.
После перезагрузки пропадают правила iptablesПравила не сохраненыВыполнить sudo netfilter-persistent save. Убедиться, что пакет iptables-persistent установлен и сервис активен.

Мы превратили старый офисный компьютер в полнофункциональный сервер, который справляется с задачами, недоступными большинству готовых SOHO-маршрутизаторов. VPN сервер из старого пк на базе Ubuntu Server и WireGuard обеспечивает безопасный удалённый доступ для сотрудников и филиалов, а связка DHCP + DNS + Samba закрывает все базовые потребности малого офиса. iptables гарантирует защиту периметра, а NAT позволяет десяткам устройств выходить в интернет через один публичный IP-адрес.

Полученное решение легко масштабируется: при необходимости вы можете добавить резервный канал, настроить балансировку нагрузки, подключить файловый сервер к центральному хранилищу или интегрировать VPN с LDAP. Старое оборудование обретает вторую жизнь, а компания экономит средства на покупку специализированного оборудования и получает полный контроль над своим сетевым шлюзом.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Популярные
Новые Старые

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
Menu