作为服务运行
将 rVPN 服务器配置为开机自动启动并在故障时自动重启。
systemd (Linux)
Section titled “systemd (Linux)”创建服务文件:
sudo nano /etc/systemd/system/rvpn-server.service[Unit]Description=rVPN ServerAfter=network-online.targetWants=network-online.target
[Service]Type=simpleUser=rootExecStart=/usr/local/bin/rvpn-server -c /etc/rvpn/server.tomlRestart=on-failureRestartSec=5LimitNOFILE=65536
# Redirect logs to journalStandardOutput=journalStandardError=journalSyslogIdentifier=rvpn-server
[Install]WantedBy=multi-user.target启用并启动:
sudo systemctl daemon-reloadsudo systemctl enable rvpn-serversudo 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 journalctl -u rvpn-server -f |
| 禁用开机自启 | sudo systemctl disable rvpn-server |
服务器不支持 systemctl reload——进程必须重启才能加载新的配置或证书。请在其他场景下使用 reload 的地方改用 restart。
TLS 证书自动续期
Section titled “TLS 证书自动续期”如果你使用内置的 [server.acme] 块(Server Quick Start 第 3 步),这里无需任何配置 — 续订由 rvpn-server 进程内的后台任务驱动,使用同一个 :443 监听器完成挑战,并把新证书热切换到内存解析器中,不会中断连接。跳过本节。
如果你改为让 tls_cert_file / tls_key_file 指向 certbot 签发的证书(BYO 证书模式),请添加部署钩子,在证书续期时重启 rVPN — 服务器无法在不重启的情况下加载新证书:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/rvpn-reload.sh#!/bin/bashsystemctl restart rvpn-serversudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/rvpn-reload.sh测试续期流程:
sudo certbot renew --dry-runFreeBSD rc(8)
Section titled “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 $namerun_rc_command "$1"chmod +x /usr/local/etc/rc.d/rvpn_serverecho 'rvpn_server_enable="YES"' >> /etc/rc.confservice rvpn_server startTUN 模式的 NAT 前置条件
Section titled “TUN 模式的 NAT 前置条件”如果以 TUN 模式(全隧道 VPN)运行,服务器必须在启动服务前先配置为 NAT 网关。
# Enable IP forwardingsudo sysctl -w net.ipv4.ip_forward=1
# Configure NAT (replace eth0 with your public interface; -s should match [server.network].dhcp_range)sudo iptables -t nat -A POSTROUTING -s 10.200.0.0/24 -o eth0 -j MASQUERADEsudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPTsudo iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT让这些规则在重启后保持:
# Debian/Ubuntusudo apt install iptables-persistentsudo netfilter-persistent save
# RHEL/CentOSsudo service iptables saveFreeBSD
Section titled “FreeBSD”添加到 /etc/rc.conf:
gateway_enable="YES"firewall_enable="YES"firewall_type="OPEN"natd_enable="YES"natd_interface="vtnet0" # your public interfacemacOS 不支持服务器端的 TUN NAT。TUN 模式的服务器请使用 SOCKS5 模式或 Linux 虚拟机。
TUN 模式 vs SOCKS5 模式
Section titled “TUN 模式 vs SOCKS5 模式”| 方面 | TUN 模式 | SOCKS5 模式 |
|---|---|---|
| 是否需要 NAT | 需要(服务器端) | 不需要(客户端中继) |
| 流量路由 | 所有应用,全隧道 | 按应用 |
| 服务器设置 | IP 转发 + NAT 规则 | 标准 VPN 服务器 |
参见 TUN 模式 了解完整的 TUN 模式配置文档。