ping 在 ubuntu 20.04 上返回 IPV6 地址
我已經在雲虛擬機上安裝了 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(submission,RFC 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)
如何解決您的問題
- 更改
AAAA
DNS 中的記錄。它可能應該是(注意附加的1
):mail.simoncarr.co.uk. 14400 IN AAAA 2a01:4f8:c2c:a992::1
- 修復您的郵件伺服器。對於傳入的郵件,您需要讓 SMTP 伺服器偵聽 TCP 埠 25。如果您可以從伺服器本身連接到此埠,您可能需要詢問服務提供商是否允許託管郵件伺服器。通常會在不用於傳遞郵件的連接上阻止埠 25,以此來對抗來自受感染電腦的垃圾郵件。