跳转至

作为服务运行

设置 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

TUN 模式的 NAT 先决条件

如果在 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 不支持服务器端 TUN NAT。对于 TUN 模式服务器,请使用 SOCKS5 模式或 Linux VM。


TUN 模式与 SOCKS5 模式

方面 TUN 模式 SOCKS5 模式
需要 NAT 是(服务器端) 否(客户端中继)
流量路由 所有应用,全隧道 按应用程序
服务器设置 IP 转发 + NAT 规则 标准 VPN 服务器

请参阅 TUN 模式 获取完整的 TUN 模式设置文档。