Старая утилита 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
чтобы узнать, были ли внесены изменения.
III. Создать 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