Saya juga harus melakukan hal yang sama baru-baru ini, dan dalam pencarian muncul jawaban ini. Sayangnya, jawaban penggunaan Nafe ipfw
yang 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 ifconfig
tidak benar-benar diperlukan, pfctl
sendirian sudah cukup: untuk mencapai ini pf.conf
file /etc/pf.conf
perlu 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.conf
file. Buka pf.conf
file 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 pfctl
dengan mengeluarkan sudo pfctl -d
untuk menonaktifkannya terlebih dahulu dan kemudian sudo pfctl -fe /etc/pf.conf
memulainya lagi.
Sekarang, jika Anda perlu ini terjadi secara otomatis setelah setiap restart, sedikit pekerjaan yang perlu dilakukan: daemon peluncuran untuk pfctl
perlu 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.plist
dan 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 disable
dan 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 ifconfig
perintah yang 127.0.0.1
sudah alias (default) untuk localhost lo0 - fakta ini digunakan untuk menghindari keharusan menambahkan alias tambahan untuk localhost dan cukup menggunakan alamat default dalam pf.conf
file.
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.conf
setelah memulai melakukan trik.