В данной статье рассмотрим настройку сервера Ubuntu Server 26.04, который будет выполнять функции маршрутизатора, DHCP-сервера и VPN-сервера WireGuard с удобным веб-интерфейсом управления.
Исходные данные
Сервер оснащен двумя сетевыми интерфейсами:
| Интерфейс | Назначение |
|---|---|
| enp2s0 | Внешняя сеть (WAN) |
| enp4s0 | Внутренняя сеть (LAN) |
1. Настройка сети
Отредактируйте файл конфигурации Netplan:
nano /etc/netplan/01-router.yaml
Укажите следующую конфигурацию:
network:
ethernets:
enp2s0:
addresses:
- x.x.x.x/24
dhcp6: true
nameservers:
addresses:
- 8.8.8.8
search: []
routes:
- to: default
via: x.x.x.x
set-name: enp2s0
enp4s0:
dhcp4: false
addresses:
- 192.168.1.1/24
accept-ra: true
version: 2
Сохраняем (Ctrl+O) и выходим из редактора (Ctrl+X).
Проверьте конфигурацию:
netplan try
Если ошибок нет, примените настройки:
netplan apply
2. Настройка DHCP-сервера
Установите DHCP-сервер:
apt update
apt install -y isc-dhcp-server
Укажите внутренний интерфейс:
nano /etc/default/isc-dhcp-server
INTERFACESv4="enp4s0"
Далее настройте DHCP:
nano /etc/dhcp/dhcpd.conf
authoritative;
default-lease-time 600;
max-lease-time 7200;
option domain-name "lan";
option domain-name-servers 1.1.1.1, 8.8.8.8;
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 subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
}
Запустите службу:
systemctl enable isc-dhcp-server
systemctl restart isc-dhcp-server
Проверьте состояние:
systemctl status isc-dhcp-server
3. Настройка межсетевого экрана (iptables)
Создайте скрипт настройки firewall:
nano /usr/local/sbin/firewall.sh
Вставьте следующий код:
#!/bin/bash
WAN=enp2s0
LAN=enp4s0
LAN_NET=192.168.1.0/24
RDP_HOST=192.168.1.200
echo "[+] Resetting rules..."
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
echo "[+] Default policies..."
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
echo "[+] Allow loopback..."
iptables -A INPUT -i lo -j ACCEPT
echo "[+] Allow established connections..."
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
echo "[+] SSH access..."
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
echo "[+] Ping (ICMP)..."
iptables -A INPUT -p icmp -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
echo "[+] WireGuard..."
iptables -A INPUT -p udp --dport 51820 -j ACCEPT
echo "[+] LAN -> WAN forwarding..."
iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT
echo "[+] NAT (Masquerade)..."
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
echo "[+] Port forwarding RDP..."
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 3389 -j DNAT --to-destination $RDP_HOST:3389
iptables -A FORWARD -p tcp -d $RDP_HOST --dport 3389 -j ACCEPT
echo "[+] LAN access to router..."
iptables -A INPUT -i $LAN -j ACCEPT
echo "[+] Done."
Сделайте скрипт исполняемым:
chmod +x /usr/local/sbin/firewall.sh
/usr/local/sbin/firewall.sh
Для сохранения правил после перезагрузки установите:
apt install iptables-persistent
Включение маршрутизации
Разрешите пересылку пакетов между интерфейсами:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
4. Установка WireGuard с веб-интерфейсом
Установите необходимые компоненты:
apt install -y qrencode
curl -fsSL https://raw.githubusercontent.com/itsredbull/wireguard-ui-installer/main/install.sh | bash
После завершения установки будут автоматически развернуты:
- WireGuard;
- Web-интерфейс WireGuard UI;
- Docker-контейнер для управления VPN.
Откройте браузер и перейдите по адресу:
http://192.168.1.1:5000
Стандартные учетные данные:
Логин: admin
Пароль: admin
Настройка WireGuard
Откройте раздел WireGuard Server Settings и измените параметры.
Server Interface Addresses
10.252.1.1/24
Post Up Script
iptables -t nat -A POSTROUTING -s 10.252.1.0/24 -o enp2s0 -j MASQUERADE; iptables -A FORWARD -i wg0 -o enp2s0 -j ACCEPT; iptables -A FORWARD -i enp2s0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Post Down Script
iptables -t nat -D POSTROUTING -s 10.252.1.0/24 -o enp2s0 -j MASQUERADE; iptables -D FORWARD -i wg0 -o enp2s0 -j ACCEPT; iptables -D FORWARD -i enp2s0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

После сохранения настроек убедитесь, что VPN функционирует корректно.
5. Настройка отправки конфигураций по электронной почте
WireGuard UI умеет автоматически отправлять пользователям конфигурационные файлы и QR-коды.
Откройте файл Docker Compose:
nano /etc/wireguard-ui/docker-compose.yml
Добавьте параметры SMTP:
services:
wireguard-ui:
image: ngoduykhanh/wireguard-ui:latest
container_name: wireguard-ui
volumes:
- ./db:/app/db
- /etc/wireguard:/etc/wireguard
ports:
- "5000:5000"
environment:
- BIND_ADDRESS=0.0.0.0:5000
- WGUI_USERNAME=admin
- WGUI_PASSWORD=admin
- WGUI_CONFIG_FILE_PATH=/etc/wireguard/wg0.conf
- WGUI_MANAGE_START=true
- WGUI_MANAGE_RESTART=true
- SMTP_HOSTNAME=mail.example.ru
- SMTP_PORT=587
- SMTP_AUTH_TYPE=LOGIN
- SMTP_USERNAME=wireguard@example.ru
- SMTP_PASSWORD=<SMTP_PASSWORD>
- EMAIL_FROM_ADDRESS=wireguard@example.ru
- EMAIL_FROM_NAME=WireGuard
cap_add:
- NET_ADMIN
restart: unless-stopped
Перезапустите контейнер:
cd /etc/wireguard-ui
docker compose down
docker compose up -d
После перезапуска WireGuard UI сможет автоматически отправлять пользователям VPN-конфигурации и QR-коды по электронной почте.
После выполнения всех описанных шагов сервер Ubuntu будет выполнять функции:
- маршрутизатора между локальной сетью и Интернетом;
- DHCP-сервера;
- NAT-шлюза;
- межсетевого экрана (iptables);
- VPN-сервера WireGuard;
- веб-панели управления WireGuard;
- сервера автоматической отправки VPN-конфигураций пользователям по электронной почте.