Loại bỏ IP bằng lệnh ip trong linux


12

Nếu tôi thêm hai IP như thế này:

ip addr add 1.1.1.1/24 dev eth2
ip addr add 1.1.1.2/24 dev eth2

và sau đó tôi cố gắng xóa một trong những như thế này:

ip addr del 1.1.1.2/24 dev eth2

Cả hai IP sẽ bị xóa và tôi không biết làm thế nào để xử lý nó.

Có ai biết làm thế nào để giải quyết nó?


Yêu cầu của bạn không rõ ràng. Bạn có thể cho biết sản lượng dự kiến ​​ở đây là gì?
Đạo sư

Tôi cần nói ip chỉ để xóa một IP chứ không phải cả hai
Hamed JML

Vui lòng thêm ip addr showđầu ra
Gevial

Câu trả lời:


10

Theo mặc định, việc xóa một địa chỉ IP chính khỏi một giao diện sẽ xóa tất cả các địa chỉ khác trên cùng một mạng con.

Đây là câu trả lời cho lỗi REHL 1136733 được báo cáo bởi người dùng lain, người đã cung cấp câu trả lời vào ngày 12-ngày 13 tháng 3 ...

Bạn đang thêm nhiều địa chỉ trong cùng một mạng con, do đó, địa chỉ thứ hai và tiếp theo sẽ trở thành địa chỉ phụ. Điều này có thể được nhìn thấy trong đầu ra "ip addr show", lưu ý từ khóa "phụ" bên cạnh các địa chỉ đó.

Theo mặc định, khi xóa một địa chỉ chính, kernel cũng xóa tất cả các phần phụ tương ứng.

Nếu bạn muốn một trong những phần phụ được quảng cáo là phần chính mới trong phần xóa chính, hãy đặt net.ipv4.conf.eth9.promote_secondaries sysctl.


sudo systemctl net.ipv4.conf.eth0.promote_secondariesHoạt động không xác định net.ipv4.conf.eth0.promote_secondaries.
Laryx Decidua

@LaryxDecidua systemctl là lệnh hoàn toàn khác với sysctl
yahol

7

Điều này xảy ra vì bạn sử dụng / 24 mặt nạ mạng khi xóa. Nó được áp dụng để giải quyết bạn nhập. Hãy thử như sau:

ip addr del 1.1.1.2/32 dev eth2

Mặt nạ / 32 định nghĩa chính xác một máy chủ.


Điều này không hoạt động vì tôi đã cung cấp cho hệ thống / 24 netmask không / 32.
Hamed JML

Hãy thử mà không cần netmask:ip addr del 1.1.1.2 dev eth2
Gevial

Một lần nữa, nó xóa cả hai IP !!
Hamed JML

Lạ thật. Trong thử nghiệm xóa hộp CentOS của tôi mà không cần netmask đã thành công. Mặc dù xóa bằng / 24 cũng chỉ ảnh hưởng đến một địa chỉ. Bạn đang sử dụng bản phân phối nào?
Gevial

1
Tôi đang sử dụng Ubuntu 12.04
Hamed JML

2

Tôi không có eth2 để kiểm tra cái này nhưng nó hoạt động chính xác trên eth0 và tôi không thấy lý do tại sao eth2 nên trở nên kỳ diệu. Tôi đoán bạn đang sử dụng ip addr show dev eth2ifconfig eth2dường như không hiển thị các địa chỉ bổ sung được thêm bởi ip.

Một điều tôi nhận thấy là thứ tự bạn tạo / xóa địa chỉ rất quan trọng. Địa chỉ thứ hai và tiếp theo được thêm vào trong cùng một mạng sẽ bị xóa nếu địa chỉ chính bị xóa. Xem xét ...

    inet 1.1.1.1/24 scope global eth0
    inet 1.1.2.3/24 scope global eth0
    inet 1.1.1.2/24 scope global secondary eth0
    inet 1.1.1.3/24 scope global secondary eth0

Nếu bạn xóa 1.1.1.1 thì địa chỉ 1.2 và 1.3 cũng sẽ bị xóa. Nếu bạn xóa bất kỳ địa chỉ nào khác thì chỉ địa chỉ đó sẽ bị xóa.


Vì vậy, làm thế nào tôi có thể xóa địa chỉ đầu tiên mà không xóa địa chỉ khác?
Hamed JML

0

Tôi sẽ thử như sau:

ip addr del 1.1.1.2 dev eth2


0

Câu trả lời của @bvs đã chỉ ra chính xác hướng đi đúng của vấn đề và giải quyết nó cho tôi. Dưới đây, là một số chi tiết về các lệnh chính xác. Đối với nhiều giao diện mặc định là eth0, tôi đang thực hiện điều đó trong các lệnh sau, phải thay thế eth2cho câu hỏi ban đầu.

Đối với một giải pháp tạm thời (cho đến khi khởi động lại) sử dụng

sudo sysctl -w net.ipv4.conf.eth0.promote_secondaries=1

đối với một giải pháp vĩnh viễn vẫn tồn tại sau khi khởi động lại, hãy tạo một tệp /etc/sysctl.d/ip-promote.conf(hoặc tên tệp khác kết thúc bằng .conf) với nội dung sau:

# The following makes that a second IP on the eth0 interface
# is promoted as primary IP instead of being removed.
net.ipv4.conf.eth0.promote_secondaries=1
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.