บทความนี้อธิบายวิธีตั้งค่า Additional IP Address บน AlmaLinux ด้วย NetworkManager Policy Routing เพื่อให้ Additional IP Address สามารถใช้งานผ่าน Gateway ของตนเองได้อย่างถูกต้อง
ก่อนดำเนินการตามคู่มือนี้ จำเป็นต้อง Assign Additional IP Address ให้กับ Cloud VPS จาก Cloud Portal ให้เรียบร้อยก่อน หากยังไม่ได้ดำเนินการ Additional IP จะไม่สามารถใช้งานบนระบบปฏิบัติการได้
วิธีการ Assign Additional IP Address ให้กับ Cloud VPS
วิธีตั้งค่า Additional IP บน AlmaLinux ด้วย NetworkManager
ก่อนเริ่มดำเนินการ กรุณาตรวจสอบว่าท่านมีข้อมูลดังต่อไปนี้เรียบร้อยแล้ว
- Primary IP Address
- Additional IP Address
- Gateway ของ Additional IP Address
- สามารถเชื่อมต่อ SSH เข้าสู่เซิร์ฟเวอร์ได้
- ใช้งานบัญชี root หรือบัญชีที่สามารถใช้คำสั่ง sudo ได้
คู่มือนี้ใช้สำหรับ AlmaLinux ที่บริหารจัดการ Network ด้วย NetworkManager (nmcli)
กรุณาดำเนินการตามขั้นตอนดังต่อไปนี้
Step 1: ตรวจสอบชื่อ Network Connection
ตรวจสอบชื่อ Network Connection ที่ NetworkManager ใช้งานอยู่ เนื่องจากคำสั่ง nmcli ต้องอ้างอิงชื่อ Connection ให้ถูกต้อง
nmcli connection showสามารถตรวจสอบความสัมพันธ์ระหว่าง Interface และ Connection ได้ด้วยคำสั่ง
nmcli device statusชื่อ Connection ของแต่ละเครื่องอาจแตกต่างกัน เช่น Wired connection 1, System eth1, System ens4 หรืออื่น ๆ
Step 2: Backup Network Configuration
สำรอง Network Configuration ก่อนเริ่มแก้ไข เพื่อให้สามารถย้อนกลับได้หากมีการตั้งค่าผิดพลาด
mkdir -p /root/network-backup-$(date +%F-%H%M)
cp -a /etc/NetworkManager/system-connections/* /root/network-backup-$(date +%F-%H%M)/ 2>/dev/nullStep 3: ตั้งค่า IPv4 ให้ Interface
กำหนด Additional IP Address ให้กับ Interface และป้องกันไม่ให้ Interface นี้ถูกใช้เป็น Default Route หลัก
nmcli con modify "Wired connection 1" \
ipv4.method manual \
ipv4.addresses "118.27.152.57/23" \
ipv4.never-default yesหาก Interface เดียวกันมี Additional IP Address มากกว่า 1 IP สามารถกำหนดหลาย IP ได้ เช่น ipv4.addresses "118.27.152.57/23,118.27.152.58/23,118.27.152.59/23" โดยทุก IP สามารถใช้งาน Gateway เดียวกันได้
Step 4: เพิ่ม Route
กำหนด Routing Table สำหรับ Additional IP Address เพื่อให้สามารถใช้งาน Gateway ของตนเองได้
nmcli con modify "Wired connection 1" \
+ipv4.routes "118.27.152.0/23 table=102" \
+ipv4.routes "0.0.0.0/0 118.27.152.1 table=102"ในตัวอย่างนี้ใช้ Routing Table 102 สำหรับ Additional IP Address หากข้อมูล IP หรือ Gateway ของท่านแตกต่างจากตัวอย่าง กรุณาเปลี่ยนค่าให้ตรงกับข้อมูลจริงที่ได้รับจาก Cloud Portal
Step 5: เพิ่ม Routing Rule
กำหนด Routing Rule ให้ Traffic ที่มี Source IP ของ Additional IP Address ใช้งาน Routing Table 102
nmcli con modify "Wired connection 1" \
+ipv4.routing-rules "priority 102 from 118.27.152.57/32 table 102"กรณีมี Additional IP Address มากกว่า 1 IP และใช้งานผ่าน Interface และ Gateway เดียวกัน สามารถใช้ Routing Table เดียวกันได้ เช่น table 102 โดยเพิ่ม Routing Rule สำหรับแต่ละ Source IP และกำหนดค่า Priority ไม่ให้ซ้ำกัน ตัวอย่าง nmcli con modify "Wired connection 1" \ +ipv4.routing-rules "priority 102 from 118.27.152.57/32 table 102" \ +ipv4.routing-rules "priority 103 from 118.27.152.58/32 table 102" \ +ipv4.routing-rules "priority 104 from 118.27.152.59/32 table 102"
Step 6: Apply Network
ปิดและเปิด Connection ใหม่เพื่อให้ค่าที่ตั้งไว้มีผล
nmcli con down "Wired connection 1"
nmcli con up "Wired connection 1"หากเชื่อมต่อผ่าน SSH แนะนำให้ตรวจสอบชื่อ Connection ให้ถูกต้องก่อนรันคำสั่ง เพื่อป้องกันการหลุดจากระบบ หากชื่อ Connection ไม่ใช่ "Wired connection 1" ให้เปลี่ยนเป็นชื่อ Connection จริงของเครื่องท่าน
Step 7: ทดสอบการทำงาน
ทดสอบว่า Additional IP Address สามารถออก Internet ได้ถูกต้อง
curl --interface 118.27.152.57 https://ifconfig.meผลลัพธ์ควรแสดงเป็น IP เสริมดังนี้
118.27.152.57ตรวจสอบหลังตั้งค่า
ตรวจสอบข้อมูล Network และ Policy Routing ด้วยคำสั่งต่อไปนี้
ip a show eth1
ip route
ip rule show
ip route show table 102หลังตั้งค่าเรียบร้อย • Primary Interface จะยังคงเป็น Default Route หลักของระบบ • Additional IP Address จะใช้งานผ่าน Gateway ของตนเอง • หากมีหลาย Additional IP Address ที่ใช้ Gateway เดียวกัน สามารถใช้ Routing Table เดียวกันได้ โดยเพิ่ม Routing Rule แยกตามแต่ละ Source IP และกำหนด Priority ไม่ให้ซ้ำกัน