Hành vi chính xác của lệnh: thay đổi địa chỉ ip là gì?


12

Tôi đã loay hoay với IPv6 và giải quyết các cuộc sống. Tôi phát hiện ra rằng valid_lftthuộc tính sẽ làm cho địa chỉ v6 biến mất tự động, nếu được sử dụng đúng cách. Để kéo dài địa chỉ 'tôi sẽ

ip addr change 1:2:3:4::1/112 dev eth0 valid_lft 86000

Việc sử dụng ip addr changekhông xuất hiện trong bất kỳ trang nào tôi có quyền truy cập (Debian, Ubuntu và trực tuyến ) và cũng không có trong tài liệu chính thức . Tôi tìm thấy nó trong một bài viết đề cập đến một email từ năm 2009 đến danh sách gửi thư ipv6-ops.

Từ những gì tôi có thể xác định chơi xung quanh, tôi đoán người ta luôn có thể sử dụng ip addr changethay vì ip addr add, bởi vì nếu một địa chỉ không tồn tại, ipsẽ thêm một địa chỉ, chỉ khi ip addr addđược sử dụng.

Điều đó có đúng không, tức là có ai có thể giải thích chính xác những gì ip addr changenó làm và nó khác với như thế nào ip addr addkhông?

Câu trả lời:


6

Khi bạn không chắc chắn về những gì nó làm và tài liệu không nói, bạn đã đến các nguồn, cụ thể là dòng 1588 :

if (matches(*argv, "change") == 0 ||
    strcmp(*argv, "chg") == 0)
    return ipaddr_modify(RTM_NEWADDR, NLM_F_REPLACE, argc-1, argv+1);

Vì vậy, những gì nó làm? Trả về kết quả của việc chạy ipaddr_modify()hàm được xác định trong dòng 1379 với các đối số RTM_NEWADDRNLM_F_REPLACE.

Từ những gì tôi có thể xác định chơi xung quanh, tôi đoán người ta luôn có thể sử dụng ip addr changethay vì ip addr add, bởi vì nếu một địa chỉ không tồn tại, ipsẽ thêm một địa chỉ, chỉ khi ip addr addđược sử dụng.

Điều đó có đúng không, tức là có ai có thể giải thích chính xác những gì ip addr changenó làm và nó khác với như thế nào ip addr addkhông?

Không, addsẽ tạo hoặc thực thi các đối số đã cho (nếu có được đưa ra), trong khi changesẽ tìm kiếm đối số và thay thế nó.

BTW, replacedường như là một sự thỏa hiệp giữa addchangevì nó sử dụng một túi các đối số hỗn hợp.


Và tác dụng của những lá cờ đó là gì? Bởi vì trên dòng lệnh họ không thực sự hiển thị. Đặc biệt là changehoạt động như addnếu địa chỉ để thay đổi chưa tồn tại. Tôi đã không nghĩ rằng mình sẽ phải đào qua nguồn kernel (vì đó là nơi cuối cùng các cờ được thông qua), để tìm ra một trong những công cụ dòng lệnh phổ biến nhất để quản lý mạng. Đây không phải là thập niên 90 ... :-) Nhưng dù sao cũng cảm ơn!
Bananguin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.