Ping nėra įrodymas: išbandykite kelią tarp dviejų vietovių
Ping iš šliuzo nieko nesako apie paslaugą. Eikite keliu nuo tikro kliento, naudokite programos protokolą ir atkurkite dydį ar pavadinimą, kuris nepavyksta.
Tunelis veikia, šliuzai atsako vienas kitam, o vienos vietovės vartotojai vis tiek negali atidaryti kitos vietovės failų bendrinimo. Kažkas pinga iš šliuzo, gauna atsakymą ir paskelbia tinklą sveiką. Tas atsakymas keliavo tarp dviejų įrenginių, kurie niekada nebuvo problema. Naudingas testas prasideda nuo mazgo, kuriam reikia paslaugos, naudoja protokolą, kurį naudoja programa, ir atkuria sąlygą, kurioje ji nepavyksta. Visa kita yra žalia šviesa keliui, kuriuo niekas neina.
Pradėkite nuo kliento, kuriam reikia paslaugos
Užsirašykite keturis dalykus prieš ką nors testuodami: kliento adresą, paskirties adresą, mazgo pavadinimą ir programos prievadą. Tada patvirtinkite, kad paslauga veikia lokaliai savo vietovėje, iš gretimo mazgo. Be šios bazinės linijos negalite atskirti sugedusio tunelio nuo sugedusios paslaugos, o pusė šių bilietų yra antrasis atvejis.
Išbandykite dokumentuotą mazgo pavadinimą ir, kur paslauga leidžia, tiesioginį to paties prievado adreso patikrinimą. Nepavykusi vardo paieška ir nepasiekiamas išspręstas adresas veda skirtingais keliais. Jei mazgo pavadinimą pakeisite IP, neišjunkite HTTPS tapatybės patikros, kad veiktų; sertifikato įspėjimas yra informacija, ne kliūtis.
Eikite keliu kiekviename krašte
Perskaitykite maršrutą, kurį pasirenka klientas, tada maršrutą, kurį šliuzas pasirenka šiai paskirčiai, tada skaitiklius arba apribotą fiksavimą kiekviename krašte. Ieškote dviejų faktų: ar užklausa pasiekė nuotolinį LAN, ir ar atsakymas grįžo. Sąsajos skaitikliai apima kiekvieną kitą srautą, todėl koreliuokite pagal tikslų laiko žymą ir adresų porą, o ne pagal grafiko formą. Fiksavimas netinkamame krašte yra blogiau nei jokio, nes atrodo kaip įrodymas.
ip route get 10.10.0.5
sudo tcpdump -ni any host 10.10.0.5 and port 445
sudo tcpdump -ni any net 10.10.0.0/24 and net 10.20.0.0/24
Jei užklausa pasirodo nuotoliniame krašte be atsakymo už jos, problema yra kitoje pusėje: ugniasienė, trūkstamas grįžimo maršrutas arba mazgas, kuris nepriima šaltinio. Jei užklausa niekada nepasirodo, vietinis maršrutas arba tunelio selektoriai jos nepernešė, o kita pusė dar neverta tyrimo.
Naudokite protokolą, kurį naudoja programa
ICMP yra silpna patikra. Ją galima filtruoti, riboti greičiu arba tvarkyti pagal kitokią nei paslaugos politiką, todėl ir sėkmė, ir nesėkmė tampa dviprasmiškos. Testuokite tikrąjį prievadą ir, kur galite, tikrąjį protokolo rankos paspaudimą.
nc -vz 10.10.0.5 445
curl -sv --max-time 5 https://files.corp.internal/ -o /dev/null
openssl s_client -connect 10.10.0.5:443 -servername files.corp.internal
Užbaigtas TCP rankos paspaudimas įrodo pasiekiamumą ir politiką tam prievadui. Tai neįrodo, kad programa veikia: autentifikavimas, įkėlimas ar konkretus API iškvietimas vis tiek gali nepavykti. Testuokite operaciją, kurią vartotojai iš tikrųjų atlieka, naudodami nekenksmingą atitikmenį, o ne pakartotinai siųsdami tikrą operaciją.
Atkurkite sąlygą, kurioje nepavyksta
Nesėkmės, pasireiškiančios tik dideliais perdavimais, yra dydžio problema, o ne ryšio. Nusiųskite didelį paketą su nustatytu don't-fragment bitu ir stebėkite, kur jis sustoja. Jei maža užklausa pavyksta, o didelė pakimba, tunelio MTU ir MSS tvarkymas šliuzuose yra kiti įtariamieji.
ping -M do -s 1400 10.10.0.5
ping -M do -s 1472 10.10.0.5
curl -sS --max-time 30 -F file=@./sample.bin https://files.corp.internal/upload
Jei nepavyksta tik vienas potinklis, pažiūrėkite į srauto selektorius, maršrutų skelbimus ir to potinklio grįžimo šliuzą. Jei nepavyksta tik mazgo pavadinimas, sekite DNS, įskaitant tai, kurį sprendiklį naudojo klientas ir ar nuotolinis vaizdas matomas iš tos vietovės. Trys skirtingos nesėkmės, trys skirtingi pataisymai, o ping testas nė vienos jų neišskiria.
Po pataisymo pakartokite tą patį testą
Paleiskite tą patį klientą, paskirtį, prievadą ir naudingąją apkrovą dar kartą. Tada prisijunkite iš naujo arba išbandykite atsarginį kelią, jei dizainas jį turi, nes pataisymas, veikiantis tik tol, kol gyva pradinė tunelio kopija, nėra išbandytas. Laikykite testą susietą su tikru šaltiniu, tikra paskirtimi ir tikra operacija, o ne su vienu žaliu indikatoriumi ataskaitų srityje.
Užrašykite keturias bazines vertes ir rezultatą. Kitas to paties simptomo pranešimas tada galės prasidėti nuo įrodymų, o ne nuo ping.