Czy można sprawdzić blipy w Internecie za pomocą tuneli SSH?

0

Zasadniczo w pracy tracimy łączność z Internetem na kilka sekund na raz, co wystarcza, aby zabić nasze tunele SSH, zabić nasze połączenia VoIP itp. Mam konfigurację cronjob z własnym skryptem do wykrywania poważnych awarii ( trwające dłużej niż minutę), ale nie mogę wykryć tych trwających sekundę awarii.

Zwykle w ciągu dnia mam tunel SSH podłączony do jednego z naszych serwerów. To połączenie trwa przez większość dnia, więc myślę o utworzeniu skryptu, który tworzy kolejne połączenie z tym samym serwerem, rejestruje, kiedy połączenie z serwerem jest zrywane, a następnie ponownie ustanawia połączenie w celu dalszego logowania. Czy jest to możliwe przy podstawowym bashu?

NobleUplift
źródło
To bardzo niezwykłe, że bardzo krótka przerwa spowodowałaby przerwanie sesji SSH. Miałem sesję SSH, która przetrwała po ponownym uruchomieniu routera pośredniego między klientem a serwerem. Czy na pewno prawidłowo zdiagnozowałeś swój problem? To, co prawdopodobnie powinieneś zrobić, to skonfigurować prawdziwy system monitorowania. Coś w rodzaju Smokeping, Nagios itp. Zamiast próbować wynaleźć koło na nowo.
Zoredache,
Cóż, wcześniej traciliśmy internet na 5-15 minut na raz. W rzeczywistości w ostatni piątek największy czas przestoju wynosił 23 minuty. Jednak tydzień wcześniej nie mieliśmy długich przestojów. Dostaję „Broken pipe”, inny współpracownik straciłby połączenie ze Skype lub nie byłby w stanie wysyłać e-maili, a strony internetowe nie ładowały się przez kilka sekund.
NobleUplift,

Odpowiedzi:

1

Istnieje kilka sposobów przeciwdziałania utracie łączności dla sesji ssh.

Po pierwsze, możesz ustawić opcje ServerAliveInterval, ClientAliveInterval i ClientAliveCountMax. ServerAliveInterval to liczba sekund, jaką klient będzie czekał przed wysłaniem pakietu zerowego na serwer (aby utrzymać połączenie przy życiu), typowa jest wartość 60. ClientAliveInterval to liczba sekund, przez którą serwer będzie czekał przed wysłaniem pustego pakietu do klienta. Wreszcie, ClientAliveCountMax to liczba ClientAliveInterval, w których klient może pozostać sieciowy, zanim połączenie zostanie zerwane; wartość domyślna to 3, co oznacza trzykrotność upływu czasu ClientAliveInterval.

Alternatywnie możesz użyć Mosh , mobilnej powłoki, która ...

umożliwia roaming, obsługuje przerywane połączenia oraz zapewnia inteligentne lokalne echo i edycję linii klawiszy użytkownika. Mosh zastępuje SSH. Jest bardziej niezawodny i responsywny, szczególnie w przypadku połączeń Wi-Fi, komórkowych i dalekobieżnych. Mosh to darmowe oprogramowanie dostępne dla systemów GNU / Linux, FreeBSD, Solaris, Mac OS X i Android.

Następnie możesz użyć autossh zamiast ssh:

autossh - Automatycznie restartuj sesje SSH i tunele

To, którą drogą wybierzesz, zależy głównie od gustów. Jeśli chodzi o mnie, używam autossh do tuneli, które chciałbym mieć na stałe, szczególnie tunele do tyłu; Używam mosh do naprawdę katastrofalnych połączeń, na przykład kiedy ssh''h do mojego laboratorium z samolotu lub samochodu. We wszystkich innych przypadkach dokonany zostanie rozsądny wybór powyższych parametrów dla openssh: na przykład mój plik .ssh / config zawiera następujące wiersze:

 Host * 
    ServerAliveInterval 60
    IdentitiesOnly yes

i podobnie dla serwerów, w pliku / etc / sshd_config .

Nawiasem mówiąc, do monitorowania połączenia przez długi czas możesz użyć mtr (= My TraceRoute), inteligentnej kombinacji traceroute i ping, która będzie wykonywać traceroute co tyle sekund (domyślnie = 1 sekunda) danej witryny i bezproblemowo zaktualizuje statystyki udanych pingów, dając ci możliwość ustalenia co najmniej średniej części czasu bezawaryjnej pracy, ale nie ich dystrybucji.

MariusMatutiae
źródło
O czasie odpowiedziałem na to. Rozwiązaniem było przełączenie dostawców usług internetowych z Comcast na AT&T, ale są to świetne sugestie, gdy pracuję w podróży.
NobleUplift,
0

W końcu poprawiłem skrypt, aby zasadniczo działał nieprzerwanie i zaczyna logować się po utracie połączenia, zamiast szukać utraconego połączenia:

https://github.com/NobleUplift/NetCheck

Ale tak naprawdę musieliśmy po prostu zmienić dostawcę usług internetowych.

NobleUplift
źródło