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 ifconfig
gerçekten gerekli değil, pfctl
tek başına yeterli: Bunu yapabilmek için pf.conf
dosyanın /etc/pf.conf
değiştirilmesi gerekiyor.
Önce yeni bir çapa dosyası (diyelim (sudo ile) oluşturmak redirection
da): /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.conf
dosya içinde referans alınmalıdır . Açpf.conf
Dosyayı 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şlatpfctl
sudo pfctl -d
İlk önce onu devre dışı bırakmak ve ardından sudo pfctl -fe /etc/pf.conf
tekrar 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ı pfctl
gereken programın güncellenmesi gerekiyor. Dava koda bakmaktan). (Sudo ile) açın System/Library/LaunchDaemons/com.apple.pfctl.plist
ve ş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 status
genellikle etkinleştirilmesi gerekir. Bunu devre dışı bırakın csrutil disable
ve 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 ifconfig
komutu yayınlayarak kontrol edebilirsiniz 127.0.0.1
- bu gerçek, localhost için fazladan bir takma ad eklemek zorunda kalmamak ve sadece pf.conf
dosyadaki 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.conf
başladıktan sonra çalışan hile yapar.