Проблема
У многих компаний в чуланах или подсобках пылится старое, но вполне рабочее «железо»: компьютеры с 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
Устранение распространённых проблем
Мы превратили старый офисный компьютер в полнофункциональный сервер, который справляется с задачами, недоступными большинству готовых SOHO-маршрутизаторов. VPN сервер из старого пк на базе Ubuntu Server и WireGuard обеспечивает безопасный удалённый доступ для сотрудников и филиалов, а связка DHCP + DNS + Samba закрывает все базовые потребности малого офиса. iptables гарантирует защиту периметра, а NAT позволяет десяткам устройств выходить в интернет через один публичный IP-адрес.
Полученное решение легко масштабируется: при необходимости вы можете добавить резервный канал, настроить балансировку нагрузки, подключить файловый сервер к центральному хранилищу или интегрировать VPN с LDAP. Старое оборудование обретает вторую жизнь, а компания экономит средства на покупку специализированного оборудования и получает полный контроль над своим сетевым шлюзом.







