我有一个使用内核选项ipv6.disable=1
引导的Linux (Ubuntu )服务器,因此IPv6不可用。
我也有一些双栈软件,广告它只与IPv4机器工作,而且我不能改变。这个软件现在想绑定到::
,当然这是失败的。我能否以某种方式配置操作系统,使此服务器绑定到0.0.0.0
并使用IPv4?
编辑:或者,这可以在绑定之前,在名称解析期间完成吗?该软件试图解析::
,如果它获得IPv4 address 127.0.0.1
作为响应,我认为它将使用IPv4。
发布于 2021-08-11 12:50:55
即使有可能,你所要求的也是行不通的。如果软件绑定到::,那么它可以假设地址将以IPv6格式呈现给它。接受的套接字将是IPv6,IPv4地址将被封装。
因此,192.168.1.1变成::FFFF:192.168.1.1
换句话说,即使您可以以某种方式绑定到一个不同的IP,您也会使它成为一个IPv4套接字,而软件并不是用来处理这个套接字的。该软件需要这是一个IPv6套接字,但它不能,因为IPv6已被禁用。
禁用IPv6时没有兼容性代码。底线是您禁用了IPv6,您正在使用的软件需要启用它。
这里您唯一的选择是启用IPv6 (从您的问题中不清楚为什么需要禁用它),或者自己从源代码重新编译IPv6软件,可能是修补源代码来“修复”问题。
https://unix.stackexchange.com/questions/663611
复制