linux – 在进行出站TCP连接时,无法绑定到特定的IPv4地址,也不能
我花了大约6个小时试图解决这个问题,现在我相信当连接到具有IPv6地址的主机名时,CentOS /
Linux无法绑定到特定的虚拟IPv4地址.这是具有多个IP地址的服务器上的问题.
我正在使用Centos 6(Linux内核2.6.32-573.12.1.el6.x86_64) 重现这个大: >查找至少具有/ 29 IPv4公共地址空间和IPv6公共IP的Linux计算机. 这是一个问题,因为某些程序(如邮件(exim))在发出出站TCP请求时需要使用某些IP,这不一定是主机的IP.在进行出站TCP连接时,计算机上的某些客户端/程序依赖ACL或反向DNS来正确匹配. 因此,如果其他人注意到在进行传出连接时程序无法绑定到正确的接口的同样奇怪的问题,这可能就是原因. 此问题仅影响IPv4连接. IPv6连接正确绑定到计算机上的任何传出IP. 这不是telnet的问题.我也使用我的邮件服务器(exim)测试了这个问题,并得到了类似的结果.如果目标主机名具有IPv6地址,则从错误的IP进行IPv4连接. 也许某人有解决这个奇怪问题的方法,但此时,我认为这可能是一个Linux网络错误. Ps-如果有人想知道为什么不在主机名解析为IPv6地址时建立IPv6连接…有时IPv6地址已关闭或连接无法建立,则它将恢复为其IPv4地址. 解决方法
您可以信任netstat为您提供有关IP地址的正确信息(至少只要使用-n).
如果TCP连接的端点不同意正在使用的IP地址,则意味着两者之间存在NAT. 从评论中提供的其他信息中我们了解到,在这种特殊情况下,一个多余的iptables规则-A POSTROUTING -j MASQUERADE就是问题的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |