Стара ipfw
версія утиліти була відмовлена в останніх версіях Mac OS X, і тепер її немає від El Capitan.
Який сучасний спосіб переадресації портів в Ель-Капітан?
Я просто хочу, щоб порт 80 перейшов до порту 8080.
Стара ipfw
версія утиліти була відмовлена в останніх версіях Mac OS X, і тепер її немає від El Capitan.
Який сучасний спосіб переадресації портів в Ель-Капітан?
Я просто хочу, щоб порт 80 перейшов до порту 8080.
Відповіді:
Щоб перенаправити весь трафік порту 80 на порт 8080, ви можете ввести наступне з командного рядка Термінал.
echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
Взяте з https://salferrarello.com/mac-pfctl-port-forwarding/
sudo pfctl -F all -f /etc/pf.conf
та відобразити ваші поточні правила переадресації порту,sudo pfctl -s nat
pf.conf
файл
Використовується сучасний спосіб переадресації портів в Ель-Капітан pf
. У наведеному нижче прикладі всі запити порту 80 пересилаються на порт 8080 на одному хості. Будь ласка, налаштуйте перенаправлення під свої потреби.
Створіть файл якоря org.user.forwarding в /private/etc/pf.anchors
sudo touch /private/etc/pf.anchors/org.user.forwarding
із наступним вмістом та проміжним порожнім рядком
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
або
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
Змініть файл /private/etc/pf.conf, але утримуйте порожній рядок
оригінальний файл:
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"
до
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"
Проаналізуйте і протестуйте файл прив’язки, щоб переконатися, що немає помилок:
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
Тепер змінити /System/Library/LaunchDaemons/com.apple.pfctl.plist з
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
до
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
Для цього вам потрібно відключити захист цілісності системи. Після редагування файлу можна повторно включити SIP. Після перезавантаження вашого Mac pf буде увімкнено (це параметр -e).
Крім того, ви можете створити свій власний демон запуску, подібний до відповіді тут: Використовуючи сервер 5.0.15 для спільного доступу до Інтернету без спільного доступу до Інтернету .
Після оновлення або оновлення системи деякі початкові файли вище, можливо, будуть замінені, і вам доведеться повторно застосувати всі зміни.
Якщо ви хочете переслати через різні інтерфейси, вам слід увімкнути це в /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
ping
є ваш друг у діагностиці мережевих проблем.
Щоб розширити рішення з відповіді @ sal-ferrarello, я створив два над основні сценарії оболонки, щоб увімкнути або вимкнути переадресацію без шкоди для вже наявних записів у pf
.
I. Спочатку знайдіть, які записи у вас уже є:
sudo pfctl -s nat
Мій результат був таким:
No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all
Що нас цікавить - це фактичні записи, тому опустіть перші два інформаційні рядки.
II. Створити enable.sh
сценарій:
#!/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
Перші два рядки після echo
- записи, які вже були там. Третій рядок - з новим переспрямуванням - у цьому випадку 80 на 8080. Наприкінці ми закликаємо sudo pfctl -s nat
перевірити, чи були застосовані зміни.
ІІІ. Створити disable.sh
сценарій:
Як і enable.sh
ми створюємо сценарій, але без перенаправлення 80-> 8080, але з попередніми вже наявними записами:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat