เป้าหมายของฉันคือการขอพร็อกซี 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
.