Friday, March 21, 2025

Cách đặt IP sử dụng dải Link-Local trên Ubuntu

-

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.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories