【发布时间】:2018-07-14 21:06:15
【问题描述】:
你好 StackOverflow!
我最近购买了一个 VPS,在那里我获得了 64 个 IPv6 地址,但我发现自己无法使用除 :1 之外的任何一个地址。 IPv6 网关看起来像这样(出于安全原因,用x 屏蔽)xxxx:xxxx:x:xxx::a 其中a 是 1 到 64,我应该将它们全部用于我的服务,我只是无法使用它们中的任何一个除了 1。它说 1 自动分配给我的 VPS 上安装的操作系统,这是否意味着我也必须分配其余的地址?如果是这样,我该怎么做?
这是我在 Node.js 中用来尝试的代码。
const Express = require("express");
const App = Express();
App.use(Express.static(__dirname+"/www"));
const Listener = App.listen(1024, "xxxx:xxxx:x:x:xx::2", () => {
const addr = Listener.address();
console.log("Listening on " + addr.address + ":" + addr.port);
});
我启动它时遇到的错误是:
Error: listen EADDRNOTAVAIL xxxxx:xxxx:x:x:xx::2:1024
at Server.setupListenHandle [as _listen2] (net.js:1318:19)
at listenInCluster (net.js:1383:12)
at doListen (net.js:1509:7)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
at startup (internal/bootstrap/node.js:236:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:560:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1362:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
[... lines matching original stack trace ...]
at bootstrapNodeJSCore (internal/bootstrap/node.js:560:3)
【问题讨论】:
-
仅仅因为您的 VPS 提供商向您提供了这些地址,并不意味着他们配置了您的 VPS 以使用它们。检查操作系统工具和/或您的 VPS 控制面板,看看它们是否实际分配给了相关机器。
-
我运行的是 Ubuntu 16.04.4 LTS,我该如何检查? (对不起,我知道我真的很愚蠢)
-
命令行工具 ifconfig 会告诉你机器有哪些接口以及分配了哪些 IP。我不知道您拥有哪个 VPS 提供商,但例如亚马逊也有一个 Web 控制台,可以显示(并让您更改)绑定的 IP。话虽如此,一个盒子的 64 个地址似乎很多,你确定这是你需要走的路吗?除非是虚拟路由器或交换机,否则您不应该拥有那么多独特的网络接口。
-
我很确定这 64 个地址对我来说(或应该)可用,这是截图 ibb.co/f3rX48 我会试试 ifconfig 看看有什么
-
再一次,“对您可用”与“分配给虚拟机”不同。这就像晚餐预订。你可以打电话预订一张桌子,它对你来说是可用的,但在你出现并坐下之前,没有座位分配给你的臀部。 ;)