linux绑定从机ip显示无,linux – 在进行出站TCP连接时,无法绑定到特定的IPv4地址,也不能绑定到同时解析为IPv4和IPv6地址的主机名...

我花了大约6个小时试图解决这个问题,现在我相信当连接到具有IPv6地址的主机名时,CentOS /

Linux无法绑定到特定的虚拟IPv4地址.这是具有多个IP地址的服务器上的问题.

我正在使用Centos 6(Linux内核2.6.32-573.12.1.el6.x86_64)

重现这个大:

>查找至少具有/ 29 IPv4公共地址空间和IPv6公共IP的Linux计算机.

>为主接口(eth0或其他)至少添加一个额外的IPv4.对于此示例,我将30.0.0.1视为计算机的主要eth0 IPv4地址,30.0.0.2是在30.0.0.0/29的网络上绑定到eth0:2的别名.

>查找同时具有IPv4和IPv6地址的主机名.例如,www.microsoft.com.

> telnet -b 30.0.0.2 www.microsoft.com 80(此测试使用特定的ipv4地址进行出站连接)

>尝试主机名的IPv6地址失败后,IPv4请求成功连接,但TCP连接实际上是从计算机的主IP(30.0.0.1)启动的,而不是您想要的IP(30.0.0.2). Netstat说不然,但是错了.如果连接到您拥有的主机名并且可以查看其日志,则连接来自主IP(30.0.0.1)而不是您想要的IP(30.0.0.2).

>尝试另一个没有IPv6地址的域,例如:telnet -b 30.0.0.2 serverfault.com.有用.它通过您想要的IP建立连接.

这是一个问题,因为某些程序(如邮件(exim))在发出出站TCP请求时需要使用某些IP,这不一定是主机的IP.在进行出站TCP连接时,计算机上的某些客户端/程序依赖ACL或反向DNS来正确匹配.

因此,如果其他人注意到在进行传出连接时程序无法绑定到正确的接口的同样奇怪的问题,这可能就是原因.

此问题仅影响IPv4连接. IPv6连接正确绑定到计算机上的任何传出IP.

这不是telnet的问题.我也使用我的邮件服务器(exim)测试了这个问题,并得到了类似的结果.如果目标主机名具有IPv6地址,则从错误的IP进行IPv4连接.

也许某人有解决这个奇怪问题的方法,但此时,我认为这可能是一个Linux网络错误.

Ps-如果有人想知道为什么不在主机名解析为IPv6地址时建立IPv6连接…有时IPv6地址已关闭或连接无法建立,则它将恢复为其IPv4地址.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值