เปลี่ยนเส้นทางทราฟฟิกโดยใช้ PF พร้อมกับ Internet Sharing


8

รุ่นสั้น:

ฉันจะเปลี่ยนเส้นทางการรับส่งข้อมูลทั้งหมดจาก en2 พอร์ต 80/443 เป็น 127.0.0.1:8080 ได้อย่างไรเมื่อฉันเปิดใช้งาน Internet Sharing ใน OS X Mountain Lion (10.8)

พื้นหลังบางส่วน:

ฉันกำลังทำวิทยานิพนธ์หลักซึ่งฉันจะประเมินความปลอดภัยในการสื่อสารสำหรับแอพสมาร์ทโฟนต่างๆ ฉันเลือกใช้ MacBook Air ใหม่เป็นเราเตอร์

ฉันเชื่อมต่อ Air กับอินเทอร์เน็ตด้วย USB Ethernet และตั้งค่า Internet Sharing กับ Wifi ของฉัน ใช้งานได้ดี ฉันสามารถเชื่อมต่ออุปกรณ์อื่น ๆ กับ Air ของฉันผ่าน wifi และเข้าถึงอินเทอร์เน็ต ที่ดี!

ตอนนี้ฉันต้องการสกัดกั้นการรับส่งข้อมูลนี้และแก้ไขทันที ฉันคิดว่าฉันต้องการพร็อกซีในการทำสิ่งนี้ แต่ฉันต้องการแบบโปร่งใสซึ่งฉันไม่ต้องทำการกำหนดค่าใด ๆ บนอุปกรณ์ ฉันพบว่า mitmproxy มีคุณสมบัติเหล่านี้อย่างแน่นอน ดังนั้นฉันจึงให้มันทำงานบน 127.0.0.1:8080 พร้อมที่จะสกัดกั้นการจราจร

น่าเสียดายที่ฉันพยายามติดตั้งการรับส่งข้อมูลของฉันที่มาจาก wifi (en2) บนพอร์ต 80 และ 443 ถึง 127.0.0.1:8080 mitmproxy docs แนะนำการกำหนดค่าสำหรับ pfctl แต่มันไม่ทำงาน ฉันสังเกตเห็นว่า Apple ได้จัดให้มีการกำหนดค่าบางอย่างสำหรับ Internet Sharing ซึ่งเปิดใช้งาน NAT ดังนั้นหากฉันไม่ได้ใช้การกำหนดค่าของพวกเขาดังนั้น Internet Sharing จึงหยุดทำงาน และเมื่อฉันพยายามเพิ่มบรรทัด rdr ในการตั้งค่าของพวกเขามันจะไม่มีผล (ลองหลาย ๆ ที่ในไฟล์ /etc/pf.conf) ปริมาณการใช้งานของฉันเพิ่งผ่านไปยังอินเทอร์เน็ตผ่าน mitmproxy

คำตอบ:


6

ฉันพบคำตอบ

ฉันโหลดกฎของฉันเป็นส่วนหนึ่งของจุดยึดcom.apple/100.InternetSharing/natpmpซึ่งเป็นกฎที่ใช้สำหรับการแบ่งปันอินเทอร์เน็ต

ไฟล์mitm.pf.confมีกฎ:

rdr on bridge0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr on bridge0 proto tcp from any to any port 443 -> 127.0.0.1 port 8080`

โหลดโดยใช้จุดยึด Internet Sharing:

sudo pfctl -a com.apple/100.InternetSharing/natpmp -f mitm.pf.conf

0

ในสถานการณ์ที่คล้ายกันฉันใช้ไฟร์วอลล์เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลจาก NIC หนึ่งไปยังพร็อกซี คุณสามารถใช้บางสิ่งเช่นนั้น:

$ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 80 in via en1
$ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 443 in via en1

ถ้าทำงานตกลงสำหรับฉัน

คุณยังสามารถใช้โปรแกรมWaterRoofฟรีเป็น GUI เพื่อกำหนดค่าไฟร์วอลล์ มันไม่ได้เพิ่มอะไรให้กับคำสั่ง ipsw เพียงแค่ให้คุณเข้าถึงตัวเลือกทั้งหมดได้ง่ายขึ้น

หน้านี้ช่วยฉันได้มากในการตั้งค่าการกำหนดค่าของฉัน:

http://lucumr.pocoo.org/2013/1/6/osx-wifi-proxy/


ฉันลองแล้ว แต่ด้วยเหตุผลบางอย่างมันไม่ทำงาน มันทำลายการแบ่งปันอินเทอร์เน็ตอย่างสมบูรณ์ นอกจากนี้ฉันเข้าใจว่า Apple กำลังย้ายจาก ipfw จาก FreeBSD เพื่อสนับสนุน pf จาก OpenBSD
Christoffer Reijer

คำตอบนี้ใช้ได้กับ Mac เครื่องเก่าเท่านั้น Apple ได้ทำ IPFW ลดลง
Brady
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.