Ruch SSH przez połączenie openvpn zawiesza się, gdy przechwytuję plik

13

Mam konfigurację połączenia openvpn (wersja 2.1_rc15 na obu końcach) między dwoma skrzynkami Gentoo przy użyciu współdzielonych kluczy. w większości działa dobrze. Używam mysql, http, ftp, scp nad VPN bez żadnych problemów. Ale kiedy przesyłam ssh od klienta do serwera przez VPN, dzieją się dziwne rzeczy. Mogę się zalogować, mogę wykonać niektóre polecenia. Ale jeśli spróbuję uruchomić aplikację ncurses, taką jak top, lub spróbuję przechwycić plik, połączenie zostanie zawieszone i będę musiał przerwać sesję ssh.

Mogę na przykład wykonać polecenie „echo bla; echo.; Echo bla” i wyświetli trzy wiersze tekstu w ciągu sesji ssh. Ale jeśli wykonam polecenie „cat / etc / motd”, sesja zawiesi się w momencie naciśnięcia klawisza Enter.

Skompilowałem Openvpn 2.1.1 na moim Macu i skopiowałem z katalogu config z mojego klienta Gentoo. Mac podłączony i sesje ssh działały dobrze bez zamrażania.

Następnie skompilowałem go na moim starszym pudełku Gentoo (jądro 2.6.26), które wycofuję z powodu umierania dysku twardego, a ssh nad nim również działa idealnie.

Dlaczego nie działa na moim nowym pudełku Gentoo? Próbowałem skompilować trzy różne jądra na wypadek, gdyby tak było, ale poza tym nie powinno być różnicy między moimi starszymi a nowszymi pudełkami Gentoo, o których mogę myśleć.

Wszelkie sugestie dotyczące tego, co jest nie tak?

Pawz Lion
źródło
W moim przypadku ssh, cat, top& HTTP wszystko działało, ale scpnie zrobił (byłoby pokazać 100% przeniesione i powiesić tam). Naprawiono obniżenie MTU do 1380.
Roger Dueck

Odpowiedzi:

14

Pachnie jak problem Mtu. spróbuj obniżyć go, jak opisano w oficjalnym podręczniku lub w tym poście na blogu .

pQd
źródło
2
Dzięki. Próbowałem zrzucić MTU interfejsu Ethernet bez rezultatu, ale dodanie „fragmentu 1400” do klienta i serwera, tak jak we wspomnianym poście, działało świetnie. Zastanawiam się, dlaczego starsze pudełko Gentoo działało dobrze, a nowsze nie. No cóż, teraz naprawione. Dzięki
Pawz Lion
Dzięki. To naprawiło mój problem. W biurze mam taką samą konfigurację bez żadnych problemów, ale w moim domu ma zawieszone przypadki. Jeśli zwińę adres URL pliku za pomocą -, zawiesi się. Bez - działa: D, a jeśli podzielę długie linie w pliku, to również działa. To nie ma sensu, ale dziękuję za rozwiązanie.
Peter
1
Zwróć uwagę na opcję mtu-testową openvpn wspomnianą w powyższym blogu. To empirycznie przetestuje mtu twojego tunelu openvpn, abyś wiedział, jakich wartości użyć, ustawiając fragment i mssfix, i nie tylko zgadujesz. Widziałem wiele postów w Internecie ustawionych na mtu / fragment na 1400, 1350, 1200 itd. Ale kiedy faktycznie uruchomiłem test Mtu, openvpn ustalił MTU na 1189!
jdhildeb
7

To polecenie rozwiązuje to dla mnie:

$ sudo ip link set dev tun0 mtu 1350 && echo ":)"

Możesz zweryfikować ustawienia tun0 za pomocą

$ ip a s

Twoje zdrowie!

Sebastián A. La Spina
źródło
2

Tak, wszystko dotyczy MTU.

Ale w moim przypadku mam problem jeszcze bardziej dziwny. W domu przy użyciu klienta Windows OpenVPN zawiesza się. Ale w moim biurze działa dobrze.

Próbowałem to zmienić w moim modemie ADSL bez powodzenia. W moim biurze korzystam z modemu kablowego i innego usługodawcy internetowego.

Po zmianie MTU adaptera Windows TAP na 1200, działa dobrze. Coś więcej niż to by mnie zamroziło.

wprowadź opis zdjęcia tutaj

Luiz Vaz
źródło
1

Miałem podobny problem, gdy OpenVPN łączył się przez 3 g przy złym zasięgu i utracie utraty pakietów. Przełączenie na TCP zamiast UDP naprawiło wszystkie problemy, które miałem później. Mam nadzieję, że to ci pomoże.

Valentt
źródło
Uruchomienie VPN przez TCP wiąże się z własnym zestawem problemów. Naprawienie problemu MTU i pozostanie przy UDP prawdopodobnie będzie działać lepiej niż przy użyciu TCP.
kasperd
W przypadku zmiany OP tylko MTU jest prawdopodobnie lepszą propozycją niż zmiana z TCP na UDP. Jeśli masz bardzo złe, tak złe, że OpenVPN nawet nie ustanowi stabilnego połączenia, powinieneś wypróbować TCP zamiast UDP. W bardzo złych przypadkach 3G przejście na TCP było dla mnie jedyną rzeczą.
valentt
0

Użyłem tunelowania zamiast OpenVPN i nie mogłem znaleźć konfiguracji dla wartości MTU. Zamiast tego znalazłem interfejs VPN na wyjściu ifconfig(w moim przypadku tak było utun0) i ustawiłem MTU dla niego ręcznie tak:

ifconfig utun0 mtu 576

Potem moja sesja ssh już się nie zawiesi.

Zoltán
źródło