Próbuję skonfigurować openssh-server, ale mam pewne problemy z połączeniem. Zmieniłem port na coś niestandardowego (57757), a następnie ustawiłem router na przekazywanie do tego portu. W mojej sieci LAN mogę ssh na mojej maszynie dobrze używając portu 57757, ale nie mogę tego zrobić w sieci WAN.
Jeśli jestem poza siecią LAN i próbuję uzyskać dostęp do mojego komputera przez niewłaściwy port, natychmiast pojawia się komunikat „odmowa połączenia”. Jednak przy odpowiednim porcie po prostu zawiesza się, a następnie kończy się limit czasu.
Co mogę spróbować debugować problem? Próbowałem traceroute, ale nie powiedział mi nic przydatnego.
EDYCJA: Zdałem sobie sprawę, że moim problemem było to, że mój router nie obsługiwał dostępu do niego przez WAN IP wewnętrznie. Połączyłem się z innym serwerem, wróciłem i działało dobrze.
sudo apt-get purge openssh-server
deskę ratunku”: następnie zainstaluj go ponownie (abyśmy pozbyli się wszystkiego, co mogło się zdarzyć przy konfiguracji) i ponownie skonfiguruj router, aby przekazywał 22-> 22.Odpowiedzi:
Zwykle oznacza to, że przekierowałeś port na niewłaściwy adres IP w sieci LAN.
Twój router NAT odbiera ruch przychodzący na porcie 57757 i wysyła go do określonego adresu IP i portu LAN.
Domyślnie Ubuntu nie filtruje przychodzących prób połączenia z zaporą. Tak więc, chyba że zmieniłeś ustawienia zapory w Ubuntu, próba otwarcia połączenia z dowolnym portem TCP, od 1 do 65535, albo:
Gdyby porty były filtrowane przez zaporę ogniową, dostaniesz to, co widzisz - bez odpowiedzi na próbę połączenia. Ale:
ufw
,iptables
), żadne porty nie są filtrowane, iGdy przekazujesz port do nieistniejącej maszyny z routerem NAT, wysyła on ruch przychodzący z tego portu do nieistniejącej maszyny, co oznacza, że wysyła ją do czarnej dziury ; jest skutecznie upuszczony.
To powoduje dokładnie opisaną sytuację. Najprawdopodobniej możesz to naprawić, upewniając się, że port jest przekierowywany na właściwy adres IP w sieci LAN.
Jeśli okaże się, że to nie był problem ...
... wtedy będziesz musiał rozwiązać niektóre problemy.
Czy port określony dla strony LAN jest prawidłowy? To znaczy, zakładając, że nie zmieniłeś konfiguracji serwera SSH, czy port 57757 po stronie WAN jest ustawiony na przekazywanie do portu 22 na serwerze OpenSSH? (Możesz to sprawdzić dwukrotnie).
Może jest jakiś problem z wybranym portem (57757). Wypróbuj inny i sprawdź, czy to działa lepiej.
(Jeśli nie, i postępujesz zgodnie z tymi instrukcjami, zmień go z powrotem lub zastąp „57757” poniżej nowym numerem).
Spróbuj zrestartować serwer OpenSSH. Może to pomóc w przypadku problemu z siecią. Jeśli to nie pomoże, spróbuj zrestartować router i modem kablowy / DSL / ISDN.
Jeśli z jakiegoś powodu nie możesz ponownie uruchomić wszystkich trzech urządzeń, zalecamy zrestartowanie wszystkiego, co możesz. Jeśli nie możesz zrestartować usługi OpenSSH, przynajmniej możesz zrestartować usługę i (bardziej prawdopodobne, że to naprawi) zdejmij interfejs i uruchom go ponownie.
Aby zrestartować serwer OpenSSH:
Aby obniżyć interfejs sieciowy, najpierw dowiedz się, na jakim interfejsie się on znajduje:
Zazwyczaj w przypadku urządzenia z pojedynczą kartą Ethernet i / lub pojedynczą kartą bezprzewodową Ethernet jest
eth0
i sieć bezprzewodowa jestwlan0
.Jeśli przewodowe połączenie Ethernet jest tym, co chcesz zdjąć i uruchomić ponownie, uruchom:
Następnie uruchomić:
Alternatywnie możesz uruchomić:
Śledzony przez:
Jeśli komputer używa NetworkManager do zarządzania interfejsem, na którym działa serwer OpenSSH, nadal zalecam wypróbowanie powyższych sposobów, ale możesz także spróbować rozłączyć się i ponownie połączyć w NetworkManager.
W przypadku połączenia Ethernet spróbuj także odłączyć kabel i podłączyć go ponownie. W przypadku połączenia bezprzewodowego spróbuj go wyłączyć przełącznikiem sprzętowym (jeśli taki istnieje) i włącz go ponownie.
Dzieje się tu coś dziwnego i nic z tego nie trwa bardzo długo - warto zachować ostrożność przed podjęciem bardziej żmudnych kroków rozwiązywania problemów.
Jak próbujesz uzyskać do niego dostęp ze strony WAN? Jeśli używasz do tego maszyny w sieci LAN (tylko połączenie z sieci LAN do adresu WAN routera), jest to obsługiwane tylko w przypadku niektórych routerów. W końcu zadaniem routera jest kierowanie ruchem między stronami WAN i LAN, a nie kierowanie ruchem z jednej strony do siebie. Obsługa łączenia się z przekierowanymi portami w sieci WAN IP z sieci LAN jest w rzeczywistości raczej wyjątkiem niż regułą, chociaż wiele routerów domowych / biurowych ma tę funkcję.
Więc jeśli nie testujesz portu przekierowującego z hosta po stronie WAN, powinieneś to zrobić. Dostępne są następujące opcje:
Połącz się ze strony WAN. Działa to, jeśli masz tam dostęp do komputera, na przykład dostęp SSH do zdalnego komputera w szkole, pracy, domu znajomego lub podobnym.
Podłączyć maszynę testową między routerem a co zapewnia jej połączenia z Internetem. Jeśli masz modem kablowy / DSL / ISDN z portem Ethernet i router jest do niego podłączony, możesz podłączyć przełącznik do modemu i podłączyć router do przełącznika. Podłącz komputer do przełącznika. Najpierw sprawdź, czy ta maszyna ma tylko dostęp do Internetu - obecnie wielu dostawców usług internetowych zapewnia dwa lub więcej oddzielnych adresów IP. Jeśli nie , przejdź do strony konfiguracji routera i sprawdź jego adres WAN IP i maskę podsieci WAN , a następnie statycznie przypisz adres IP do urządzenia podłączonego do przełącznika, które znajduje się w tej samej podsieci.
Ta metoda ma pewne wady. To ból! Teoretycznie możliwe jest, że dostawca usług internetowych nieprawidłowo skonfiguruje swoją sieć, aby maszyna testowa podłączona do przełącznika mogła uzyskać dostęp do Internetu. (Chyba że intencją twojego dostawcy usług internetowych jest połączenie się z więcej niż jednym adresem WAN IP iakurat wybrałeś adres WAN IP dla maszyny testowej, którą przypisał ci twój dostawca usług internetowych, ruch między nim a prawdziwym hostem WAN powinien zostać zablokowany / odrzucony przez dostawcę usług internetowych. Ale niektórzy dostawcy usług internetowych mają dziwne praktyki, więc kto wie?) Jeśli tak się stanie, prawdopodobnie nie spowoduje nikomu poważnych problemów (a nawet gdyby tak było, masz połączenie tylko przez kilka minut). Jednak może to być potencjalnie postrzegane jako próba uzyskania dodatkowego dostępu poza granice subskrypcji, a - co ważniejsze - jeśli inny użytkownik ma ten sam adres IP, może przeszkadzać w ich połączeniu. Dlatego jeśli chcesz wypróbować tę metodę, nie próbuj uzyskiwać dostępu do Internetu z maszyny testowej, zatrzymaj się natychmiast, jeśli okaże się, że maszyna testowa ma dostęp do Internetu i nie próbuj w ogóle, jeśli jest to zabronione lub odradzane przez Twojego dostawcę usług internetowych. (I nie używaj tego, jeśli strona WAN routera jest biurową siecią LAN, bez uprzedniej konsultacji z administratorem sieci. To nie jest dostawca usług internetowych i nie ma założeń, że zasoby są zabezpieczone przed niepożądanym dostępem).
Istnieje pewna odmiana tej techniki, która czasem jest bardziej odpowiednia. Router prawdopodobnie otrzymuje informacje o połączeniu - adres IP, maskę podsieci, adres IP bramy (routera) w sieci WAN, z której korzysta, gdy nie wie, gdzie coś wysłać, oraz informacje o serwerach DNS - z twojego ISP, przez DHCP, przez modem kablowy / DSL / ISDN. Dlatego musisz podłączyć router do modemu, aby uzyskać niezbędną konfigurację, aby wyniki testów po stronie sieci WAN były znaczące. Ale router zazwyczaj zapamiętuje te informacje, o ile faktycznie jest podłączony do sieci po stronie WAN. Możesz więc podłączyć router, modem i urządzenie testowe, ale potem szybko iprzed zrobieniem czegokolwiek z maszyną testową oprócz upewnienia się, że przełącznik widzi ją jako podłączoną , odłącz modem.
Skorzystaj z bezpłatnej usługi w Internecie, aby przetestować swoje porty. Ponieważ włożenie testowej maszyny między interfejs WAN routera a Internetem (powyżej) jest bardzo zaangażowane - i ponieważ pokaże port jako dostępny, nawet jeśli jest niedostępny z powodu zablokowania przez twojego usługodawcę internetowego (co jest również prawdą w przypadku łączenia się z routera WAN IP od strony sieci LAN) - zwykle lepiej jest skorzystać z internetowej usługi skanowania portów.
Istnieje wiele usług skanowania portów. (Niektórzy mają frazę „sprawdź swoją zaporę ogniową” z myślą, że większość ludzi próbuje zablokować, a nie ułatwić dostęp.) To jest jedna. Jeśli zdecydujesz się go użyć, kliknij Kontynuuj , wpisz 57757 w polu tekstowym i kliknij Użyj określonej niestandardowej sondy portu . Aby serwer mógł działać, chcesz , aby był „otwarty”. „Zamknięty” oznacza, że port jest dostępny, ale serwer nie działa (dlatego próba połączenia została odrzucona). „Stealth” oznacza, że port był niedostępny - to tak, jakby nie było tam żadnej maszyny (lub jakby port był przekazywany tam, gdzie nie ma żadnej maszyny).
OK, więc ustaliłeś, że tak naprawdę nie jest dostępny z Internetu. Potencjalnie możesz go zeskanować (najlepiej ze strony WAN), aby uzyskać szczegółowe informacje, choć często nie daje to przydatnych informacji.
Jeśli chcesz to zrobić, po stronie WAN możesz uruchomić:
Jeśli port jest wyświetlany jako przefiltrowany, oznacza to, że wysłane tam pakiety prawdopodobnie nigdzie nie idą (lub są blokowane / upuszczane po drodze).
Warto sprawdzić, czy problem wynika z faktu, że port narażony na WAN różni się od portu, na którym serwer nasłuchuje. Przekazywanie portu 55757 w sieci WAN do portu 22 na maszynie LAN powinno sprawić, że wszystko będzie dobrze, ale może gdzieś (serwer, klient) coś zakłada, że numer portu jest taki sam z perspektywy serwera i klienta.
Prawdopodobnie nie można przekierować portu 22 przez router. Być może twój dostawca usług internetowych blokuje ten port. Ale jeśli możesz to zrobić, zrób to!
W przeciwnym razie można zrobić serwer OpenSSH faktycznie nasłuchuje na porcie 57757.
Aby to zrobić, wykonaj kopię zapasową pliku konfiguracyjnego serwera:
Następnie edytuj to:
Lub użyj edytora tekstowego konsoli, jeśli komputer nie ma GUI:
W górnej części pliku pojawia się ten blok tekstu:
Po prostu zmień
Port 22
wiersz u góry, żeby powiedziećPort 57757
.Możesz dodać port zamiast go zmieniać. Polecam jednak testowanie przy najprostszej skutecznej konfiguracji.
Zobacz
man sshd_config
więcej szczegółów na temat konfigurowania serwera OpenSSH.Zapisz plik, zamknij edytor tekstu i uruchom ponownie serwer SSH za pomocą:
Teraz zmień port przekierowania na routerze, aby port 57757 przekierował na port 57757 (nie 22) na serwerze OpenSSH i sprawdź, czy jest dostępny z Internetu.
Jeśli nadal nie działa, sprawdź, czy być może zapora sieciowa Ubuntu faktycznie blokuje ruch pochodzący spoza sieci LAN.
(Jest to mało prawdopodobne, jeśli sam nie skonfigurowałeś tego w ten sposób, ale jeśli wszystkie ustawienia są prawidłowe i żaden z powyższych kroków nie ujawnił nic na temat problemu, warto to sprawdzić).
Biegać:
Domyślnie w Ubuntu dane wyjściowe wyglądają następująco:
Jest to prosta polityka zezwalająca, zasadniczo równoważna z brakiem zapory ogniowej. (Rzeczywiście, jeśli moduł zapory sieciowej netfilter nie zostałby wkompilowany w jądro, system zachowałby się tak samo jak przy powyższych ustawieniach, chociaż
iptables
polecenie, które pytanetfilter
o ustawienia zapytania , nie działałoby oczywiście.)Jeśli Twoja konfiguracja nie wygląda tak, przeczytaj,
man iptables
aby dowiedzieć się, co robią i / lub edytuj swoje pytanie (lub, jeśli jesteś inną osobą z podobnym problemem czytającym to, opublikuj nowe pytanie), aby dołączyć im. Pamiętaj, że potencjalnie Twojeiptables
reguły mogą ujawniać poufne informacje o Twojej konfiguracji. Praktycznie rzecz biorąc, zazwyczaj tak nie jest - z możliwym wyjątkiem reguł dotyczących określonych hostów, które są blokowane lub jeśli twoja konfiguracja jest bardzo zła / niepewna - zazwyczaj przydatność tych informacji dla atakującego, szczególnie w przypadku komputera na domowa / biurowa sieć LAN za routerem NAT jest minimalna.źródło
Ponieważ działa z sieci LAN, konfiguracja serwera wydaje się być poprawna. Musisz powiedzieć routerowi, aby przekierował z portu, którego chcesz używać na zewnątrz, do portu 57757 na twoim komputerze .
W
traceroute
tym przypadku nie przyda się.źródło