Ustawiać
W domu mam małą Raspberry Pi 3, która obsługuje usługi z dostępem do Internetu. Na przykład działa serwer HTTP. Zadzwonię na ten serwer raspberry
. Mogę zarządzać raspberry
zdalnie przez SSH: Otworzyłem port 22
w routerze w domu i dlatego ruch do mojego publicznego adresu IP dla tego portu jest przekazywany raspberry
. Na razie w porządku.
raspberry
architektura jest arm64
i działa, FreeBSD
co uniemożliwia (najwyraźniej próbowałem włamać się, ale nie ma kości), aby uruchomić na nim serwer gry (UrbanTerror 4.3).
Mam też inną maszynę, która jest ThinkPad (później: thinkpad
) Bieg OpenBSD
i ma amd64
architekturę, która ma w rzeczywistości pozwala mi uruchomić żądany serwer. Od thinkpad
mogę uzyskać dostęp raspberry
za pomocą SSH.
Pytanie
Obecnie nie ma mnie w domu , ale w innej sieci, właściwie za granicą . Mam teraz nieodpartą potrzebę hostowania mojego serwera, ale nie mogłem tego zrobić raspberry
, jak powiedziałem.
Czy w jakiś sposób byłoby możliwe uruchomienie serwera thinkpad
i tunelowanie całego ruchu raspberry
(ponieważ mogę to ujawnić w Internecie, podczas gdy tutaj, za granicą , nie mam uprawnień administratora do routera)?
Zasadniczo chcę uruchomić serwer thinkpad
tak, jakbym działał raspberry
pod względem sieci. Oznacza to, że serwer pojawiłby się w przeglądarkach serwerów, a gracze mogliby się połączyć: ruch docierałby raspberry
np. Przez port 27900
i byłby przesyłany przez Internet za pośrednictwem SSH do thinkpad
.
PS Zdaję sobie sprawę, że prawdopodobnie spowodowałoby to słabą wydajność z powodu przekazywania ruchu przez SSH, ale nadal chciałbym spróbować.
Z góry dziękuję i przepraszam za długi post!
EDYCJA 2018-12-14: Oto, co już próbowałem
Potrzebuję do tego tunelu zwrotnego SSH . Stworzyłem tunel ze thinkpad
jak tak
ssh -N -R :27960:localhost:27960 <raspberry's public IP>
Tunel został utworzony pomyślnie. Sprawdziłem z netstat
włączonym raspberry
i rzeczywiście nasłuchuje *:27960
(ale TCP; czy to jest problem? UrbanTerror, podobnie jak inne gry, używa UDP). Teraz uruchomiłem serwer thinkpad
raz za razem netstat
i zobaczyłem, że nasłuchuje *:27960
(UDP).
Próbowałem otworzyć klienta UrbanTerror thinkpad
i połączyć się z nim <raspberry's IP>
, ale to nie zadziałało. Aby debugować, próbowałem tego samego podczas pracy
tcpdump -n -e -ttt -i ue0 | grep 27960
na raspberry
. Kiedy próbowałem połączyć się z moim serwerem raspberry
z UrbanTerror, na zrzucie pojawiły się następujące informacje:
188.112.111.89.27961 > 192.168.0.33.27960: UDP, length 16
192.168.0.33 > 188.112.111.89: ICMP 192.168.0.33 udp port 27960 unreachable
(Usunąłem dane wyjściowe ze względu na zwięzłość)
188.112.111.89
jest obecnym publicznym adresem IP thinkpad
i 192.168.0.33
jest oczywiście raspberry
. Dlaczego port jest 27960
nieosiągalny? Oczywiście, według netstat
, thinkpad
nasłuchuje na tym porcie.
Wystarczy, aby przetestować łączność, próbowałem działa nc -l 27960
na thinkpad
i nc localhost 27960
na raspberry
: mogę komunikować się w obu kierunkach, w / o problemach.
Myślę, że warto również wspomnieć, że mam OpenBSD
„s pf
filtr pakietów uruchomiony na obu komputerach, ale mam wyłączone to do rozwiązywania problemów.
źródło
man ssh
? W tym pytaniu konfiguracja jest podobna (tłumaczenie: „Plex” -> „thinkpad”; „serwer zdalny” -> „malina”).Odpowiedzi:
Można to zrobić na kilka sposobów. Najłatwiej jest tymczasowo utworzyć tunel ssh do interfejsu sieciowego routera za pośrednictwem
raspberry
. Otwórz UDP na routerze nathinkpad
(serwer UrbanTerror używa tylko UDP, a domyślny port to 27960). Następnie gracze będą mogli połączyć się z twoim publicznym adresem IP.Jeśli nie chcesz otwierać innego portu na routerze. Każdy gracz będzie musiał mieć dostęp do SSH do ciebie
raspberry
i zrobić tunel przekierowania portów SSH przez port TCP 22 i wykonać przekaźnik UDP na TCP na swoim komputerze. Możesz to zrobić za pomocą socat:źródło
thinkpad
ponieważ tego urządzenia nie ma nawet w mojej sieci domowej. Nie jestem pewien co do drugiego rozwiązania, które dostarczyłeś. Chciałbym, aby każdy mógł się połączyć bez konieczności korzystania z SSH.Jeśli dobrze cię zrozumiałem, ty i ty
thinkpad
jesteś za granicą ,raspberry
jest w domu i możesz zdalnie skonfigurować router w domu, aby otwierać nowe porty naraspberry
.TCP vs UDP robi dużą różnicę, ponieważ
ssh
może tunelować tylko TCP. Musisz dodatkowo przekonwertować między nimi.Opóźnienia w pełnej konfiguracji będą bardzo zauważalne.
Musisz
1) Skonfiguruj router w domu, aby przekazywał port UDP 27960 do
raspberry
.2) W przypadku
raspberry
konwersji zsocat
UDP i TCP, ten ostatni powiedzieć na porcie 27900.3) Utwórz tunel ssh od
thinkpad
doraspberry
; kierunek będzie zależeć odsocat
poleceń. Powiedzmy, port 27900 po obu stronach.4)
thinkpad
Użyjsocat
ponownie, aby przekonwertować pomiędzy TCP 27900 a UDP 27960.IIRC musisz być nieco ostrożny, z którym wariantem UDP należy korzystać,
socat
aby działał w obu kierunkach. Musiałbym to przetestować, ale nie mam teraz czasu, więc nie mogę ci teraz podać konkretnych poleceń. Musisz także ustawić go we właściwej kolejności, aby usługi „nasłuchiwania” były uruchamiane najpierw, zanim uzyskają połączenie z innych kroków.źródło