Làm thế nào để loại bỏ tất cả các cổng mặc định


13

Tôi đang chạy một máy Linux được xây dựng tùy chỉnh, vì vậy không phải tất cả các lệnh Linux đều khả dụng .
Tôi thực thi các lệnh liên quan đến mạng, vì vậy tôi cần đặt một cổng mặc định ngay trước khi tôi chạy lệnh của mình, sau đó loại bỏ cổng đó ngay lập tức.

Để làm điều đó tôi chạy tất cả các lệnh của mình trong một dòng:

/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;

Vấn đề là, vì một số lý do, tôi đã từng tìm thấy 2 cổng mặc định trên cùng một máy khiến tất cả các lệnh của tôi không thành công vì ngay cả khi tôi đặt cổng mặc định trước khi chạy thử nghiệm, nó vẫn bị rối và không thể chạy thử nghiệm.

Vậy có cách nào để loại bỏ TẤT CẢ các cổng mặc định trong một lệnh không? Tôi có một số lượng lớn máy đang tăng và sẽ không thực tế khi tạo tập lệnh trên mỗi máy. Tôi cần một lệnh đơn giản như sau:

/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;

Tất cả những gì tôi tìm thấy cho đến nay là một lệnh để loại bỏ một cổng mặc định nhưng không phải tất cả chúng /sbin/route del defaultđều không hoạt động với tôi.

/sbin/route giúp hiển thị như sau

/sbin/route --help

Usage: route [{add|del|delete}]

Edit the kernel's routing tables

Options:
        -n      Don't resolve names
        -e      Display other/more information
        -A inet Select address family

Câu trả lời:


17

Nếu bạn sử dụng ipthay vì route, bạn chỉ có thể chạy:

ip route del 0/0

Tôi tin rằng bắt tất cả các tuyến mặc định.


Cảm ơn bạn nhưng nó vẫn chỉ xóa một cổng mặc định, không phải tất cả.
Muhammad Gelbana

4
Sau đó, có lẽ bạn nên lặp qua tất cả các tuyến mặc định và xóa chúng, thay vì giả sử rằng lần xóa đầu tiên của bạn sẽ xóa tất cả chúng. Có vẻ như mã của bạn đang phá vỡ bằng cách nào đó và thêm nhiều tuyến đường mặc định. Đây không phải là một trường hợp bình thường.
jsbillings

Tôi đồng ý rằng mã của tôi bị hỏng tại một số điểm nhưng có thể tôi có thể giải quyết vấn đề này một cách nhanh chóng bằng cách sửa lỗi GW thay vì lãng phí rất nhiều thời gian mà tôi không có. Cảm ơn sự giúp đỡ của bạn.
Muhammad Gelbana

Đây chỉ là linux hiện đại.
jordanm

4

Để loại bỏ tất cả các cổng mặc định bằng cách sử dụng ip

ip route flush 0/0

2

Nếu mã của bạn bị hỏng với nhiều cổng mặc định, có lẽ bạn cũng nên tìm trong nhiều địa chỉ IP trên mỗi thiết bị.

Vì bạn đã nhận được câu trả lời ở đây là một cách tiếp cận khác vì bạn KHÔNG BAO GIỜ thay đổi cấu hình hệ thống của mình chỉ vì bạn muốn chạy / kiểm tra tập lệnh. Làm thế nào về việc sử dụng không gian tên mạng thay thế. Để có một giới thiệu ngắn về cách thêm thiết bị ảo vào NS (không gian tên), hãy xem http://code.google.com.vn/p/coreemu/wiki/Namespaces .

Để tạo một không gian tên có tên là test và chạy một lệnh trong không gian tên này, chỉ cần chạy

ip netns add test
ip netns exec test COMMAND

trong đó LỰA CHỌN có thể là ví dụ shell của bạn hoặc chỉ là tập lệnh máy chủ.


2

Tất cả các câu trả lời đều tuyệt vời nhưng tôi đã giải quyết vấn đề này bằng một cách tiếp cận khác, tôi đã sử dụng lệnh để chỉ thêm một cổng mặc định, nhưng không thành công nếu đã có một. Và do đó cuối cùng loại bỏ các cổng sai ở cuối lệnh. Điều này sẽ làm việc trên isa lần thứ hai.

ip route add default via my-gateway ip route del default

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.