Запуск в качестве сервиса¶
Настройте сервер r-vpn на автоматический запуск при загрузке системы и перезапуск при сбоях.
systemd (Linux)¶
Создайте файл сервиса:
[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 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 при обновлении сертификата:
Проверьте процесс обновления:
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.