我住在印度新德里。我在 Hetzner 云(芬兰,赫尔辛基)有虚拟机。每个虚拟机都有一个来自芬兰赫尔辛基的静态 IP 地址。我在虚拟机上运行一些应用程序。如何设置我家里互联网连接的 IP 地址,作为我的虚拟机的代理 IP?这样:
- 芬兰的真实 IP 被隐藏
- VM 发出的所有请求都通过我家里的互联网连接的 IP 地址进行
- 所有请求都转发到虚拟机
答案1
这可以通过运行 TCP/UDP 代理(如 Nginx、Traefik、HAproxy...)来实现。使用此方法,虚拟机将无法从 IP 数据包中读取真实访问者/用户的 IP 地址,因为这些地址将来自HOME_IP
到VM_IP
。
在更具体的 HTTP 情况下,人们可能希望运行 HTTP 代理,尤其是当人们打算在 HTTP 级别执行某些操作(例如缓存或过滤)时。它涉及使用代理终止 TLS 隧道以读取/修改 HTTP 通信。但仍然可以有两个 TLS 隧道,VM <-> home
和home <-> remote user
。HTTP 代理可以将访问者 IP 地址写入 HTTP 标头(例如 X-Forwarded-For 或 X-Real-IP),从而允许后端(虚拟机)找回此信息。
另一种方法是将虚拟机与家庭路由器连接到同一专用网络中,就像 VPN 一样。如果虚拟机使用 VPN 路由器作为网关,则路由器将成为虚拟机的“远程 NAT”,并可以为这些虚拟机进行端口转发。这样,您就可以将数据包从家庭路由器的 IP 转发到虚拟机,就像使用 LAN 中的设备一样。在这种情况下,真实的用户/访问者 IP 将在虚拟机收到的数据包中可用,因为只更新了目的地,而不是源(对于用户 -> 家庭路由器 -> 虚拟机)。相反,家庭路由器将对虚拟机 -> 家庭路由器 -> 用户流量进行伪装。