ฉันก็ต้องทำสิ่งที่คล้ายกันเมื่อเร็ว ๆ นี้และในการค้นหามากับคำตอบนี้ น่าเสียดายที่คำตอบของ Nafe ใช้ipfw
ซึ่งขณะนี้เลิกใช้แล้วและไม่สามารถใช้งานได้ใน OSX และคำตอบของ Kevin Leary ย่อมเป็นเรื่องเล็กน้อย ดังนั้นฉันต้องทำให้ดีขึ้น (สะอาดขึ้น) และตัดสินใจแบ่งปันที่นี่เพื่อลูกหลาน คำตอบนี้ส่วนใหญ่ขึ้นอยู่กับวิธีการที่กล่าวถึงส่วนสำคัญนี้
ตามที่ระบุใน OP การชี้เบราว์เซอร์ที่ 192.168.99.100 ควรได้รับการตอบสนองจากเซิร์ฟเวอร์ที่ localhost: 8000 การเพิ่มชื่อแทนไปยังifconfig
ไม่จำเป็นจริงๆpfctl
เพียงอย่างเดียวก็เพียงพอแล้วเพื่อให้ได้pf.conf
ไฟล์นี้ตามที่/etc/pf.conf
จำเป็นต้องแก้ไข
ครั้งแรกที่เราสร้าง (กับ sudo) ไฟล์สมอใหม่ (ขอเรียกว่า redirection
) /etc/pf.anchors/redirection
ได้ที่: นี้นั้นเป็นไฟล์ข้อความปกติและมีบรรทัดต่อไปนี้ rdr pass on lo0 inet proto tcp from any to 192.168.99.100 port = 80 -> 127.0.0.1 port 8000
(เช่นเดียวกับในคำตอบของเควินแลร์รี่ส์): เมื่อสร้างไฟล์จุดยึดใหม่แล้วจะต้องมีการอ้างอิงภายในpf.conf
ไฟล์ เปิดpf.conf
ไฟล์ด้วย sudo และเพิ่มrdr-anchor "redirection"
หลังจากบรรทัด rdr-anchor สุดท้าย (ซึ่งคือrdr-anchor "com.apple/*"
) และเพิ่มload anchor "redirection" from "/etc/pf.anchors/redirection"
ที่ท้าย
ท้ายที่สุดนี่คือสิ่งที่ไฟล์ 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
และมันเกือบจะ เพิ่งเริ่มต้นใหม่pfctl
โดยออกsudo pfctl -d
เพื่อปิดใช้งานก่อนแล้วจึงsudo pfctl -fe /etc/pf.conf
เริ่มใหม่อีกครั้ง
ตอนนี้ถ้าคุณต้องการสิ่งนี้เกิดขึ้นโดยอัตโนมัติหลังจากการรีสตาร์ททุกครั้งงานเล็ก ๆ น้อย ๆ ที่ต้องทำคือ: daemon เรียกใช้สำหรับpfctl
ความต้องการที่จะได้รับการปรับปรุง (ส่วนที่อ้างถึงกล่าวถึงว่า pf ถูกเปิดใช้งานโดยอัตโนมัติ กรณีจากการดูรหัส) เปิด (ด้วย sudo) System/Library/LaunchDaemons/com.apple.pfctl.plist
และค้นหาสิ่งนี้:
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
และเพิ่มบรรทัด<string>-e</string>
เพื่อทำให้เป็นดังนี้:
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
ที่ควรทำ
Caveat : Apple ไม่อนุญาตให้เปลี่ยนไฟล์อสูรการเรียกใช้เช่นนั้นอีกต่อไป (ไม่ใช่กับ sudo, หรือ chmod หรืออะไรอย่างอื่น) เพียงวิธีที่เป็นคนจรจัดกับระบบความสมบูรณ์ของการป้องกันการตั้งค่า: บูตเข้าสู่โหมดการกู้คืนและสถานีการเปิดตัว ตรวจสอบสถานะ SIP ด้วยcsrutil status
โดยทั่วไปควรเปิดใช้งาน ปิดใช้งานด้วยcsrutil disable
และรีบูตในโหมดปกติจากนั้นทำการเปลี่ยนแปลงไฟล์ plist ตามที่กล่าวไว้ข้างต้น เมื่อเสร็จแล้วให้กลับไปที่โหมดการกู้คืนและเปิดใช้งานการป้องกัน (มันในสถานที่สำหรับเหตุผลที่ดี) csrutil enable
โดยการออก
คำอธิบาย: หนึ่งสามารถตรวจสอบโดยการออกifconfig
คำสั่งที่127.0.0.1
มีนามแฝง (ค่าเริ่มต้น) สำหรับ localhost lo0 - ข้อเท็จจริงนี้กำลังถูกใช้เพื่อหลีกเลี่ยงการเพิ่มนามแฝงพิเศษสำหรับ localhost และเพียงแค่ใช้ที่อยู่เริ่มต้นในpf.conf
ไฟล์
อัปเดต: น่าเสียดายดูเหมือนว่าการโหลดไฟล์เมื่อเริ่มต้นไม่ทำงาน ฉันยังคงพยายามขอความช่วยเหลือจากมัน จนกว่าจะถึงตอนนั้นการเรียกใช้sudo pfctl -f /etc/pf.conf
หลังจากเริ่มต้นขึ้นจะเป็นการหลอกลวง