Ubuntu

ping 在 ubuntu 20.04 上返回 IPV6 地址

  • January 31, 2021

我已經在雲虛擬機上安裝了 GitLab,不久之後,我用同一提供商 (Hetzner) 建立了第二台虛擬機作為後綴伺服器

當我回到 GitLab 伺服器以啟用 SMTP 電子郵件並且沒有發送任何內容時,我首先註意到一個問題,甚至郵件伺服器上沒有任何日誌表明已嘗試連接。

在 GitLab 伺服器上

我試圖從 gitlab ping 郵件伺服器,但無論我等待多長時間,都只得到一個響應並且沒有進一步的響應。

root@gitlab:~# ping mail.simoncarr.co.uk
PING mail.simoncarr.co.uk(2a01:4f8:c2c:a992:: (2a01:4f8:c2c:a992::)) 56 data bytes

如您所見,這是一個 IPV6 響應。我不記得除了啟用ufw會影響 gitlab 網路的其他任何事情。

我已經關閉ufw了 gitlab 和郵件伺服器,並且得到了相同的行為。

如果我 ping 外部伺服器,我仍然會收到 IPV6 響應,但我至少會收到多個響應。

root@gitlab:~# ping bbc.co.uk
PING bbc.co.uk(2a04:4e42:600::81 (2a04:4e42:600::81)) 56 data bytes
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=1 ttl=58 time=3.68 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=2 ttl=58 time=3.47 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=3 ttl=58 time=3.52 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=4 ttl=58 time=3.50 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=5 ttl=58 time=3.49 ms

在郵件伺服器上

如果我 ping gitlab 伺服器,我會得到 IPV4 響應,並且它們會按照您的預期重複。

PING gitlab.simoncarr.co.uk (168.119.124.76) 56(84) bytes of data.
64 bytes from static.76.124.119.168.clients.your-server.de (168.119.124.76): icmp_seq=1 ttl=58 time=0.878 ms
64 bytes from static.76.124.119.168.clients.your-server.de (168.119.124.76): icmp_seq=2 ttl=58 time=0.463 ms
64 bytes from static.76.124.119.168.clients.your-server.de (168.119.124.76): icmp_seq=3 ttl=58 time=0.353 ms
64 bytes from static.76.124.119.168.clients.your-server.de (168.119.124.76): icmp_seq=4 ttl=58 time=0.419 ms

如果我從郵件伺服器 ping 外部伺服器,我會再次收到 IPV6 響應。

root@mail:~# ping bbc.co.uk
PING bbc.co.uk(2a04:4e42:600::81 (2a04:4e42:600::81)) 56 data bytes
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=1 ttl=58 time=6.68 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=2 ttl=58 time=6.24 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=3 ttl=58 time=6.23 ms
64 bytes from 2a04:4e42:600::81 (2a04:4e42:600::81): icmp_seq=4 ttl=58 time=6.16 ms

我在郵件伺服器上更改的唯一與網路相關的是將反向 DNS 地址添加到 IPV4 和 IPV6 地址。

回到我的實際問題。

我希望能夠從 GitLab 伺服器連接到我的郵件伺服器以發送 SMTP 電子郵件。即使ufw在兩台伺服器上都禁用,GitLab 也不會與郵件伺服器通信。我不禁認為這個問題與我上面描述的行為有關。

HTTP到我的 GitLab 伺服器的網路流量工作正常,我的郵件伺服器從郵件客戶端和其他 SMTP 伺服器發送和接收電子郵件也正常。

關於調試問題的合適方法

測試服務時,最好嘗試連接到服務,而不是使用ping. 雖然ICMP 回顯可能有助於診斷一些問題,但它在這裡並不能說明太多,因為它可能響應或不響應的原因太多,而且與實際問題的關係不大。

在您的 DNS 中,您有:

;; ANSWER SECTION:
simoncarr.co.uk.        14400   IN      MX      11 mail.simoncarr.co.uk.

;; ADDITIONAL SECTION:
mail.simoncarr.co.uk.   14400   IN      AAAA    2a01:4f8:c2c:a992::
mail.simoncarr.co.uk.   14400   IN      A       188.34.201.61

這意味著您的郵件伺服器被宣傳為具有 IPv6 和 IPv4 連接,但在 SMTP 埠 25 上都沒有響應:

$ nc 188.34.201.61 25 -vvv
nc: connect to 188.34.201.61 port 25 (tcp) failed: Connection timed out

$ nc 2a01:4f8:c2c:a992:: 25 -vvv
nc: connect to 2a01:4f8:c2c:a992:: port 25 (tcp) failed: Connection timed out

但是,IPv4 地址在埠 465(smtps,RFC 8314)和 587(submissionRFC 6409)上回答,但 IPv6 地址沒有:

$ nc 188.34.201.61 465 -vvv
Connection to 188.34.201.61 465 port [tcp/submissions] succeeded!

$ nc 188.34.201.61 587 -vvv
Connection to 188.34.201.61 587 port [tcp/submission] succeeded!
220 mail.simoncarr.co.uk ESMTP Postfix (Ubuntu)

$ nc 2a01:4f8:c2c:a992:: 465 -vvv
nc: connect to 2a01:4f8:c2c:a992:: port 465 (tcp) failed: Connection timed out

$ nc 2a01:4f8:c2c:a992:: 587 -vvv
nc: connect to 2a01:4f8:c2c:a992:: port 587 (tcp) failed: Connection timed out

知道您已禁用防火牆,這表明您的 DNS 中有錯誤的 IPv6 地址,或者郵件伺服器完全沒有 IPv6 連接。通常你可以ifconfig在郵件伺服器上使用來解決這個問題,但我很幸運,因為我的第一個猜測是正確的:

$ nc 2a01:4f8:c2c:a992::1 587 -vvv
Connection to 2a01:4f8:c2c:a992::1 587 port [tcp/submission] succeeded!
220 mail.simoncarr.co.uk ESMTP Postfix (Ubuntu)

如何解決您的問題

  1. 更改AAAADNS 中的記錄。它可能應該是(注意附加的1):
mail.simoncarr.co.uk.   14400   IN      AAAA    2a01:4f8:c2c:a992::1
  1. 修復您的郵件伺服器。對於傳入的郵件,您需要讓 SMTP 伺服器偵聽 TCP 埠 25。如果您可以從伺服器本身連接到此埠,您可能需要詢問服務提供商是否允許託管郵件伺服器。通常會在不用於傳遞郵件的連接上阻止埠 25,以此來對抗來自受感染電腦的垃圾郵件。

引用自:https://serverfault.com/questions/1051826