Przejdź do głównej zawartości

Przekieruj porty z terminala

Serwer uruchomiony w terminalu rozmowy jest publikowany tylko dla tej przestrzeni. Panel portów wykrywa nasłuchy, które aplikacja tam uruchomiła, mapuje je i podaje adres dla każdego miejsca, z którego możesz chcieć do nich dotrzeć. Dwie przestrzenie mogą jednocześnie nasłuchiwać na 5173; ich mapy nigdy się nie mieszają.

Nic tutaj nie otwiera maszyny na świat: każda ścieżka powstaje na żądanie po stronie serwera i ginie razem z terminalem albo rigiem.

  1. Otwórz Terminal (VM) rozmowy albo powłokę hosta (w przestrzeni lub na stronie PR-a).
  2. Uruchom swój serwer — pnpm dev, python -m http.server 8000, cokolwiek.
  3. W ciągu kilku sekund ikona wtyczki w prawym górnym rogu terminala dostanie kropkę. Kliknij ją.

Panel wylicza każdy nasłuchujący port wraz z procesem, który go zajmuje, w postaci 3000 → 3000: po lewej port, na którym proces się związał, po prawej port, na którym odpowiada lokalnie (ta sama liczba, ilekroć był wolny na Twojej maszynie). Każdy wiersz mówi też, czy docierają do niego desktopowy localhost, Przeglądarka (VM) i Android.

Wykrywanie jest zamknięte w izolacji: Terminal (VM) jest odpytywany wewnątrz swojego systemu gościa; powłoka hosta jest odpytywana z drzewa procesów PTY tej sesji. Inne przestrzenie ani inne procesy na Twoim Macu nie trafiają na listę.

Nowe porty w tym terminalu są przekierowywane automatycznie. Wyłącz Automatyczne przekierowywanie portów w tym samym panelu, jeśli chcesz mieć tylko te dodane ręcznie.

Użyj Kopiuj lokalny adres URL w danym wierszu — http://localhost:3000. Przekierowanie nasłuchuje tylko na interfejsie loopback, więc nic innego w Twojej sieci go nie widzi.

Jeśli dwie przestrzenie udostępniają port gościa 5173, a Twoja maszyna zajmuje już 127.0.0.1:5173, druga przestrzeń zachowuje port gościa 5173 i dostaje efemeryczny port lokalny. Kopiuj lokalny adres URL używa liczby z prawej strony.

W powłoce hosta proces jest już na Twojej maszynie. Zmapowanie tego samego portu lokalnego nic nie zmienia; wybranie innego portu lokalnego wiąże proxy loopback z tym, który wybrałeś.

--host (albo związanie się z 0.0.0.0) nie sprawia, że zamknięta Przeglądarka (VM) może dotrzeć do serwera na Macu. System gościa ma własny loopback; serwer wkłada tunel do tego systemu gościa, gdy karta Przeglądarki jest w tej samej przestrzeni.

Otwórz zamkniętą przeglądarkę w tej samej rozmowie. Wpisz localhost:<left-hand port> — liczbę, na której związał się proces. Przemapowanie (5173 → 3000) odpowiada też pod liczbą z prawej strony w tej przeglądarce, więc Kopiuj lokalny adres URL działa tam tak samo. browser_use agenta może przejść pod oba. Serwer z przestrzeni A nigdy nie pojawia się jako localhost:5173 w przeglądarce przestrzeni B.

Używaj localhost, a nie adresu IP w sieci LAN i nie --host. System gościa ma własny loopback; tunel nasłuchuje tam zarówno po IPv4, jak i po IPv6.

Strony otwierające wiele połączeń naraz (dziesiątki zasobów, gniazdo odświeżania na żywo) dzielą ten sam tunel. Przeglądarka (VM) multipleksuje je na jedno trwałe wywołanie exec, dzięki czemu seria żądań nie oznacza uruchamiania osobnego procesu na każde połączenie i nie kończy się przekroczeniem czasu jako biała strona.

W obrębie jednej przestrzeni przekierowanie Terminala (VM) wygrywa z powłoką hosta na tym samym numerze. Między przestrzeniami nie ma pierwszeństwa — to osobne mapy.

Otwórz kartę Android tej przestrzeni. localhost:<port> emulatora jest wtedy odwracane na opublikowany port tej przestrzeni (adb reverse). Jeden emulator jest globalny dla urządzenia: podłączenie przestrzeni B przekierowuje :5173 na B i porzuca przekierowanie A. Zamknij kartę, a odwrócenia zasadzone przez ten rig zostaną usunięte.

Symulator iOS to już Mac — bez odwracania. Fizyczny iPhone nadal potrzebuje udostępnienia w sieci LAN.

⋯ → Udostępnij w sieci lokalnej publikuje port pod <server-ip>:<random port> — przydatne, gdy chcesz otworzyć stronę na telefonie albo gdy serwer działa na innej maszynie.

  • Port w sieci LAN jest zawsze przydzielany przez system operacyjny, nigdy nie jest numerem gościa, więc ekspozycja to świadomy, widoczny adres, a nie taki, który da się zgadnąć.
  • Pozostaje prywatny (tylko loopback), dopóki go nie włączysz, a ⋯ → Tylko lokalnie zdejmuje go z powrotem z sieci.

⋯ → Ustaw domenę przeglądarki (.test) przypisuje portowi domenę deweloperską, na przykład myapp.test. W Przeglądarce (VM) https://myapp.test ładuje wtedy Twój serwer z ważną kłódką — przydatne dla wszystkiego, co zachowuje się inaczej w nazwanym originie albo bezpiecznym kontekście (pliki cookie, service workery, wywołania zwrotne OAuth).

  • Domeny muszą kończyć się na .test lub .localhost — to dwa TLD zarezerwowane dla rozwoju, więc nazwa deweloperska nigdy nie przesłoni prawdziwej witryny.
  • Nazwy domen są na serwerze unikalne; numery portów nie. Dwie przestrzenie mogą obie używać 5173, ale nie mogą obie rościć sobie prawa do myapp.test.
  • Certyfikat pochodzi z lokalnego urzędu certyfikacji utworzonego na Twoim serwerze przy pierwszym użyciu. Jego klucze mieszkają w katalogu danych serwera i nigdy nie trafiają do żadnego systemu gościa; zamknięta przeglądarka ufa dokładnie temu jednemu kluczowi, więc TLS do prawdziwego internetu nadal waliduje się normalnie.
  • Domena rozwiązuje się tylko wewnątrz Przeglądarki (VM). Twoja własna przeglądarka na hoście używa zamiast tego localhost:<port>.
  • Zwykłe http://myapp.test też działa.

Dodaj port na dole panelu mapuje port, zanim (albo niezależnie od tego, czy) cokolwiek na nim nasłuchuje. Ręczne przekierowanie zachowuje swój adres, gdy serwer się restartuje — wiersz pokazuje nie nasłuchuje, dopóki nie wróci — podczas gdy automatyczne przekierowania znikają razem ze swoim portem. W powłoce hosta możesz też ustawić inny port lokalny.

Porty są kluczowane po obszarze roboczym i przestrzeni. Własna mapa portów hypervisora jest ustalana przy starcie maszyny, więc Terminal (VM) jedzie dwoma wąskimi kanałami kontrolowanymi przez serwer: jednym wcześniej utworzonym pasem ruchu przychodzącego do systemu gościa, który odmawia połączenia z każdym portem, na którym system gościa faktycznie nie nasłuchuje, oraz tunelami odwrotnymi, które serwer trzyma otwarte dla Przeglądarki (VM) i Androida. Powłoka hosta nigdy nie skanuje całej maszyny. Żaden nasłuch nie powstaje w systemie gościa bez udziału serwera, a wszystko jest demontowane razem z terminalem albo rigiem. Projekt opisano w Rigach i izolacjach; dokładne zarezerwowane porty i zasady domen znajdziesz w dokumentacji referencyjnej rigów.