เปลี่ยนเส้นทางการรับส่งข้อมูล HTTP จากกล่อง LAN ไปยังพรอกซีภายนอกโดยใช้ iptables บนเราเตอร์ของฉัน


1

เป้าหมายของฉันคือการขอพร็อกซี HTTP ทั้งหมดจาก IP เดียว (แล็ปท็อปของฉัน) 192.168.1.134 ) บน LAN ของฉันไปยัง IP ภายนอก (อินเทอร์เน็ต VPS) X.X.X.X ) กำลังเรียกใช้พร็อกซีเซิร์ฟเวอร์ (โดยเฉพาะ mitmproxy ทำงานในโหมดโปร่งใส) ฟังบนพอร์ต 80

LAN ในบ้านของฉันใช้พลังงานจากเราเตอร์ ASUS RT-N66U ที่รันเฟิร์มแวร์ Asuswrt-Merlin เราเตอร์มี IP 192.168.1.1 และเป็นเกตเวย์เริ่มต้นของทุกอุปกรณ์ในเครือข่ายของฉัน ในการส่งต่อปริมาณข้อมูลฉันได้ส่งไปที่เราเตอร์ของฉันและดำเนินการต่อไปนี้ iptables คำสั่ง:

iptables -t nat -A PREROUTING -s 192.168.1.134 -p tcp --dport 80 -j DNAT --to X.X.X.X:80
iptables -t nat -A POSTROUTING -j MASQUERADE

นอกจากนี้การส่งต่อ IP เปิดใช้งานบนเราเตอร์ของฉัน:

admin@RT-N66U:/tmp/home/root# cat /proc/sys/net/ipv4/ip_forward
1

ผลลัพธ์นี้ใน บางสิ่งบางอย่าง แต่ไม่ใช่สิ่งที่ฉันคาดหวัง จาก 192.168.1.134 (แล็ปท็อปของฉัน) เมื่อฉันทำคำขอ http ง่ายๆ (เช่น curl http://example.com ) ฉันเห็นในบันทึกเหตุการณ์ของพร็อกซีของฉันว่า mitmproxy รายงานว่าลูกค้าเชื่อมต่อกัน (ใช้ NAT สาธารณะ IP ของเราเตอร์ของฉันที่ออกโดย ISP ของฉัน) แต่ก็ใกล้ถึงเท่าที่จะได้รับ มันจะไม่ไปไกลกว่านั้นอีกแล้วและคำสั่ง curl ของฉันก็จะรอ ในที่สุดฉันเห็น "การเชื่อมต่อรีเซ็ตโดยเพียร์" เปิดในบันทึกของพร็อกซีของฉันและการเชื่อมต่อถูกปิด

ความช่วยเหลือใด ๆ จะได้รับการแนะนำ ฉันต้องยอมรับว่าฉันไม่ค่อยเชี่ยวชาญ iptables.


อาจเป็นเพราะ mitmproxy ในโหมด transparent คาดว่าจะทำงานบนเราเตอร์ดังนั้นจึงได้รับข้อมูลเฉพาะจาก iptables (ดู docs.mitmproxy.org/en/latest/transparent/linux.html ) สิ่งนี้จะไม่ทำงานหากการเปลี่ยนเส้นทางเกิดขึ้นก่อนหน้านี้: ปลายทางหายไป หรือคุณเพียงแค่ต้อง "ทำสิ่งต่าง ๆ " ด้วย mitmproxy (แก้ไขยอมรับ ... )
A.B

@ A.B ฉันควรทราบว่าฉันได้รับสิ่งนี้ในการทำงานเมื่อกล่องพร็อกซีอยู่บน LAN เช่น ราสเบอร์รี่ PI มันมีบางอย่างเกี่ยวกับพร็อกซีบ็อกซ์ที่อยู่บน WAN
ccampo

ฉันยืนหยัดในสิ่งที่ฉันพูด docs.mitmproxy.org/en/latest/howmitmproxy.html#transparent-http การอ้างถึง: "สิ่งแรกคือกลไกการเปลี่ยนเส้นทางที่เปลี่ยนเส้นทางการเชื่อมต่อ TCP ที่กำหนดไว้สำหรับเซิร์ฟเวอร์บนอินเทอร์เน็ตไปยังพร็อกซีเซิร์ฟเวอร์การฟังซึ่งมักจะใช้รูปแบบของ ไฟร์วอลล์บนโฮสต์เดียวกันกับพร็อกซีเซิร์ฟเวอร์ - iptables บน Linux "และ" กลไกการกำหนดเส้นทางที่ดำเนินการเปลี่ยนเส้นทาง ติดตามจุดหมายปลายทางดั้งเดิมของเรา ข้อมูลนี้สูญหายคุณสามารถทำให้อุโมงค์ทำงานระหว่าง gw และ mitmproxy ของคุณและเปลี่ยนเส้นทางได้เฉพาะในพร็อกซีเท่านั้น
A.B

โดยวิธีการที่ทันสมัยคือการใช้ TPROXY, REDIRECT ยังคงได้รับการยอมรับ (นั่นคือสิ่งที่คาดว่า mitmproxy จึงไม่มีทางเลือกอื่น) และ DNAT ไม่สามารถทำงานได้เลย: ปลายทางเดิมหายไปนอก fw / เราเตอร์
A.B

@ A.B ไม่แน่ใจว่าคุณกำลังติดตามสิ่งที่ฉันกำลังพูดอยู่หรือไม่ แต่ฉันได้รับโหมดโปร่งใสในการทำงานเมื่อพร็อกซีอยู่ในกล่องอื่นนอกเหนือจากเราเตอร์ภายใน LAN ดูตัวอย่าง: gist.github.com/ccampo133/755b45e966dc736f71137e049ed5f0c8 ลืม mitmproxy ลืมโหมดโปร่งใสแม้ ... ลืมรายละเอียดเฉพาะ mitm ทั้งหมด ให้คุยย้อนกลับ proxy มันสามารถ nginx ประเด็นก็คือมันยังไม่ทำงานหากพร็อกซีอยู่บน WAN มากกว่า LAN และฉันต้องการทราบว่าเป็นไปได้ไหมที่จะใช้งาน
ccampo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.