Який сучасний спосіб здійснити переадресацію порту на Ель-Капітан? (порт вперед 80 до 8080)


56

Стара ipfwверсія утиліти була відмовлена ​​в останніх версіях Mac OS X, і тепер її немає від El Capitan.

Який сучасний спосіб переадресації портів в Ель-Капітан?

Я просто хочу, щоб порт 80 перейшов до порту 8080.


Прийміть відповідь.
Ефрен

Відповіді:


79

Щоб перенаправити весь трафік порту 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/


1
Працювали чудово!
Анупам Джайн

17
і зі згадуваної статті, щоб видалити її sudo pfctl -F all -f /etc/pf.confта відобразити ваші поточні правила переадресації порту,sudo pfctl -s nat
Brad Parks

4
майте на увазі, що це рішення не додає правил, але замінює будь-яке інше завантажене раніше правило, включаючи pf.confфайл
erandros

36

Використовується сучасний спосіб переадресації портів в Ель-Капітан pf. У наведеному нижче прикладі всі запити порту 80 пересилаються на порт 8080 на одному хості. Будь ласка, налаштуйте перенаправлення під свої потреби.

  1. Створіть файл якоря 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
    
  2. Змініть файл /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"
    
  3. Проаналізуйте і протестуйте файл прив’язки, щоб переконатися, що немає помилок:

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
    
  4. Тепер змінити /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

7
Чому для цього вже не існує простої команди? Зараз це занадто складно.
Dr.Knowitall

@klanomath - це працює, і я можу переслати порт x на порт y на 127.0.0.1 і т. д., але я не в змозі переслати порти до мого windows vm, що працює на робочому столі паралелей, будь-яка ідея? ось моє запитання stackoverflow.com/questions/40695684/…
Sudhir N

Здається, не працює при переадресації порту на VM, який працює на робочому столі паралелей
Sudhir N

@sudhir Ви не успішно зв’язалися зі своїм новим запитанням. За замовчуванням VM Parallels не видно в мережі, як запобіжний захід. Ви можете змінити налаштування в конфігурації VM, щоб зробити VM видимим. І пам’ятайте, чи pingє ваш друг у діагностиці мережевих проблем.
Василь Бурк


3

Щоб розширити рішення з відповіді @ 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.