Перейти к содержанию

Запуск в качестве сервиса

Настройте сервер r-vpn на автоматический запуск при загрузке системы и перезапуск при сбоях.


systemd (Linux)

Создайте файл сервиса:

sudo nano /etc/systemd/system/rvpn-server.service
[Unit]
Description=r-vpn Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/rvpn-server -c /etc/rvpn/server.toml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

# Перенаправление логов в journal
StandardOutput=journal
StandardError=journal
SyslogIdentifier=rvpn-server

[Install]
WantedBy=multi-user.target

Включите и запустите:

sudo systemctl daemon-reload
sudo systemctl enable rvpn-server
sudo systemctl start rvpn-server

Проверьте статус:

sudo systemctl status rvpn-server

Просмотр логов:

sudo journalctl -u rvpn-server -f

Управление сервисом

Действие Команда
Запуск sudo systemctl start rvpn-server
Остановка sudo systemctl stop rvpn-server
Перезапуск sudo systemctl restart rvpn-server
Перезагрузка конфигурации sudo systemctl reload rvpn-server
Просмотр логов sudo journalctl -u rvpn-server -f
Отключение автозапуска sudo systemctl disable rvpn-server

Автообновление TLS-сертификата

При использовании Let's Encrypt добавьте хук развёртывания для перезагрузки r-vpn при обновлении сертификата:

sudo nano /etc/letsencrypt/renewal-hooks/deploy/rvpn-reload.sh
#!/bin/bash
systemctl reload rvpn-server 2>/dev/null || systemctl restart rvpn-server
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/rvpn-reload.sh

Проверьте процесс обновления:

sudo certbot renew --dry-run

FreeBSD rc(8)

Создайте /usr/local/etc/rc.d/rvpn_server:

#!/bin/sh
# PROVIDE: rvpn_server
# REQUIRE: NETWORKING
# KEYWORD: shutdown

. /etc/rc.subr

name="rvpn_server"
rcvar="rvpn_server_enable"
command="/usr/local/bin/rvpn-server"
command_args="-c /usr/local/etc/rvpn/server.toml"
pidfile="/var/run/rvpn-server.pid"

load_rc_config $name
run_rc_command "$1"
chmod +x /usr/local/etc/rc.d/rvpn_server
echo 'rvpn_server_enable="YES"' >> /etc/rc.conf
service rvpn_server start

Предварительные требования NAT для режима TUN

При запуске в режиме TUN (полнотуннельный VPN) сервер должен быть настроен как NAT-шлюз перед запуском сервиса.

Linux

# Включение пересылки IP-пакетов
sudo sysctl -w net.ipv4.ip_forward=1

# Настройка NAT (замените eth0 на ваш публичный интерфейс)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Сделайте правила постоянными:

# Debian/Ubuntu
sudo apt install iptables-persistent
sudo netfilter-persistent save

# RHEL/CentOS
sudo service iptables save

FreeBSD

Добавьте в /etc/rc.conf:

gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="vtnet0"  # ваш публичный интерфейс

macOS

macOS не поддерживает серверный NAT для режима TUN. Используйте режим SOCKS5 или виртуальную машину Linux для серверов в режиме TUN.


Режим TUN vs режим SOCKS5

Аспект Режим TUN Режим SOCKS5
NAT обязателен Да (на стороне сервера) Нет (ретрансляция на стороне клиента)
Маршрутизация трафика Все приложения, полный туннель Для отдельных приложений
Настройка сервера Пересылка IP + правила NAT Стандартный VPN-сервер

Смотрите Режим TUN для получения полной документации по настройке режима TUN.