El Capitan'da liman taşımacılığı yapmanın modern yolu nedir? (80 - 8080 arası ileri bağlantı noktası)


56

Eski yardımcı program ipfwMac OS X'in son sürümlerinde cesareti kırıldı ve şimdi El Capitan'dan ayrıldı.

El Capitan'da liman taşımacılığı yapmanın modern yolu nedir?

Sadece 80 numaralı bağlantı noktasının 8080 numaralı bağlantı noktasına iletmesini istiyorum.


Lütfen bir cevap kabul edin.
Efren

Yanıtlar:


79

Tüm 80 port trafiğini 8080 portuna iletmek için, Terminal komut satırından aşağıdakini girebilirsiniz.

echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -

Alındığı https://salferrarello.com/mac-pfctl-port-forwarding/


1
Mükemmel çalıştı!
Anupam Jain

17
ve bahsi geçen makaleden kaldırmak sudo pfctl -F all -f /etc/pf.conf, ve geçerli liman yönlendirme kurallarınızı görüntülemek için,sudo pfctl -s nat
Brad Parks

4
Bu çözümün kural eklemediğini, fakat pf.confdosya dahil daha önce yüklenen tüm kuralların yerine
geçtiğini unutmayın

36

El Capitan'daki limanları yönlendirmenin modern yolu kullanıyor pf. Aşağıdaki örnekte, tüm bağlantı noktası 80 istekleri aynı ana bilgisayardaki bağlantı noktası 8080'e iletilir. Lütfen yönlendirmeleri ihtiyaçlarınıza göre ayarlayın.

  1. /Private/etc/pf.anchors adresinde org.user.forwarding için bir çapa dosyası oluşturun .

    sudo touch /private/etc/pf.anchors/org.user.forwarding
    

    aşağıdaki içerik ve takip eden boş satır

    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
    

    veya

    rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    
  2. /Private/etc/pf.conf dosyasını değiştirin, ancak sonunda boş bir satır tutun

    Orijinal dosya:

    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"
    

    için

    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. Hata olmadığından emin olmak için bağlantı dosyanızı çözümleyin ve test edin:

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
    
  4. Şimdi /System/Library/LaunchDaemons/com.apple.pfctl.plist’i değiştirin.

    <array>
        <string>pfctl</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    

    için

    <array>
        <string>pfctl</string>
        <string>-e</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    

    Bunu gerçekleştirmek için Sistem Bütünlüğü Korumasını devre dışı bırakmanız gerekir. Dosyayı düzenledikten sonra SIP yeniden etkinleştirilebilir. Mac'i yeniden başlattıktan sonra pf etkinleştirilecektir (-e seçeneği budur).

    Alternatif olarak, buradaki cevaba benzer kendi lansmanı daemon oluşturabilirsiniz: İnternet paylaşımı olmadan İnternet paylaşmak için Server 5.0.15'i kullanma .

Bir sistem güncellemesi veya güncellemesinden sonra yukarıdaki orijinal dosyalardan bazıları değiştirilmiş olabilir ve tüm değişiklikleri yeniden uygulamanız gerekebilir.

Farklı arayüzlerde ilerlemek istiyorsanız, bunu /etc/sysctl.conf dosyasında etkinleştirmelisiniz:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

7
Neden artık bunu yapmak için basit bir komut yok? Şimdi çok karmaşık.
Dr.Knowitall

@klanomath - bu işe yarar ve 127.0.0.1 vb. x numaralı bağlantı noktasını y numaralı bağlantı noktasına iletebilirim, ancak bağlantı noktalarını masaüstünde çalışan windows vm bağlantı noktalarına iletemiyorum, Herhangi bir fikir? İşte benim sorum stackoverflow.com/questions/40695684/…
Sudhir N

Paralellikler masaüstünde çalışan bir sanal makineye bağlantı noktası iletirken işe yaramıyor gibi görünüyor
Sudhir N

@sudhir Yeni Sorunuzla başarılı bir şekilde bağlantı kurmadınız. Varsayılan olarak bir Parallels VM, güvenlik önlemi olarak ağ tarafından görünmez. Sanal Makineyi görünür hale getirmek için Sanal Makine yapılandırmasındaki bir ayarı değiştirebilirsiniz. Ve unutmayın, pingağ problemlerini teşhis etmede arkadaşınızdır.
Basil Bourque


3

@ Sal-ferrarello yanıtından çözümü genişletmek için, içinde bulunan girişlerden ödün vermeden yeniden yönlendirmeyi etkinleştirmek veya devre dışı bırakmak için iki süper temel Shell Komut Dosyası oluşturdum .pf

I. Öncelikle hangi girişlere sahip olduğunuzu bulun:

sudo pfctl -s nat

Çıktım gibiydi:

No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all

Bizi ilgilendiren şey gerçek girişlerdir, bu nedenle ilk iki bilgi satırını atlayın.

II. enable.shKomut dosyası oluştur :

#!/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

Sonra ilk iki satır echozaten var olan girişlerdir. Üçüncü satır yeni yönlendirme ile - bu durumda 80 - 8080 arasında. Sonunda sudo pfctl -s natdeğişikliklerin uygulanıp uygulanmadığını görmek için çağırıyoruz .

III. disable.shKomut dosyası oluştur :

enable.shKomut dosyası oluşturduğumuza benzer , ancak 80-> 8080 yönlendirmesi olmadan, ancak önceden mevcut girişlerle:

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.