IPv4<->Wireguard<->IPv4组网服务: LANraragi 实例
说明
LANraragi 是一个漫画/漫画存档的开源服务器,以 Mojolicious + Redis 运行。
在 [Unraid 系列 v6.9.2] 9 优化 IPv6 访问(LANraragi 示例) 中提到, LANraragi 无法在 Unraid 中通过 [IPv6]:[Port]
方式访问。
但开虚拟机只用于这一个项目实在浪费资源,但现在有了一个新的思路:具有 WAN IPv6 地址和 LAN IPv4 地址的路由/防火墙,对 LAN 下 IPv4 的 LANraragi 进行端口转发,对外提供 IPv6 服务。
这个方法更简单,也更稳定。
OPNsense HAProxy 反向代理
请参阅: OPNsense 防火墙系列五:HAProxy IPv6 反向代理、IPv6 代理 IPv4 ,全文和其中 普通代理 - HTTP proxy HTTP(S) 的具体部分。
Wireguard 虚拟局域网
再由 Wireguard+公网轻量应用服务器实现 IPv4 内网穿透 。
如果公网服务器同时支持 IPv4 和 IPv6 的话,直接跳过虚拟局域网即可直接下一步代理。
或许有人问为什么不直接用 Wireguard 将公网服务器 + Unraid 进行组网呢?当然是统一网络出入都过防火墙啊。
Nginx 反向代理
通过虚拟局域网向 IPv4 终端提供反向代理服务。
server {
listen [PORT] ssl http2;
server_name [DOMAIN];
ssl on;
index index.php index.html index.htm;
ssl_certificate /etc/nginx/conf.d/ssl/[DOMAIN].pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/[DOMAIN].key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
client_max_body_size 500;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://[WAN_VPN_IPv4_DOMAIN]:[PORT];
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
然后公网服务器开放端口即可。