Ubuntu và Linux nói chung có cơ chế đặc biệt đối với địa chỉ 169.254.x.x, vì đây là dải Link-Local theo chuẩn RFC 3927. Khi bạn cố gán địa chỉ 169.254.x.x, hệ thống mạng (Netplan, systemd-networkd, hoặc NetworkManager) có thể chặn hoặc ghi đè nó.

Hãy thử đặt IP thủ công bằng lệnh này.
ip addr add 169.254.170.2/24 dev bond0.22
Kiểm tra lại:
ip addr show bond0.22
Nếu lệnh này hoạt động, có thể Netplan hoặc systemd đang chặn. Bạn có thể ép Netplan không can thiệp bằng networkd
bằng các thao tác sau.
Tắt chế độ Link-Local trên interface
Linux tự động cấu hình địa chỉ 169.254.x.x nếu không có DHCP. Bạn cần vô hiệu hóa cơ chế này trước khi gán IP thủ công theo các bước sau:
Vô hiệu hóa IPv4LL trong systemd-networkd
Nếu Ubuntu dùng systemd-networkd
, bạn có thể thử tắt IPv4 Link-Local:
Tạo file config networkd /etc/systemd/network/99-bond0.22.network
và thêm nội dung sau:
cat > /etc/systemd/network/99-bond0.22.network << 'OEF'
[Match]
Name=bond0.22
[Network]
LinkLocalAddressing=no
OEF
Áp dụng thay đổi:
systemctl restart systemd-networkd
Mở file Netplan (/etc/netplan/01-netcfg.yaml
) và thêm dòng link-local: []
vào bond0.22
:
vlans:
bond0.22:
addresses:
- 169.254.170.2/24
id: 22
link: bond0
link-local: []
link-local: []
sẽ tắt tự động gán IP 169.254.x.x, cho phép bạn đặt IP theo ý muốn. Áp dụng thay đổi:
netplan apply
Sau khi chạy Netplan, kiểm tra:
ip addr show bond0.22
Nếu không có địa chỉ 169.254.170.2, kiểm tra lệnh:
ip route
Kiểm tra log Netplan & systemd-networkd nếu còn lỗi.
journalctl -xeu systemd-networkd | grep bond0.22
Bạn có thể sử dụng một số cách khác nếu cách trên thất bại như sau:
Chặn link-local IPv4 trên interface.
Thêm nội dung sau vào file config sysctl
:
cat > /etc/sysctl.conf << 'OEF'
net.ipv4.conf.all.accept_local = 0
net.ipv4.conf.all.arp_ignore = 2
net.ipv4.conf.all.arp_announce = 2
OEF
sysctl -p
Chặn link-local IPv4 bằng kernel parameter (nếu cần)
Nếu bạn muốn ngăn chặn hoàn toàn địa chỉ 169.254.x.x, thêm tham số sau vào dòng khởi động của kernel trong file /etc/default/grub
.
ipv4.conf.all.promote_secondaries=0
Mở file /etc/default/grub
và tìm dòng.
GRUB_CMDLINE_LINUX=""
Sửa thành.
GRUB_CMDLINE_LINUX="ipv4.conf.all.promote_secondaries=0"
Sau đó cập nhật GRUB:
sudo update-grub
sudo reboot
Chúc các bạn thành công.