Saya juga harus melakukan hal yang sama baru-baru ini, dan dalam pencarian muncul jawaban ini. Sayangnya, jawaban penggunaan Nafe ipfwyang sekarang sudah usang dan tidak tersedia di OSX; dan jawaban Kevin Leary memang agak sedikit merdu. Jadi saya harus membuat sesuatu yang lebih baik (bersih) dan memutuskan untuk membagikannya di sini untuk anak cucu. Jawaban ini sebagian besar didasarkan pada pendekatan yang disebutkan di intisari ini .
Seperti yang disebutkan OP, mengarahkan browser ke 192.168.99.100 akan mendapat respons dari server di localhost: 8000. Menambahkan alias ke ifconfigtidak benar-benar diperlukan, pfctlsendirian sudah cukup: untuk mencapai ini pf.conffile /etc/pf.confperlu diubah.
Pertama kita buat (dengan sudo) file anchor baru (sebut saja redirection) di: /etc/pf.anchors/redirection. Ini pada dasarnya adalah file teks biasa dan berisi baris berikut (seperti dalam jawaban dari Kevin Leary): rdr pass on lo0 inet proto tcp from any to 192.168.99.100 port = 80 -> 127.0.0.1 port 8000. Setelah file anchor baru dibuat, itu perlu direferensikan dalam pf.conffile. Buka pf.conffile dengan sudo dan tambahkan rdr-anchor "redirection"setelah baris rdr-anchor terakhir (yaitu rdr-anchor "com.apple/*") dan tambahkan load anchor "redirection" from "/etc/pf.anchors/redirection"di akhir.
Pada akhirnya, seperti inilah tampilan file pf.conf:
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
Dan hampir seperti itu. Cukup restart pfctldengan mengeluarkan sudo pfctl -duntuk menonaktifkannya terlebih dahulu dan kemudian sudo pfctl -fe /etc/pf.confmemulainya lagi.
Sekarang, jika Anda perlu ini terjadi secara otomatis setelah setiap restart, sedikit pekerjaan yang perlu dilakukan: daemon peluncuran untuk pfctlperlu diperbarui (intisari yang disebutkan menyebutkan bahwa pf diaktifkan secara otomatis saat boot, namun ini tampaknya tidak menjadi kasing dari melihat kode). Buka (dengan sudo) System/Library/LaunchDaemons/com.apple.pfctl.plistdan cari ini:
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
dan tambahkan baris <string>-e</string>untuk membuatnya seperti ini:
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
Itu harus dilakukan.
Peringatan : Apple tidak lagi memungkinkan untuk mengubah file peluncuran iblis begitu saja (tidak dengan sudo, atau chmod, atau apa pun). Satu- satunya cara adalah bermain-main dengan pengaturan Perlindungan Integritas Sistem : boot ke mode pemulihan dan luncurkan terminal. Periksa status SIP dengan csrutil status, umumnya harus diaktifkan. Nonaktifkan dengan csrutil disabledan reboot dalam mode normal dan kemudian lakukan perubahan pada file plist seperti yang dibahas di atas. Setelah selesai, kembali ke mode pemulihan dan aktifkan kembali perlindungan (ada untuk alasan yang baik) dengan menerbitkan csrutil enable.
Penjelasan: Orang dapat memeriksa dengan mengeluarkan ifconfigperintah yang 127.0.0.1sudah alias (default) untuk localhost lo0 - fakta ini digunakan untuk menghindari keharusan menambahkan alias tambahan untuk localhost dan cukup menggunakan alamat default dalam pf.conffile.
UPDATE: Sayangnya, sepertinya memuat file saat startup tidak berfungsi. Saya masih mencoba untuk mendapatkan bantuan untuk mengurutkannya. Sampai saat itu, menjalankan sudo pfctl -f /etc/pf.confsetelah memulai melakukan trik.