如何向同一 VPN 网络上的服务器发送请求

如何向同一 VPN 网络上的服务器发送请求

我已经设置了一个算法我在 Digital Ocean(运行 Ubuntu)上建立了一个服务器,并 sshed 进入该服务器,并编写了一个接受请求并返回“hello world”的小型 http 服务器。

我已成功将我的笔记本电脑(macos)连接到 VPN。

然而,当我调用端点(使用 vpn 服务器的 ip(在 Digital Ocean 上、本地主机,甚至是它的本地网络 ip(我认为)))时,它无法通过。

为了找到托管服务器的机器的本地 IP,我使用以下命令:ifconfig eth0 | grep inet | grep -v inet6

这返回了 3 个 IP 地址(inetnetmaskbroadcast),我尝试从我的笔记本电脑调用它们,认为其中一个可能是服务器的私有 IP。向它们发送任何类型的请求都不起作用。

我还启动了另一个没有使用 algo VPN 的 Digital Ocean droplet,并放置了相同的 http 服务器脚本,以查看我是否搞砸了服务器的编写。幸运的是,当我调用它时,我收到了“hello world”。

最后我想提一下。当我curl localhost:8080/在机器上进行 ssh 时,我会收到“hello world”。

我对网络总体上还很陌生,据我所知,连接到 VPN 后,您必须调用托管 VPN 的私有服务器的 IP 来将数据发送到服务器。您不会使用服务器的公共 IP(我用来 ssh 进入的那个 IP)。

如果有人知道如何通过我的 vpn 将数据从我的客户端发送到我的服务器,那就太棒了!

答案1

我知道这已经过时了,但因为我是新手,所以我想尝试回答一些老问题。希望它能帮到别人,如果答案可以更好,我也不介意提出一些建设性的批评。

话虽如此...

如果您正在使用 VPN,则应该能够设置并了解相关服务器的私有 IP。使用私有 IP 进行连接。例如在 EC2 上,无论您的服务器托管在何处,私有 IP 都可以通过 AWS 控制台获得。它甚至可以更改。当您拥有私有 IP 时,如果您尝试连接但无法连接,那么您很可能没有在该 IP 地址上列出。尝试在 0.0.0.0 上提供服务,它将监听所有接口。

换句话说 10.0.0.1 != 127.0.0.1 但 0.0.0.0 == 10.0.0.1 || 127.0.0.1 || somewebsite.com || localhost

监听所有接口:

simplehttpserver --host 0.0.0.0

仅在本地主机上监听(这可能是您的情况),如果是这样,请使用 0.0.0.0 或使用反向代理(如 nginx 和 proxy_pass)将所需端口的私有 IP 传递到正确的地址。

server {
    listen       80;
    server_name  someurl.com  10.0.0.1;

    location / {
             proxy_pass http://127.0.0.1/
    }
}

簡化...

假设您使用 simplehttpserver 节点模块...更改此设置:

simplehttpserver --host 127.0.0.1

更改为:

simplehttpserver --host 0.0.0.0

后者将监听所有接口......

您可能还拥有像 ufw 这样的防火墙,或者可能需要调整 netables。

有很多方法可以获取相关服务器的私有 IP。在网络地址转换器后面,它们通常相隔几个数字。要获取此地址,您可以使用 ifconfig 并找到您在该网络上使用的网络接口。或者,如我上面所述,通过 VPN 主机。如果您是主机,请转到您的配置并查找和/或设置私有 IP/范围。如果感到困惑,只需检查以确保您没有使用公共 IP。

私有 IPv4 地址 = 10.0.0.0 至 10.255.255.255.172.16.0.0 至 172.31.255.255

ifconfig

ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 172.31.32.98  netmask 255.255.240.0  broadcast 172.31.47.255
        inet6 fe80::4c2:8eff:fe3c:7b1c  prefixlen 64  scopeid 0x20<link>
        ether 06:c2:8e:3c:7b:1c  txqueuelen 1000  (Ethernet)
        RX packets 1176424  bytes 733671273 (733.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2570640  bytes 1796660017 (1.7 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

172.31.32.98 将是接口 ens5 运行的内部网络中的地址,本地网络上的其他人应该能够连接到它。例如,如果您在端口 4000 上运行开发应用程序,则同一网络上 172.31.32.64 上的用户将能够连接到该端口(如果您正在监听该端口)并检查您的开发应用程序。网络地址转换器正在创建这些地址并将其分配给子网内的每个成员,与您的路由器对互联网上的公共 IP 所做的操作没有太大区别。

希望对您有所帮助。serverfault 上的新内容。

干杯。

相关内容