为计算机分配静态公共 IP

为计算机分配静态公共 IP

有没有办法为位于 CGNAT 后面的计算机分配公共静态 IP?
我正在寻找类似方法鰤鱼可以执行,但是 Hamachi 需要专有客户端(带有用户名和密码)才能访问私有 LAN。

我最初是这么想的: 流程图示例

我该如何实现?
是否有创建网络适配器并公开公共 IP 的服务?

答案1

是否有创建网络适配器并公开公共 IP 的服务?

是的,这叫做 VPN。

  • 如果您拥有一个具有两个或更多 IP 地址的远程 VPN 服务器,那么您可以从服务器的“以太网”接口取消分配其中一个地址;通过 VPN 路由;然后将其直接分配给客户端计算机。(如果是 IPv4,您可能需要在服务器上启用代理 ARP。)

    ip addr del <addr>/xx dev eth0                    # Unassign from local OS
    ip neigh add proxy <addr> dev eth0                # Trick local router
    ip route add <addr>/32 dev wg0                    # Route via WireGuard
    wg set wg0 peer <pubkey> allowed-ips <addr>/32    # Inform WireGuard
    

    您可以为此使用几乎任何 VPN 协议 - 例如 WireGuard、Tinc、OpenVPN、ZeroTier、IPsec/GRE、IPIP、PPTP、PPP-over-SSH 等。

    即使地址属于不同的 IP 版本,此方法也有效。例如,如果您能够使用 IPv6 进行 VPN 连接,则可以删除服务器最后剩余的 IPv4 地址,并将其用于您的家庭系统。

    (对于 OpenVPN TUN,相当于允许的 IP将是服务器 CCD 目录中的“iroute”设置;对于 Tinc TUN,它是客户端的“Subnet=”设置。对于大多数 TAP,即第 2 层 VPN,这直接指定为“ip route add <addr> via <client>”。对于 GRE 或 PPP 等点对点隧道,根本不需要任何额外设置。)

  • 如果你有远程 VPN 服务器只有一个IP 地址——好吧,您仍然可以简单地 DNAT(端口转发)所有入站连接,以便它们到达您的 VPN 客户端的私有 IP 地址。

    它的工作原理与家庭 LAN 端口转发相同:

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination <VpnClientIP>
    

    你甚至可以在服务器本身位于 1:1 NAT 之后,例如各种大型云提供商。同样,您可以使用几乎任何可用的 VPN 协议。

  • 一些商业 VPN 提供商还提供为您保留公共 IP 地址的计划,但我相信他们通常仍执行 1:1 NAT,而不是直接将该地址路由到客户端系统。

相关内容