Cara menghapus semua gateway default

13

Saya menjalankan mesin Linux yang dibuat khusus, jadi tidak semua perintah Linux tersedia .
Saya menjalankan perintah yang berhubungan dengan jaringan, jadi saya perlu mengatur gateway default tepat sebelum saya menjalankan perintah saya, kemudian hapus gateway itu segera sesudahnya.

Untuk melakukan itu saya menjalankan semua perintah saya dalam satu baris:

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

Masalahnya adalah, untuk beberapa alasan saya pernah menemukan 2 gateway default pada mesin yang sama yang menyebabkan semua perintah saya gagal karena bahkan jika saya mengatur gateway default saya sebelum menjalankan pengujian saya, itu masih kacau dan tidak dapat menjalankan pengujian saya.

Jadi apakah ada cara untuk menghapus SEMUA gateway default dalam satu perintah ? Saya memiliki sejumlah besar mesin yang meningkat dan tidak praktis untuk menanam skrip di setiap mesin. Saya memerlukan perintah sesederhana berikut ini:

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

Semua saya telah menemukan sejauh ini adalah perintah untuk menghapus sebuah default gateway tapi tidak semua dari mereka /sbin/route del defaultyang tidak akan bekerja untuk saya.

/sbin/route bantuan menampilkan yang berikut ini

/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
Muhammad Gelbana
sumber

Jawaban:

17

Jika Anda menggunakan ipalih-alih route, Anda cukup menjalankan:

ip route del 0/0

Saya percaya bahwa menangkap semua rute default.

jsbillings
sumber
Terima kasih tetapi masih menghapus hanya satu gateway default, tidak semua.
Muhammad Gelbana
4
Maka mungkin Anda harus mengulangi semua rute default, dan menghapusnya, alih-alih dengan asumsi bahwa penghapusan pertama Anda menghapus semuanya. Sepertinya kode Anda rusak entah bagaimana dan menambahkan lebih dari satu rute default. Ini bukan keadaan yang normal.
jsbillings
Saya setuju bahwa kode saya rusak pada beberapa titik tetapi mungkin saya bisa menyelesaikan ini dengan cepat dengan memperbaiki GW daripada membuang banyak waktu yang tidak saya miliki. Terima kasih banyak atas bantuan Anda.
Muhammad Gelbana
Ini hanya linux modern.
jordanm
4

Untuk menghapus semua gateway default menggunakan ip

ip route flush 0/0
Esben Haabendal
sumber
2

Jika kode Anda rusak dengan beberapa gateway default, Anda mungkin juga harus mencari di beberapa alamat ip per perangkat.

Ketika Anda sudah menerima jawaban di sini adalah pendekatan lain karena Anda TIDAK PERNAH harus mengubah konfigurasi sistem Anda hanya karena Anda ingin menjalankan / menguji skrip. Bagaimana kalau menggunakan namespace jaringan sebagai gantinya. Untuk pengantar singkat cara menambahkan perangkat virtual ke NS (namespace) Anda lihat di http://code.google.com/p/coreemu/wiki/Namespaces .

Untuk membuat tes namespace bernama dan menjalankan perintah di bawah namespace ini jalankan saja

ip netns add test
ip netns exec test COMMAND

di mana PERINTAH dapat misalnya shell Anda atau hanya skrip server.

Ulrich Dangel
sumber
2

Semua jawaban bagus tetapi saya menyelesaikan masalah ini menggunakan pendekatan yang berbeda, saya menggunakan perintah untuk menambahkan hanya satu gateway default, tetapi gagal jika sudah ada satu. Dan akhirnya menghapus gateway yang salah di akhir perintah. Ini harus bekerja pada isa kedua kalinya.

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

Muhammad Gelbana
sumber