如何绑定非本地IPv6地址?

Val*_*tin 7 linux ipv6 boot ip-address

ipv6 是否有 net.ipv4.ip_nonlocal_bind 等价物?需要在这样的 IP 上启动我的 nginx ......

尽管有这个 /etc/network/interface ,我的 Ubuntu 没有足够快地在 eth0 上分配这个 IPv6 :

iface eth0 inet6 static
    address 1:2:3:4::5
    netmask 64
Run Code Online (Sandbox Code Playgroud)

在启动期间:

Starting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
[emerg]: bind() to [1:2:3:4::5]:80 failed (99: Cannot assign requested address)
Run Code Online (Sandbox Code Playgroud)

我需要/etc/init.d/nginx restart在启动后运行几秒钟才能使事情正常工作:-/

注意:1:2:3:4::5 在这里仅用于演示,我的服务器上有一个有效的 IPv6 地址。

wom*_*ble 5

net.ipv6.ip_nonlocal_bind内核4.3加入sysctl的,所以如果你正在运行一个更出血边缘系统,你现在可以直接用sysctl的解决这个问题,而不是解决该问题与初始化脚本黑客。


jon*_*n_d 0

由于 ipv6 似乎没有这样的内核参数,您可以破解 nginx 的 init 脚本并添加:

grep -q eth0 /etc/network/run/ifstate || ifup eth0
Run Code Online (Sandbox Code Playgroud)

在命令启动 nginx 之前的某个地方?

或者,当您似乎使用 debian 或衍生版本时,您可以尝试在软件包的帮助下通过依赖性重新排序初始化脚本insserv,并通过设置变量切换到并行初始化脚本启动CONCURENCY=makefile/etc/default/rcS如果您使用的是 Debian Squeeze,则这是默认配置)。