Tôi từng gặp không ít trường hợp khách hàng chia sẻ: thêm IP local cho VPS xong thì mất sạch sau khi reboot. Thực ra, cách add IP Linux local trên VPS không hề phức tạp – chỉ là bạn phải làm đúng từ đầu. IP local không chỉ để “cho đủ”, mà còn giúp tối ưu hiệu suất, chia tách dịch vụ nội bộ, bảo mật cao hơn và tiết kiệm băng thông rõ rệt.
Trong bài viết này, tôi sẽ hướng dẫn bạn từng bước – từ lệnh cơ bản, cấu hình vĩnh viễn đến cách xử lý các tình huống lỗi thực tế. Tất cả đều dựa trên kinh nghiệm vận hành VPS cho doanh nghiệp tại ZoneCloud và tài liệu chuẩn từ Linux.
IP local là gì và vì sao cần thêm IP trên VPS Linux
IP local, hay còn gọi là địa chỉ IP cục bộ, là một dải IP chỉ hoạt động trong phạm vi mạng nội bộ. Các dải thường gặp bao gồm 192.168.x.x
, 10.x.x.x
hoặc 172.16.x.x
– theo chuẩn RFC1918 của IETF (RFC1918).
Trên thực tế, IP local giúp các dịch vụ nội bộ trong cùng VPS hoặc giữa các VPS giao tiếp với nhau mà không cần truy cập Internet. Điều này không chỉ tiết kiệm băng thông mà còn tăng độ bảo mật – bởi các IP này không thể bị truy cập từ bên ngoài.

Tôi từng triển khai cụm ảo hóa nội bộ gồm 6 VPS trên cùng một máy chủ vật lý tại ZoneCloud. Mỗi VPS được gán một IP local riêng, dùng để đồng bộ dữ liệu qua rsync và giám sát hệ thống bằng Prometheus. Nhờ IP nội bộ, toàn bộ luồng dữ liệu chạy với tốc độ gần như LAN, ổn định và tách biệt khỏi internet công cộng.
Việc thêm IP local trên VPS Linux cũng giúp chia nhỏ workload: mỗi dịch vụ (web, DB, API) có thể bind vào một IP khác nhau. Điều này đặc biệt hữu ích khi bạn triển khai firewall layer-4 hoặc dùng các container (Docker, LXC) với phân vùng mạng riêng.
Tóm lại, dù bạn dùng VPS để chạy ứng dụng web, xử lý dữ liệu hay đơn giản chỉ là test môi trường, có thêm một hoặc nhiều IP local sẽ giúp hệ thống linh hoạt và an toàn hơn.
Cách thêm IP tạm thời trên VPS (Linux mọi distro)
Khi bạn cần nhanh chóng thêm một địa chỉ IP local để test dịch vụ hoặc thiết lập mạng nội bộ tạm thời, cách đơn giản và nhanh nhất là dùng lệnh ip addr add
. Câu lệnh này khả dụng trên hầu hết các bản phân phối Linux hiện đại, từ Ubuntu, Debian đến CentOS và AlmaLinux – miễn là hệ thống có cài sẵn bộ công cụ iproute2
.
Ví dụ, để thêm IP 192.168.100.10
với subnet mask /24
vào card mạng eth0
, tôi dùng lệnh:
ip addr add 192.168.100.10/24 dev eth0
Ngay sau đó, bạn có thể xác nhận IP đã được gán thành công bằng lệnh:
ip a show dev eth0
Hoặc nếu bạn quen dùng lệnh cũ:
ifconfig eth0
Tuy nhiên, có một điều quan trọng mà rất nhiều người mới hay bỏ qua: IP được thêm theo cách này sẽ biến mất sau khi VPS khởi động lại. Đây là đặc tính mặc định của hệ thống mạng Linux – IP được gán “tạm thời” vào kernel networking stack chứ không được lưu trong cấu hình vĩnh viễn.
Chính vì vậy, tôi thường khuyên khách hàng chỉ nên dùng lệnh này khi cần cấu hình nhanh để test nội bộ. Với những hệ thống cần IP hoạt động ổn định sau mỗi lần reboot, bạn nên áp dụng các phương pháp cấu hình vĩnh viễn ở phần tiếp theo.
Nếu bạn muốn thử nghiệm đa IP trên cùng interface, bạn có thể thêm IP alias
tạm thời như sau:
ip addr add 192.168.100.11/24 dev eth0 label eth0:1
Lưu ý: label eth0:1
không tạo ra interface thực sự, nhưng là một cách để hệ thống gán thêm địa chỉ phụ vào interface hiện tại.
Tham khảo tài liệu gốc từ Linux Foundation: ip-address(8) – iproute2 manual
Cách thêm IP vĩnh viễn (giữ sau reboot)
Thêm IP local tạm thời là chưa đủ nếu bạn cần hệ thống ổn định dài hạn. Để IP tồn tại sau mỗi lần reboot, bạn cần chỉnh sửa file cấu hình mạng theo từng hệ điều hành. Dưới đây là 3 trường hợp phổ biến tôi thường gặp nhất khi triển khai cho khách hàng tại ZoneCloud.
Ubuntu/Debian dùng interfaces cổ điển
Với các phiên bản Ubuntu cũ hoặc Debian dùng hệ thống /etc/network/interfaces
, bạn có thể chỉnh như sau:
nano /etc/network/interfaces
Thêm đoạn sau vào cuối file:
auto eth0
iface eth0 inet static
address 192.168.100.10
netmask 255.255.255.0
Lưu lại, sau đó khởi động lại dịch vụ mạng:
systemctl restart networking
Nếu thấy IP được giữ lại sau reboot, bạn đã thành công. Đây là cách tôi hay dùng cho các hệ Debian-based server chạy app backend nội bộ.
Ubuntu 18.04+ hoặc Debian mới dùng Netplan
Từ Ubuntu 18.04 trở đi, hệ thống cấu hình mạng chuyển sang dùng Netplan
. Bạn cần sửa file YAML như sau:
nano /etc/netplan/01-netcfg.yaml
Ví dụ nội dung:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.100.10/24
Lưu lại, sau đó áp dụng:
netplan apply
Đừng quên kiểm tra cú pháp YAML (thụt đầu dòng rất quan trọng). Netplan dễ dùng, nhưng nếu có nhiều IP hoặc alias thì nên tách từng dòng trong danh sách addresses
.
CentOS/RHEL và các hệ họ Red Hat
Trên CentOS 7 hoặc AlmaLinux/Rocky Linux, bạn cần tạo file cấu hình trong thư mục /etc/sysconfig/network-scripts
hoặc /etc/NetworkManager/system-connections
nếu đang dùng NetworkManager.
Ví dụ: thêm file mới
vi /etc/sysconfig/network-scripts/ifcfg-eth0-range0
Nội dung:
IPADDR_START=192.168.100.11
IPADDR_END=192.168.100.20
CLONENUM_START=0
Điều này sẽ tạo các alias interface từ eth0:0
đến eth0:9
. Mỗi alias đại diện cho một IP khác nhau.
Khởi động lại mạng để áp dụng:
systemctl restart network
Nếu bạn dùng NetworkManager, tôi khuyên dùng công cụ nmcli
hoặc cấu hình file tương ứng trong /etc/NetworkManager/system-connections
– dễ kiểm soát hơn khi có nhiều interface.
Tham khảo thêm: RedHat – Adding multiple IP addresses to one NIC
Thêm nhiều IP cùng lúc (range IP hoặc alias interface)
Trong nhiều trường hợp, bạn không chỉ cần một IP local, mà có thể cần tới hàng chục – thậm chí hàng trăm địa chỉ IP nội bộ. Điều này rất phổ biến khi tôi triển khai cụm container nội bộ hoặc hệ thống reverse proxy trên môi trường VPS lớn tại ZoneCloud.
Thay vì thêm thủ công từng IP bằng lệnh ip addr add
, bạn nên cấu hình theo dạng dải (range) hoặc sử dụng alias interface. Dưới đây là hai cách mà tôi thường áp dụng:
1. Cấu hình range IP trên CentOS/RHEL
Đây là phương pháp tôi dùng khi khách cần gán dải IP từ 192.168.100.50 đến 192.168.100.70 lên cùng một card mạng:
vi /etc/sysconfig/network-scripts/ifcfg-eth0-range0
Thêm nội dung sau:
IPADDR_START=192.168.100.50
IPADDR_END=192.168.100.70
CLONENUM_START=0
Sau khi lưu file, bạn khởi động lại dịch vụ mạng:
systemctl restart network
Kết quả là hệ thống sẽ tự động tạo các interface dạng eth0:0
, eth0:1
, … cho đến eth0:20
, mỗi alias tương ứng với một IP.
2. Dùng script gán nhiều IP với iproute2
Trên các distro không hỗ trợ file ifcfg-range
(như Ubuntu), tôi dùng script shell để gán hàng loạt IP local nhanh chóng:
for i in $(seq 50 70); do
ip addr add 192.168.100.$i/24 dev eth0
done
Lưu ý: Cách này chỉ có hiệu lực tạm thời – IP sẽ mất sau khi VPS reboot. Nếu muốn giữ lại vĩnh viễn, bạn cần đưa đoạn script này vào file /etc/rc.local
(nếu còn được hỗ trợ) hoặc tạo systemd service khởi động cùng hệ thống.
3. Alias interface – cách cũ nhưng hữu dụng
Các alias interface như eth0:1
, eth0:2
từng rất phổ biến. Dù ngày nay không còn được khuyến nghị dùng trong môi trường hiện đại, nhưng với các hệ thống cũ hoặc script kế thừa, bạn vẫn có thể sử dụng:
ip addr add 192.168.100.51/24 dev eth0 label eth0:1
Bạn có thể kiểm tra các alias đã tạo bằng:
ip -o -4 addr show dev eth0
Gợi ý: Nếu bạn cần tạo các alias này vĩnh viễn trên Ubuntu, hãy cấu hình trong Netplan hoặc tạo nhiều mục addresses:
trong YAML.
Thêm tài liệu tham khảo chính thức từ Red Hat: Configure multiple IP addresses on a single NIC
Cách xóa IP đã thêm
Khi bạn cần thu hồi một địa chỉ IP local đã gán, có hai trường hợp xảy ra: IP được thêm tạm thời bằng lệnh hoặc IP đã được cấu hình vĩnh viễn trong hệ thống. Tôi sẽ hướng dẫn bạn xử lý cả hai.
Xóa IP tạm thời
Nếu bạn đã thêm IP bằng lệnh ip addr add
, bạn có thể gỡ bỏ bằng cú pháp tương tự:
ip addr del 192.168.100.10/24 dev eth0
Chỉ cần đảm bảo subnet mask chính xác (ví dụ: /24
), nếu không hệ thống sẽ báo lỗi “Cannot find device with address”. Đây là lỗi tôi từng gặp khá thường xuyên khi cấu hình sai CIDR prefix.
Xóa IP vĩnh viễn
Nếu IP được thêm qua file cấu hình (ví dụ: Netplan, /etc/network/interfaces
, hay ifcfg-range
), bạn chỉ cần tìm và xóa dòng IP tương ứng.
- Ubuntu dùng Netplan: Mở file
/etc/netplan/*.yaml
và xóa IP trong danh sáchaddresses:
, sau đó chạynetplan apply
. - Debian dùng interfaces: Xóa dòng
address
trong/etc/network/interfaces
, rồisystemctl restart networking
. - CentOS dùng range: Xóa file
/etc/sysconfig/network-scripts/ifcfg-eth0-range0
hoặc chỉnh lạiIPADDR_START / END
nếu chỉ muốn giảm bớt số lượng IP.
Sau khi chỉnh sửa, luôn nhớ restart dịch vụ mạng để áp dụng thay đổi. Đối với Netplan, dùng netplan apply
. Với CentOS/RHEL, dùng:
systemctl restart network
Nếu dùng NetworkManager, bạn có thể cần chạy thêm lệnh:
nmcli connection reload
Một mẹo nhỏ tôi thường áp dụng là gắn chú thích # dynamic
vào các IP tạm thời trong file cấu hình, giúp team dev dễ phân biệt và bảo trì sau này.
Các vấn đề thường gặp & cách khắc phục
Thêm IP local nghe có vẻ đơn giản, nhưng nếu bạn từng quản trị hệ thống lâu dài, bạn sẽ biết mọi thứ có thể “vỡ trận” chỉ vì một lỗi cấu hình nhỏ. Dưới đây là những lỗi phổ biến tôi từng gặp khi triển khai VPS tại ZoneCloud – kèm cách khắc phục trực tiếp.
1. IP biến mất sau khi reboot
Lý do phổ biến nhất: bạn chỉ thêm IP bằng lệnh ip addr add
mà không cấu hình vĩnh viễn.
Khắc phục: Áp dụng cấu hình trong /etc/network/interfaces
, Netplan YAML hoặc ifcfg-*
. Đừng quên systemctl enable network
nếu dịch vụ chưa tự khởi động.
2. Netplan ghi đè cấu hình cũ
Nhiều bạn chỉnh IP trong /etc/network/interfaces
nhưng không có tác dụng – do hệ thống dùng Netplan.
Khắc phục: Kiểm tra Netplan bằng ls /etc/netplan/
. Nếu có file YAML, hãy chỉnh ở đó và chạy netplan apply
.
3. NetworkManager tự ghi đè cấu hình
Trên CentOS/RHEL hoặc Ubuntu Desktop, NetworkManager có thể làm mất IP nếu bạn cấu hình bằng file mà NM không quản lý.
Khắc phục: Dùng nmcli
hoặc chỉnh file trong /etc/NetworkManager/system-connections
. Sau đó reload:
nmcli connection reload
4. Xung đột IP (conflict)
Thêm IP trùng với IP đã có trên hệ thống khác có thể gây lỗi mạng, mất kết nối, thậm chí tắt luôn interface.
Khắc phục: Dùng arping
để kiểm tra trùng IP hoặc cài iputils-arping
:
arping -I eth0 192.168.100.10
Nếu có phản hồi, IP đã được dùng ở đâu đó trong mạng.
5. Docker làm loạn IP local
Các container Docker sử dụng bridge network có thể chiếm các dải IP như 172.17.0.0/16
, gây xung đột khi bạn add IP local cùng subnet.
Khắc phục: Đổi subnet Docker trong file /etc/docker/daemon.json
:
{
"bip": "172.30.0.1/16"
}
Sau đó restart Docker:
systemctl restart docker
6. ARP spoofing nội bộ
Nếu VPS đặt trong cùng datacenter với các máy khác (hoặc container không cô lập tốt), có thể bị giả mạo địa chỉ IP nội bộ.
Khắc phục: Dùng iptables hoặc nftables để giới hạn traffic theo MAC hoặc dải IP cụ thể.
iptables -A INPUT -s ! 192.168.100.0/24 -i eth0 -j DROP
Một vài mẹo nâng cao hiếm gặp nhưng hữu ích
Khi bạn đã quen thuộc với việc cấu hình IP local cơ bản, sẽ đến lúc cần đi xa hơn – đặc biệt khi vận hành hệ thống phức tạp, nhiều container hoặc máy ảo nội bộ. Dưới đây là những mẹo tôi thường áp dụng trong các dự án nâng cao tại ZoneCloud – dù không phổ biến, nhưng cực kỳ hữu ích.
1. Backup cấu hình mạng trước khi chỉnh
Trước khi bạn chỉnh bất kỳ file nào liên quan đến mạng, hãy sao lưu cấu hình cũ. Tôi từng gặp trường hợp chỉnh sai Netplan khiến VPS mất kết nối SSH – phải truy cập qua console để khôi phục.
cp /etc/netplan/01-netcfg.yaml /etc/netplan/backup.yaml
Với CentOS:
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /root/ifcfg-eth0.bak
2. Ghi log alias IP tự động
Nếu bạn sử dụng alias interface hoặc nhiều IP local để theo dõi dịch vụ nội bộ, hãy log lại các IP đã gán bằng cron hoặc script log:
ip -o -4 addr show dev eth0 | awk '{print $4}' > /var/log/ip_alias.log
3. Tích hợp với Docker bridge và isolate subnet
Tôi thường phối hợp IP local với Docker bằng cách tạo custom bridge network, tách biệt hoàn toàn subnet giữa các nhóm dịch vụ:
docker network create \
--subnet=192.168.50.0/24 \
--gateway=192.168.50.1 \
--driver=bridge \
internal_net
Việc tách biệt IP nội bộ như vậy giúp giảm thiểu rủi ro bảo mật và tối ưu lưu lượng trong cụm container.
4. Hạn chế IP local bằng firewall
Nếu không cấu hình firewall cẩn thận, IP local có thể bị tấn công giả mạo từ container rogue hoặc user khác cùng máy chủ. Tôi luôn cấu hình iptables hạn chế rõ ràng như sau:
iptables -A INPUT -d 192.168.100.0/24 -i eth0 -j ACCEPT
iptables -A INPUT -s ! 192.168.100.0/24 -d 192.168.100.0/24 -j DROP
5. Sử dụng systemd-networkd để quản lý nâng cao
Với các hệ thống cần quản lý mạng bằng file đơn giản, tôi dùng systemd-networkd
thay vì Netplan hoặc NetworkManager. Chỉ cần một file như sau:
[Match]
Name=eth0
[Network]
Address=192.168.100.10/24
Address=192.168.100.11/24
Gateway=192.168.100.1
DNS=8.8.8.8
Lưu tại /etc/systemd/network/10-eth0.network
và khởi động:
systemctl enable systemd-networkd --now
Đây là cách tôi dùng cho các VPS dạng minimal không có Netplan, giúp tối ưu cấu hình mạng rất rõ ràng, dễ debug.
Câu hỏi thường gặp (FAQ)
Làm sao để thêm IP local tạm thời trên VPS Linux?
Bạn có thể dùng lệnh:
ip addr add 192.168.x.x/24 dev eth0
Lưu ý đây là IP tạm thời – sẽ mất sau khi reboot.Làm cách nào để IP local không bị mất sau khi VPS khởi động lại?
Bạn cần cấu hình IP trong file hệ thống mạng phù hợp với OS: Netplan (Ubuntu 18.04+),
/etc/network/interfaces
(Debian cũ), hoặcifcfg-*
(CentOS/RHEL).Có thể thêm nhiều IP local cùng lúc không?
Hoàn toàn được. Bạn có thể dùng file cấu hình dải IP như
ifcfg-eth0-range0
hoặc scriptfor
loop vớiip addr add
để gán hàng loạt IP nội bộ.Xóa IP local đã thêm như thế nào?
Dùng lệnh:
ip addr del 192.168.x.x/24 dev eth0
Với IP vĩnh viễn, hãy chỉnh lại file cấu hình mạng tương ứng và restart dịch vụ.Vì sao IP local không hoạt động dù đã thêm đúng?
Có thể do Netplan chưa apply, NetworkManager ghi đè cấu hình, subnet bị trùng với Docker hoặc firewall chặn. Hãy kiểm tra lại từng thành phần và log hệ thống để xác định nguyên nhân.
Kết luận
Việc add IP Linux local trên VPS không chỉ đơn giản là gán thêm một dãy số vào card mạng. Đó là bước nền quan trọng để xây dựng một hệ thống nội bộ ổn định, bảo mật và linh hoạt hơn. Từ trải nghiệm triển khai thực tế tại ZoneCloud, tôi tin rằng việc hiểu rõ cấu trúc mạng của từng hệ điều hành – và biết cách xử lý các tình huống phát sinh – sẽ giúp bạn tránh được rất nhiều rủi ro khó lường.
Nếu bạn đang cần tư vấn giải pháp hạ tầng phù hợp cho hệ thống nội bộ, hay đơn giản chỉ cần một môi trường VPS linh hoạt, hiệu suất cao để thực hành, đừng ngần ngại liên hệ với ZoneCloud. Tôi và đội ngũ kỹ thuật luôn sẵn sàng hỗ trợ bạn từng bước – từ cấu hình mạng đến tối ưu vận hành thực tế.