与运营商级 NAT 后面的服务器建立 OpenVPN 连接

与运营商级 NAT 后面的服务器建立 OpenVPN 连接

我的 ISP 提供双栈精简版。这意味着,我只有一个完全可用的 IPv6 地址。IPv4 连接通过运营商级 NAT 路由。我想在我的家庭网络中设置一个 openVPN 服务器并连接到它。但我的手机服务提供商不支持 IPv6(使用 iOS)。

我在互联网上确实有多个支持真正双栈的服务器。有没有办法用这些组件连接到我的 openvpn 服务器?我读过有关 ssh 端口转发的文章:这是一个解决方案吗?或者说,这对连接来说开销太大了?

答案1

正如您已经发现的那样,您无法直接从您的移动设备(仅具有 IPv4 连接)连接到您的家庭网络(由于 CG-NAT,无法通过 IPv4 访问)。您确实可以“跳过”连接良好的主机来调解您的 2 台设备。这确实使网络设置有些复杂,使故障排除变得更加....具有挑战性。

基本思路是将一台连接良好的服务器配置为转发站:它应该通过 IPv4 接受来自移动设备的 TCP 连接,并通过 IPv6 将这些连接转发到您的家庭服务器。(您也可以使用 UDP 进行设置,但这更加复杂,因为它是无连接的)

可以做到这一点的工具之一是socat

socat -d -d TCP-LISTEN:1194,fork TCP6:[2001:db8::1]:1194

这将在端口 1194(默认 OpenVPN 端口,可根据您的需要进行更改)上监听您的服务器,并将每个连接转发到同一端口上的指定 IPv6 地址(或 DNS 名称)(同样,可根据您的需要进行更改)。该fork选项指示 socat 在第一个连接之后继续转发新连接。

答案2

  • 在其上安装 ubuntu 服务器(如果使用 raspberry pi 4),否则在 x86-64 上安装 debian 10/11。

  • 使用以下命令安装 openvpnas

    sudo su
    
    apt update && apt -y install ca-certificates wget net-tools gnupg
    
    wget hxxps://as-repository.openvpn.net/as-repo-public.asc -qO /etc/apt/trusted.gpg.d/as-repository.asc
    
    echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/as-repository.asc] hxxp://as-repository.openvpn.net/as/debian jammy main">/etc/apt/sources.list.d/openvpn-as-repo.list
    
    apt update && apt -y install openvpn-as
  • 设置 ngrok 账户

  • 安装 ngrok 代理

  • 设置 ngrok 代理以使用 tcp 443(/root/.config/ngrok/ngrok.yml)

  • 隧道:默认:proto:tcp addr:443,然后在提示符上

    ngrok service install --config /root/.config/ngrok/ngrok.yml
    
    ngrok service start
    
    ngrok update
  • 记下转发行号.tcp.region.ngrok.io:random-port-forward-number(例如:1.tcp.ap.ngrok.io:12345)

  • 使用生成的 ngrok URL 访问 openvpnas(例如:hxxps://1.tcp.ap.ngrok.io:12345/admin)并创建帐户

  • 从客户端,您需要下载并编辑用户 VPN 配置文件 (*.OVPN),并分别更改远程 1.tcp.ap.ngrok.io 和端口(例如:12345)

相关内容