在我的VPS(一个带有Ubuntu 12.04 LTS的tophost.it “TopServer”)上,由于前几天我所有的应用程序都无法发送邮件。 我可以从日志中了解到每个请求都会超时。
然后,我试图从terminaltelnet smtp.gmail.com 587
打电话,我注意到以下exception:而在其他所有运行良好的服务器上,答案只需要几ms就可以处理
Trying 173.194.65.109... Connected to gmail-smtp-msa.l.google.com.
在VPS问题的答案是相反的
Trying 2a00:1450:4013:c01::6c...
.. 只有大约一分钟后 (在这期间,应用程序将超时我猜)…它终于说:
Trying 74.125.136.108... Connected to smtp.gmail.com.
那么这里发生了什么? 为什么在尝试使用IPv6之前,只有几秒钟之后才能使用正确的IPv4? 我如何解决这个问题以避免超时错误?
我发现一个禁用IPv6的临时修复程序。 我所做的是/etc/sysctl.conf
添加到/etc/sysctl.conf
:
#disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
然后重新启动或指示sysctl重新加载。 现在这些应用程序能够再次发送电子邮件,并且没有最初的延迟。
您始终可以知道是否通过运行启用了IPv6
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
从terminal。 两个可能的答案:0 =>启用IPv6; 1 =>禁用IPv6。
至less在等待服务提供商解决问题的同时,我学到了一些新的东西。
(无耻复制从https://stackoverflow.com/a/29939735/32453 )
您可以将Ubuntuconfiguration为使用IPv4 over IPv6。 这样,您将能够发送电子邮件并访问仅IPv6网站。 编辑/etc/gai.conf并取消注释以下行:
precedence ::ffff:0:0/96 100