我已经设置了一个算法我在 Digital Ocean(运行 Ubuntu)上建立了一个服务器,并 sshed 进入该服务器,并编写了一个接受请求并返回“hello world”的小型 http 服务器。
我已成功将我的笔记本电脑(macos)连接到 VPN。
然而,当我调用端点(使用 vpn 服务器的 ip(在 Digital Ocean 上、本地主机,甚至是它的本地网络 ip(我认为)))时,它无法通过。
为了找到托管服务器的机器的本地 IP,我使用以下命令:ifconfig eth0 | grep inet | grep -v inet6
这返回了 3 个 IP 地址(inet
、netmask
、broadcast
),我尝试从我的笔记本电脑调用它们,认为其中一个可能是服务器的私有 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 上的新内容。
干杯。