Tüm varsayılan ağ geçitleri nasıl kaldırılır


13

Özel bir Linux makinesi çalıştırıyorum, bu yüzden tüm Linux komutları mevcut değil .
Ağla ilgili komutları yürütüyorum, bu yüzden komutumu çalıştırmadan hemen önce varsayılan bir ağ geçidi ayarlamam ve ardından hemen sonra bu ağ geçidini kaldırmam gerekiyor.

Bunu yapmak için tüm komutlarımı tek bir satırda çalıştırıyorum:

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

Sorun, bir nedenden ötürü, bir keresinde aynı makinede 2 varsayılan ağ geçidi buldum, bu da tüm komutlarımın başarısız olmasına neden oldu, çünkü testimi çalıştırmadan önce varsayılan ağ geçidimi ayarlasam bile, hala dağınık ve testimi çalıştıramıyor.

Bir komutta TÜM varsayılan ağ geçitlerini kaldırmanın bir yolu var mı? Artan çok sayıda makinem var ve her makineye bir senaryo yerleştirmek pratik olmayacak. Aşağıdaki gibi basit bir komuta ihtiyacım var :

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

Şimdiye kadar bulduğum tek şey varsayılan bir ağ geçidini kaldırmak için bir komuttur, ancak hepsi /sbin/route del defaultbenim için çalışmaz.

/sbin/route yardım aşağıdakileri görüntüler

/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

Yanıtlar:


17

ipBunun yerine kullanırsanız route, şunları yapabilirsiniz:

ip route del 0/0

Bunun tüm varsayılan rotaları yakaladığına inanıyorum.


Teşekkür ederim, ancak yine de yalnızca bir varsayılan ağ geçidini kaldırıyor, hepsini değil.
Muhammed Gelbana

4
O zaman belki de ilk kaldırmanızın hepsini kaldırdığını varsaymak yerine, tüm varsayılan rotaları tekrarlamalı ve kaldırmalısınız. Kodunuz bir şekilde kopuyor ve birden fazla varsayılan rota ekliyor gibi görünüyor. Bu normal bir durum değil.
jsbillings

Kodumun bir noktada kırıldığına katılıyorum, ancak sahip olmadığım çok fazla zaman harcamak yerine GW şeyini düzelterek bunu hızlı bir şekilde çözebilirim. Yardımın için çok teşekkürler.
Muhammed Gelbana

Bu sadece modern linux.
jordanm


3

Tüm cevaplar harika ama farklı bir yaklaşım kullanarak bu sorunu çözdüm, sadece bir varsayılan ağ geçidi eklemek için komutu kullandım, ancak zaten varsa başarısız. Ve sonunda komutun sonunda yanlış ağ geçidini kaldırın. Bu ikinci kez isa üzerinde çalışmalıdır.

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


2

Kodunuz birden çok varsayılan ağ geçidiyle kesilirse, büyük olasılıkla aygıt başına birden çok ip adresine de bakmanız gerekir.

Zaten bir yanıt aldığınız için, sisteminizi yapılandırmayı ASLA bir komut dosyasını çalıştırmak / test etmek istediğiniz için değiştirmemeniz gerektiği için başka bir yaklaşımdır . Bunun yerine ağ ad alanlarını kullanmaya ne dersiniz? Kısa bir giriş için NS'nize (ad alanı) nasıl sanal cihaz ekleyeceğinizi öğrenmek için http://code.google.com/p/coreemu/wiki/Namespaces adresini ziyaret edin .

Test adında bir ad alanı oluşturmak ve bu ad alanının altında bir komut çalıştırmak için

ip netns add test
ip netns exec test COMMAND

Burada KOMUT, örneğin kabuğunuz veya yalnızca sunucu komut dosyası olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.