Ben de son zamanlarda benzer bir şey yapmak zorunda kaldım ve arama yaparken bu cevap geldi. Ne yazık ki, Nafe kullanımlarının ipfwşu anda kullanım dışı olan ve OSX'te bulunmayan cevapları ; ve Kevin Leary'nin cevabı gerçekten biraz aceleci. Bu yüzden daha iyi (daha temiz) bir şey yapmak zorunda kaldım ve posterity için burada paylaşmaya karar verdim. Bu cevap büyük ölçüde bu özünde belirtilen yaklaşıma dayanmaktadır .
OP’nin dediği gibi, 192.168.99.100’de bir tarayıcıyı işaret etmek localhost: 8000 adresindeki bir sunucudan yanıt almalıdır. Bir takma ad eklemek ifconfiggerçekten gerekli değil, pfctltek başına yeterli: Bunu yapabilmek için pf.confdosyanın /etc/pf.confdeğiştirilmesi gerekiyor.
Önce yeni bir çapa dosyası (diyelim (sudo ile) oluşturmak redirectionda): /etc/pf.anchors/redirection. Bu temelde normal bir metin dosyasıdır ve (Kevin Leary cevap gibi) aşağıdaki satırı içerir: rdr pass on lo0 inet proto tcp from any to 192.168.99.100 port = 80 -> 127.0.0.1 port 8000. Yeni bağlantı dosyası oluşturulduktan sonra, pf.confdosya içinde referans alınmalıdır . Açpf.confDosyayı sudo ilerdr-anchor "redirection" son rdr-çapa satırından (ki rdr-anchor "com.apple/*") load anchor "redirection" from "/etc/pf.anchors/redirection"sonra ekleyin ve sonuna ekleyin .
Sonuçta, bu pf.conf dosyasının nasıl görünmesi gerektiğidir:
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "redirection" #added for redirection/port forwarding
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "pow" from "/etc/pf.anchors/redirection" #added for redirection/port forwarding
Ve bu neredeyse. Sadece yeniden başlatpfctlsudo pfctl -dİlk önce onu devre dışı bırakmak ve ardından sudo pfctl -fe /etc/pf.conftekrar başlatmak için düzenleyerek .
Şimdi, bunun her yeniden başlatmadan sonra otomatik olarak gerçekleşmesi gerekiyorsa, başka bir küçük iş yapılması gerekiyor: başlatılması pfctlgereken programın güncellenmesi gerekiyor. Dava koda bakmaktan). (Sudo ile) açın System/Library/LaunchDaemons/com.apple.pfctl.plistve şunu arayın:
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
ve <string>-e</string>nihayetinde böyle yapmak için satırı ekleyin :
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
Bunu yapmalı.
Uyarı : Apple artık fırlatma iblisinin dosyalarını böyle değiştirmeye izin vermiyor (sudo, chmod veya başka bir şey değil). Sadece yolu ile tamircilik olduğunu Sistem Bütünlüğü Koruma çizme kurtarma modu ve fırlatma terminale: ayarlarla. SIP durumunu kontrol edin, csrutil statusgenellikle etkinleştirilmesi gerekir. Bunu devre dışı bırakın csrutil disableve normal modda yeniden başlatın ve sonra yukarıda tartışıldığı gibi plist dosyasındaki değişiklikleri yapın. Bir kez yapılırsa, kurtarma moduna geri dönün ve korumayı yeniden etkinleştirerek (iyi bir nedenden dolayı yerine) yeniden etkinleştirin csrutil enable.
Açıklama: Bir zaten localhost lo0 için (varsayılan) diğer adı olan ifconfigkomutu yayınlayarak kontrol edebilirsiniz 127.0.0.1- bu gerçek, localhost için fazladan bir takma ad eklemek zorunda kalmamak ve sadece pf.confdosyadaki varsayılan adresi kullanmak için kullanılıyor .
GÜNCELLEME: Ne yazık ki, başlangıçta dosyayı yükleme çalışmıyor gibi görünüyor. Hala sıralaması için yardım almaya çalışıyorum. O zamana kadar, sudo pfctl -f /etc/pf.confbaşladıktan sonra çalışan hile yapar.