Problem Summary
เครื่อง Server ของ Project Maejo ไม่สามารถเชื่อมต่ออินเทอร์เน็ตภายนอกได้ ทำให้ไม่สามารถดำเนินการคำสั่งที่ต้องใช้การเชื่อมต่ออินเทอร์เน็ต เช่น apt update, curl หรือ wget ไปยังเว็บไซต์ภายนอกได้
เครื่อง Server ของ Project Maejo ไม่สามารถเชื่อมต่ออินเทอร์เน็ตภายนอกได้ ทำให้ไม่สามารถดำเนินการคำสั่งที่ต้องใช้การเชื่อมต่ออินเทอร์เน็ต เช่น apt update, curl หรือ wget ไปยังเว็บไซต์ภายนอกได้
ใช้วิธีการตั้งค่า HTTP Forward Proxy ด้วย Squid ผ่าน Docker เพื่อเป็นตัวกลางในการส่ง traffic ออกสู่ภายนอก
ขั้นตอนการติดตั้งและตั้งค่า Proxy Server (Squid)
docker run เพื่อเริ่มการทำงานของ Squid Proxy โดยใช้การตั้งค่าเริ่มต้น (Default Configuration) ซึ่งจะอนุญาตการเชื่อมต่อจากทุก IP Address และทำการ map port 8888 ของเครื่อง Host ไปยัง port 3128 ของ Container
docker run --rm -d --name squid-proxy -p 8888:3128 ubuntu/squid
คำอธิบายคำสั่ง:
--rm: ลบ Container อัตโนมัติเมื่อหยุดการทำงาน-d: รัน Container ใน background--name squid-proxy: ตั้งชื่อ Container-p 8888:3128: Map port 8888 ของ Host ไปยัง port 3128 ของ Container
ขั้นตอนการตั้งค่าที่เครื่อง Client (เครื่องที่ต้องการออก Internet)
ตั้งค่า Proxy สำหรับ APT
สร้างไฟล์ /etc/apt/apt.conf.d/01proxy และเพิ่มบรรทัดต่อไปนี้ (แทนที่ <PROXY_SERVER_IP> ด้วย IP ของเครื่องที่รัน Docker)
Acquire::http::Proxy "http://<PROXY_SERVER_IP>:8888/";
Acquire::https::Proxy "https://<PROXY_SERVER_IP>:8888/";
ตั้งค่า Environment Variables
เพื่อให้โปรแกรมอื่นๆ เช่น curl, wget สามารถใช้งาน proxy ได้ ให้ทำการ export environment variables ดังนี้
export http_proxy="http://<PROXY_SERVER_IP>:8888"
export https_proxy="http://<PROXY_SERVER_IP>:8888"
export ftp_proxy="http://<PROXY_SERVER_IP>:8888"
export no_proxy="localhost,127.0.0.1,.local"
เพื่อให้การตั้งค่านี้คงอยู่ถาวร สามารถเพิ่มบรรทัดเหล่านี้ลงในไฟล์ ~/.bashrc หรือ /etc/environment ได้
หลังจากตั้งค่า Proxy ที่เครื่อง Client เรียบร้อยแล้ว สามารถตรวจสอบการทำงานได้ดังนี้
ทดสอบ apt update
รันคำสั่ง apt update ควรจะสามารถเชื่อมต่อกับ repository และอัปเดตรายการ package ได้สำเร็จ
sudo apt update
ทดสอบการเชื่อมต่อด้วย curl
ทดลอง curl ไปยังเว็บไซต์ภายนอก ควรจะได้รับ response กลับมา
curl -I https://www.google.com