Uzak IP üzerinden SSH neden yerel IP'den daha hızlı olsun?


3

Evimden çalışan ve genel IP adresime işaret eden bir DynDNS URL kurulumu olan bir Linux sunucum var.

Dikkatimi çektiğim şeylerden biri de url.dyn-dns.tvgenel IP adresimin uzak adresini kullanmak, yerel bölgeye kıyasla daha hızlı bir şekilde sunucuya bağlanıyor 192.168.xx.xx.

Bunun neden olabileceği hakkında fikri olan var mı?


neden ödül? sorunun DNS olmadığını mı söylemek istiyorsunuz yoksa yalnızca DNS'nin geriye doğru aramasının neden SSH'yi yavaşlattığı konusunda daha fazla bilgi edinmek mi istiyorsunuz?
mihi

Ödül, çünkü daha fazla bilgi istiyorum. DNS olmadığını söylememek sadece orijinal cevaplar onu detaylı bir şekilde tarif etmiyordu ve düzeltmeler olup olmadığını merak ediyordum.
Hibe

Varsayılan rota / ağ geçidiniz nedir? Linux sunucunuzdan farklı mı? O zaman ARP Cache ile ilişkili olabilir.
artistoex

Hangi ethernet / katman 2 cihazları katılıyor? Birbirleriyle nasıl bağlantılılar? Belki bu fenomen yalnızca 3/4/7 katmanında açıklanamaz.
artistoex

Bu, dns ise, iki düzeltme vardır: LAN IP'leriniz için ters DNS ayarlayın veya sunucuda ters DNS kaydını devre dışı bırakın: D (veya sağlayıcınıza ortak IP'niz için ters DNS'yi devre dışı bırakmasını söyleyin, her iki yol da yavaş olacaktır. ..)
mihi

Yanıtlar:


8

tl; dr Sunucudaki DNS çözücü yapılandırmasını düzeltin. (geçici bir çözüm SSHD'de geriye doğru aramaları kapatmaktır, ancak kırılanları düzeltmek daha iyidir)


Orijinal cevap

Bunun neden olabileceği hakkında fikri olan var mı?

Pek değil ama işte size yardımcı olabilecek bir fıkra:

Geçmişte, farklı bir protokolle, bir bağlantının kurulmasının çok uzun sürmesi uzun sürdüğünde, bunun bir nedenin, sunucu bir IP adresinin adını aramaya çalıştığında DNS zaman aşımına uğradığını ve böylece müşteri adını günlüklerine kaydedebildiğini buldum. . İstemci IP adresiniz yerel DNS servisi tarafından doğru bir şekilde bilinmiyorsa ve DNS uygun şekilde yapılandırılmamışsa, sunucu DNS'nin zaman aşımına uğramasını bekleyebilir.

Bu tür bir etki aramanın yolu, başlangıçta istemcide olduğu kadar sunucuda da ağ dinleyicileri çalıştırmaktır; bu durumda, bağlantıyla ilgili bir ağ trafiği görmeniz mümkün olabilir; veya hangisi yanıt alamaz (yeniden denemeler görebilirsiniz)

tcpdump ve wireshark iyidir.


Güncelleme 1

Bağlantıda gecikme olan istemcide

  • müşterinin IP adresini bulun

    • Windows'ta bir komut istemi penceresi açın ve yazın ipconfig
    • Linux'ta bir terminal penceresi açın ve yazın ifconfig -a
  • isteğe bağlı olarak sunucunun IP adresini hızlıca arayabileceğinizi onaylayın

    • pencerelerde nslookup servername
    • Linux'ta dig servernameveya host servernamekazmadıysanız.

Sunucuda

  • müşterinin adını aramak
    • /etc/resolv.confilk DNS ad sunucusunun adresini kontrol edin
    • yazın dig -x 192.168.n.m @nameserverveya host 192.168.n.m serverburada 192.168.nm, istemcinin gerçek IP adresi ile değiştirilir ve ad sunucusu, ad sunucusunun IP adresidir.
    • listelenen diğer ad sunucuları için tekrarlayın /etc/resolv.conf

Sunucu milisaniye cinsinden bir yanıt almalıdır. Bozuk bir DNS yapılandırmasıyla zaman aşımına uğramak birkaç saniye alacaktır.

iyi yapılandırma

# time host 192.168.3.4
Host 4.3.168.192.in-addr.arpa. not found: 3(NXDOMAIN)

real    0m0.130s
user    0m0.000s
sys     0m0.020s

hatalı yapılandırma

# echo nameserver 1.2.3.4 > /etc/resolv.conf
# time host 192.168.3.4
;; connection timed out; no servers could be reached

real    0m10.010s
user    0m0.000s
sys     0m0.010s

10 saniyelik gecikmeye dikkat edin. Bu, günlüklerinde müşteri isimleri almak isteyen herhangi bir SSH servisinin, bir SSH bağlantısı kurmak için 10 saniye alacağı anlamına gelir.


Güncelleme 2

Görünüşe göre bu Q (muhtemelen) kesin bir kopyasıdır Ubuntu 9.05 sunucuma SSH gönderdiğimde neden "şifre" sorusu sonsuza dek sürüyor?


Çözüm

Sunucudaki DNS çözücü yapılandırmasını düzeltin.


Neredeyse kesinlikle bir DNS sorunu. Uzak IP'nin geçerli bir DNS'si var. İç IP değil.
David Schwartz

Bir DNS sorunu, bağlantı yavaş olduğu halde, hiç bağlantı olmadığı anlamına gelir .
harrymc

@harrymc: Bir Fortune-100 şirketi için DNS'i yönetiyordum. Bu belirti ile ilgili problemlerde ağ analizörlerini kullandım. Bu gerçekten olur. İstemci, sunucunun IP adresini arayabilir, sunucu yalnızca oturum açma amaçları için istemcinin adını IP adresinden bulmayı bekler.
RedGrittyBrick 6:12

3

Yerel bir DNS çalıştırmadığınızı tahmin edeceğim, bu nedenle ssh sunucusu geriye doğru bir DNS araması yapmaya çalıştığında zaman aşımı bekliyor. Harici adrese bağlanırken, DNS toplayıcısını geçen bir IP adresi üzerinden DOĞALSINIZ.

Ters DNS aramalarını kapatmak için sshd_config dosyanızı düzenleyip "UseDNS" satırını bulup "hayır" olarak ayarlamanız gerekir. (Etkili olması için sshd'yi yeniden başlatmanız gerekir.) Alternatif olarak, yerel alt ağınız için kendi DNS sunucunuzu da kurabilirsiniz. (DNSMasq, BIND ile uğraşmak istemiyorsanız oynaması için iyi bir hafif)


1

Sen maksimal ayrıntılı seçeneği ile ssh çağırarak deneyebilirsiniz: ssh -v -v -v.
Bu, bazı yararlı bilgiler verebilir.

Aklıma gelen bir açıklama, sunucunuzun iPv4'ü dinleyip dinlemediğini, ancak hala yerel sisteminizde iPv6'yı etkinleştirdiğinizdir. Bekleme süresi, ssh iPv6'daki sunucuya erişmek için boşuna çalışırken, pes eder ve iPv4'ü başarılı bir şekilde denediğinde olur.

Her durumda, hangi ağ bağdaştırıcılarının etkin olduğunu doğrulamanızı ve yararsız olanları devre dışı bırakmanızı öneririm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.