![与运营商级 NAT 后面的服务器建立 OpenVPN 连接](https://linux22.com/image/1537802/%E4%B8%8E%E8%BF%90%E8%90%A5%E5%95%86%E7%BA%A7%20NAT%20%E5%90%8E%E9%9D%A2%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BB%BA%E7%AB%8B%20OpenVPN%20%E8%BF%9E%E6%8E%A5.png)
我的 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)