ipmasq กับการทำ transparent proxy

ตามที่ติดค้างไว้ใน ตอนที่แล้ว เกี่ยวกับการทำ internet gateway ด้วย ipmasq ว่าจะพูดถึงการทำ transparent proxy นะครับ ซึ่งก็ไม่ยากอย่างที่คิด

หลักการคือ ให้ส่งต่อแพ็กเก็ตจากเครื่องภายในที่ติดต่อไปยังพอร์ต 80 ให้ไปที่พอร์ตของ HTTP proxy (เช่น 3128 หรือพอร์ตอื่นตามแต่กำหนดขณะติดตั้งพร็อกซี) เพื่อที่การติดต่อเว็บจากเครื่องในเครือข่ายภายใน จะได้ผ่านพร็อกซีเสมอ โดยไม่ต้องตั้งค่าพร็อกซีอีก

เริ่มจากติดตั้ง squid proxy ก่อน

# aptitude install squid

แล้วตั้งค่า squid ตามปกติ อาจจะทดสอบการทำงานของพร็อกซี โดยเปิดเว็บเบราว์เซอร์ในเครื่องลูก แล้วตั้งค่าพร็อกซีก่อนเปิดเว็บต่าง ๆ ดูก่อน แล้วดู access log ของ squid ที่ /var/log/squid/access.log ว่ามี request เข้ามา

จากนั้น ตั้งค่า squid ที่ /etc/squid/squid.conf ให้เป็น transparent proxy (สำหรับ squid 2.6 ขึ้นไป):

http_port 3128 transparent

แล้วก็คัดลอกตัวอย่าง transparent proxy ของ ipmasq มา:

# cp /usr/share/doc/ipmasq/examples/basics/I89tproxy.rul \
/etc/ipmasq/rules/

แล้วแก้หมายเลขพอร์ตของพร็อกซีใน /etc/ipmasq/rules/I89tproxy.rul ซึ่งค่าปกติเป็น 8081 ให้เป็นหมายเลขพอร์ตที่เรากำหนดไว้ใน /etc/squid/squid.conf เช่น ในที่นี้เราใช้พอร์ต 3128 ก็ค้นหาและแทนที่ 8081 ด้วย 3128 ทั้งแฟ้ม

จากนั้น เมื่อสั่ง ipmasq เพื่อคำนวณ iptables ใหม่อีกครั้ง ก็จะได้ transparent proxy เรียบร้อย

Comments

great article guys.

don't forget change # http_access deny all ... to http_access allow all in /etc/squid/squid.conf

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้