Stare narzędzie ipfw
zostało zniechęcone w najnowszych wersjach Mac OS X i teraz nie ma go w El Capitan.
Jaki jest nowoczesny sposób przekierowania portów w El Capitan?
Chcę po prostu, aby port 80 przekierował na port 8080.
Stare narzędzie ipfw
zostało zniechęcone w najnowszych wersjach Mac OS X i teraz nie ma go w El Capitan.
Jaki jest nowoczesny sposób przekierowania portów w El Capitan?
Chcę po prostu, aby port 80 przekierował na port 8080.
Odpowiedzi:
Aby przekierować cały ruch z portu 80 na port 8080, możesz wpisać następujące polecenie w wierszu polecenia Terminal.
echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
Zaczerpnięte z https://salferrarello.com/mac-pfctl-port-forwarding/
sudo pfctl -F all -f /etc/pf.conf
i wyświetlić swoje obecne reguły przekierowania portów,sudo pfctl -s nat
pf.conf
plik
Korzysta z nowoczesnego sposobu przekazywania portów w El Capitan pf
. W poniższym przykładzie wszystkie żądania portu 80 są przekazywane do portu 8080 na tym samym hoście. Dostosuj przekierowania do swoich potrzeb.
Utwórz plik kotwicy org.user.forwarding w /private/etc/pf.anchors
sudo touch /private/etc/pf.anchors/org.user.forwarding
o następującej treści i końcowym pustym wierszu
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en1 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
lub
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
Zmodyfikuj plik /private/etc/pf.conf, ale pozostaw końcową pustą linię
oryginalny plik:
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
do
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "org.user.forwarding"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "org.user.forwarding" from "/etc/pf.anchors/org.user.forwarding"
Analizuj i testuj plik kontrolny, aby upewnić się, że nie ma błędów:
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
Teraz zmodyfikuj /System/Library/LaunchDaemons/com.apple.pfctl.plist z
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
do
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
Aby to zrobić, musisz wyłączyć ochronę integralności systemu. Po edycji pliku można ponownie włączyć SIP. Po ponownym uruchomieniu komputera Mac pf zostanie włączony (jest to opcja -e).
Alternatywnie możesz utworzyć własnego demona uruchamiania podobnego do odpowiedzi tutaj: Używanie serwera 5.0.15 do udostępniania Internetu BEZ udostępniania Internetu .
Po aktualizacji systemu lub aktualizacji niektóre oryginalne pliki powyżej mogły zostać zastąpione i trzeba ponownie zastosować wszystkie zmiany.
Jeśli chcesz przekazywać dalej przez różne interfejsy, musisz włączyć to w /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
ping
jest twoim przyjacielem w diagnozowaniu problemów z siecią.
Aby rozszerzyć rozwiązanie z @ sal-ferrarello odpowiedź, stworzyłem dwa super podstawowy Shell Scripts aby włączyć lub wyłączyć przekierowanie bez narażania już istniejących wpisów w pf
.
I. Najpierw znajdź wpisy, które już masz:
sudo pfctl -s nat
Moje wyniki były następujące:
No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all
To, co nas interesuje, to faktyczne wpisy, więc odrzuć dwie pierwsze linie informacyjne.
II. Utwórz enable.sh
skrypt:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -s nat
Pierwsze dwa wiersze po nim echo
to wpisy, które już tam były. Trzecia linia zawiera nowe przekierowanie - w tym przypadku od 80 do 8080. Na końcu dzwonimy, sudo pfctl -s nat
aby sprawdzić, czy zmiany zostały zastosowane.
III. Utwórz disable.sh
skrypt:
Podobnie jak enable.sh
my tworzymy skrypt, ale bez przekierowania 80-> 8080, ale z poprzednimi już istniejącymi wpisami:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat