Jak wykonać przekierowanie portu w Mac OS X.


36

Chciałbym, aby wszystkie połączenia przychodzące do portu 1000 mojego hosta (IP: 200.234.XXX.XXX) były przekazywane do portu 80 na hoście 10.211.55.5

Jak mogę to zrobić na moim hoście? Działa w systemie Mac OS X 10.5.8


ah, ty też działa równolegle, masz ten sam problem co ja? :)
LearnCocos2D

Odpowiedzi:


30

Całkiem proste do zrobienia, po pierwsze musisz włączyć usługę zdalnego logowania na komputerze Mac ( Preferencje systemowe -> Udostępnianie -> Zdalne logowanie ). To uruchomi twój serwer ssh.

Następnie uruchom następujące polecenie w terminalu OS X:

ssh -L 200.234.XXX.XXX:10000:10.211.55.5:80 -N 127.0.0.1

Konieczne może być początkowe zaakceptowanie odcisku palca serwera, a także wpisanie lokalnego hasła do logowania ssh. (Możesz także skonfigurować lokalny / lokalny klucz publiczny / prywatny ssh, aby nie pytał o hasło, pozostawi to jako ćwiczenie dla czytelnika).

Format to:

ssh -L local_addr:local_port:remote_addr:remote_port -N 127.0.0.1

Czy możemy to zrobić, jeśli port 22 nie jest otwarty?
Afshin Moazami

1
Musisz jakoś się połączyć. Ale zawsze możesz uruchomić ssh na innym porcie ... może na porcie http? lub port BIND (DNS)? Są one najczęściej otwarte w zaporach ogniowych.
Marius

10

Bardzo proste przy użyciu wszechstronnego narzędzia ncat:

sudo ncat --sh-exec "ncat 10.211.55.5 80" -l 1000 --keep-open

Pobierz pliki binarne ncat / nmap dla Mac OS X z oficjalnej strony: http://nmap.org/download.html#macosx

EDYCJA: dodano sudo do nasłuchiwania na ograniczonym porcie <1024


1
dzięki. jest to bardzo proste, poza tym nie trzeba go ponownie uruchamiać!
verystrongjoe

Nie musisz też uruchamiać serwera SSH w systemie macOS.
Tony Baguette

5

Zakładając, że masz router UPnP, łatwo skonfigurować porty za pomocą PortMap

Ma bardzo prosty interfejs użytkownika.

alternatywny tekst


dlaczego twój wizerunek jest taki mały?
barlop

3

Cóż, mogę powiedzieć, jak to robię w moim systemie Mac OS X 10.5.8.

Zacząłem od odpowiedzi na temat NAT, ale myślę, że tak naprawdę chcesz program przekierowujący TCP (wspominasz o „proxy” i przekierowaniu portów).

Jest kilka sposobów, aby to zrobić, w zależności od potrzeb, nawet „SSH” może zostać wciśnięty do działania, chociaż moim ulubionym krótkim i słodkim sposobem jest skrypt Perla tcpforward .

Jeśli potrzebujesz jakiejś manipulacji HTTP (może być konieczne zmodyfikowanie przekierowań HTTP, aby gdy pojawi się żądanie adresu URL bez końcowego „/”, nie zostaniesz przekierowany do prawdziwego, niedostępnego serwera), wtedy Apache może wykonać zadanie zwrotnego proxy. Będziesz chciał spojrzeć na mod_proxy, a konkretnie ProxyPass i ProxyPassReverse. Czy nie pozwalają ProxyRequests, to do przodu proxy. Aby to zrobić, powinno być możliwe użycie własnego Apache Mac OS. Jest dostarczany z mod_proxy i /etc/httpd/httpd.conf to plik konfiguracyjny do aktualizacji.

Nawet w przypadku Apache musisz upewnić się, że wszystkie łącza w zawartości prawdziwego serwera są względne, jeśli odnoszą się do prawdziwego serwera, możesz wypróbować moduł mod_proxy_html (nie mam doświadczenia, jak dobrze to działa).


+1 dla tcpforward, Perl nigdy nie przestaje być użyteczny.
Steve Kehlet

0

Czy twoje urządzenie jest podłączone bezpośrednio do Internetu (IE - bez routera)? Zwykle przekierowanie portów odbywa się na routerze, ale jeśli używasz modemu do bezpośredniego połączenia, iptables jest prawdopodobnie najlepszym sposobem.


Nie mam pojęcia, dlaczego zostało to odrzucone, ponieważ to prawda.
Hasaan Chop

4
@HasaanChop Jest to głosowane, ponieważ nie jest pomocne. Jeśli szczegółowo opisał, w jaki sposób użyć, iptablesaby osiągnąć zadane pytanie, może to być przydatne.
Jon-Eric

W systemie Mac OS X nie ma iptables.
Bez nazwy_1

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.