[RM-32945]: <Maejo> แก้ไขปัญหา Internet outbound

Viewed 10

Problem Summary

เครื่อง Server ของ Project Maejo ไม่สามารถเชื่อมต่ออินเทอร์เน็ตภายนอกได้ ทำให้ไม่สามารถดำเนินการคำสั่งที่ต้องใช้การเชื่อมต่ออินเทอร์เน็ต เช่น apt update, curl หรือ wget ไปยังเว็บไซต์ภายนอกได้

Root Cause Analysis

1 Answers

Solution / Workaround

ใช้วิธีการตั้งค่า HTTP Forward Proxy ด้วย Squid ผ่าน Docker เพื่อเป็นตัวกลางในการส่ง traffic ออกสู่ภายนอก

ขั้นตอนการติดตั้งและตั้งค่า Proxy Server (Squid)

  1. รัน Squid Container ด้วย Docker
    ใช้คำสั่ง 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)

  1. ตั้งค่า 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/";
    
  2. ตั้งค่า 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 ได้

Verification Steps

หลังจากตั้งค่า Proxy ที่เครื่อง Client เรียบร้อยแล้ว สามารถตรวจสอบการทำงานได้ดังนี้

  1. ทดสอบ apt update
    รันคำสั่ง apt update ควรจะสามารถเชื่อมต่อกับ repository และอัปเดตรายการ package ได้สำเร็จ

    sudo apt update
    
  2. ทดสอบการเชื่อมต่อด้วย curl
    ทดลอง curl ไปยังเว็บไซต์ภายนอก ควรจะได้รับ response กลับมา

    curl -I https://www.google.com
    
Related