通过云服务器的公共 IP 访问隧道本地服务器

通过云服务器的公共 IP 访问隧道本地服务器

我已使用 VPN 隧道 (Tinc) 将本地服务器连接到云服务器。两台服务器可以在 tun0 接口上互相通信。

我的云服务器可以通过互联网访问,其 eth0 接口分配有公共 IP 地址。我希望我的本地服务器可以通过云服务器的公共 IP 地址直接访问。我尝试使用以下命令桥接云的 eth0 和 tun0 接口:

ip link add name br0 type bridge
ip link set dev br0 up
ip link set dev tun0 master br0
ip link set dev eth0 master br0

但是当我桥接 eth0 接口(上面的最后一个命令)时,eth0 不起作用。我怀疑这是 VPS 提供商(Digital Ocean)设置的某种保护措施。我可能做错了什么?我还有什么其他选择?

答案1

让我回答一下我自己的问题。NGINX 的反向代理服务器可以通过创建这样的配置文件来解决这个问题:/etc/nginx/sites-enabled/tunnel-config

server {
    listen <cloud server port> default_server;
    server_name  localhost;
    large_client_header_buffers 4 32k;
    root /usr/share/nginx/html;
    index index.html index.htm;
    location / {
        proxy_pass <tunneled remote server IP>:<port>;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

以下是一些详细解释的来源:

https://www.nginx.com/resources/admin-guide/reverse-proxy/

https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-reverse-proxy-for-apache

相关内容