บทความนี้อธิบายวิธีการตั้งค่า Additional IP Address บน CentOS Stream 10 ด้วย NetworkManager เพื่อให้ระบบปฏิบัติการสามารถใช้งาน Additional IP Address ผ่าน Interface และ Gateway ที่ถูกต้องได้
ก่อนดำเนินการตามคู่มือนี้ จำเป็นต้อง Assign Additional IP Address ให้กับ Cloud VPS จาก Cloud Portal ให้เรียบร้อยก่อน หากยังไม่ได้ดำเนินการ Additional IP จะไม่สามารถใช้งานบนระบบปฏิบัติการได้
วิธีการ Assign Additional IP Address ให้กับ Cloud VPS
วิธีตั้งค่า Additional IP Address บน CentOS Stream 10 ด้วย NetworkManager
ก่อนเริ่มดำเนินการ กรุณาตรวจสอบว่าท่านมีข้อมูลดังต่อไปนี้เรียบร้อยแล้ว
- Primary IP Address
- Additional IP Address
- Gateway ของ Additional IP Address
- MAC Address ของ Interface ที่ต้องการใช้งาน
- สามารถเชื่อมต่อ SSH เข้าสู่ Server ได้
- ใช้งานบัญชี root หรือบัญชีที่สามารถใช้คำสั่ง sudo ได้
คู่มือนี้ใช้สำหรับ CentOS Stream 10 ที่บริหารจัดการ Network ด้วย NetworkManager (nmcli)
กรุณาดำเนินการตามขั้นตอนดังต่อไปนี้
Step 1: ตรวจสอบชื่อ Network Connection
ตรวจสอบชื่อ Network Connection ที่ NetworkManager ใช้งานอยู่
nmcli connection showจากนั้นตรวจสอบว่า Connection ใดผูกอยู่กับ Interface ens4
ชื่อ Connection ของแต่ละเครื่องอาจแตกต่างกัน เช่น Wired connection 1, System ens4, ens4 หรือชื่ออื่น ๆ กรุณาใช้ชื่อ Connection จริงที่แสดงจากคำสั่ง nmcli connection show
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 ให้กับ Network Connection ของ Interface ens4 และป้องกันไม่ให้ Interface นี้ถูกใช้เป็น Default Route หลัก
nmcli con modify "Wired connection 1" \
ipv4.method manual \
ipv4.addresses "118.27.152.54/23" \
ipv4.never-default yesกรุณาเปลี่ยน "Wired connection 1" เป็นชื่อ Network Connection จริงของเครื่องท่าน หากชื่อ Connection ไม่ตรงกัน คำสั่งจะไม่สามารถใช้งานได้
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 ที่อยู่บน Interface ens4
Step 5: เพิ่ม Routing Rule
กำหนด Routing Rule ให้ Traffic ที่มี Source IP เป็น 118.27.152.54 ใช้งาน Routing Table 102
nmcli con modify "Wired connection 1" \
+ipv4.routing-rules "priority 102 from 118.27.152.54/32 table 102"กรณีมี Additional IP Address มากกว่า 1 IP และใช้งานผ่าน Interface และ Gateway เดียวกัน สามารถใช้ Routing Table เดียวกันได้ เช่น table 102 โดยเพิ่ม Routing Rule สำหรับแต่ละ Source IP และกำหนดค่า Priority ไม่ให้ซ้ำกัน เช่น 102, 103, 104 ตามลำดับ
Step 6: Apply Network
ปิดและเปิด Connection ใหม่เพื่อให้ค่าที่ตั้งไว้มีผล
nmcli con down "Wired connection 1"
nmcli con up "Wired connection 1"หากเชื่อมต่อผ่าน SSH แนะนำให้ตรวจสอบชื่อ Connection ให้ถูกต้องก่อนรันคำสั่ง เพื่อป้องกันการหลุดจากระบบ
Step 7: ทดสอบการทำงาน
ทดสอบว่า Additional IP Address สามารถออก Internet ได้ถูกต้อง
curl --interface 118.27.152.54 https://ifconfig.meผลลัพธ์ควรแสดงเป็น
118.27.152.54ตรวจสอบหลังตั้งค่า
ตรวจสอบข้อมูล Network และ Policy Routing ด้วยคำสั่งต่อไปนี้
ip a show ens4
ip route
ip rule show
ip route show table 102ผลลัพธ์ที่ควรพบ เช่น
ip a show ens4
inet 118.27.152.54/23
ip rule show
102: from 118.27.152.54 lookup 102
ip route show table 102
default via 118.27.152.1 dev ens4
118.27.152.0/23 dev ens4หลังตั้งค่าเรียบร้อย • Primary Interface จะยังคงเป็น Default Route หลักของระบบ • Additional IP Address จะใช้งานผ่าน Gateway ของตนเอง • หากมีหลาย Additional IP Address ที่ใช้ Gateway เดียวกัน สามารถใช้ Routing Table เดียวกันได้ โดยเพิ่ม Routing Rule แยกตามแต่ละ Source IP และกำหนด Priority ไม่ให้ซ้ำกัน