Bagaimana cara menghapus rute dari tabel routing Linux

42

Ini ternyata lebih sulit dari yang saya kira. Rute yang ingin saya hapus adalah "!" rute yang ditolak, tapi sepertinya saya tidak bisa merumuskan perintah "route del" yang tepat untuk melakukannya.

Berikut adalah tabel perutean ...

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
67.40.227.206   *               255.255.255.255 UH    0      0        0 ppp0
192.168.46.79   *               255.255.255.255 UH    0      0        0 ipsec0
192.168.46.79   -               255.255.255.255 !H    2      -        0 -
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
10.1.0.0        *               255.255.0.0     U     0      0        0 ipsec0
10.1.0.0        -               255.255.0.0     !     2      -        0 -
default         *               0.0.0.0         U     3      0        0 ppp0
default         *               0.0.0.0         U     4      0        0 ppp0

Saya punya dua entri untuk 192.168.46.79 dan 10.1.0.0. Ini dibuat secara otomatis oleh router kecil berbasis Linux yang saya gunakan. Saya bisa ping terowongan IPSEC dari shell itu sendiri, tetapi lalu lintas dari LAN mengambil rute kedua (rute ditolak! "Atau"! H) karena alasan yang saya tidak mengerti.

Sakit kepala
sumber
Bisakah Anda lebih spesifik ketika Anda mengatakan lalu lintas mengambil 'rute kedua'?
Zoredache
Perhatikan dua entri tabel untuk 192.168.46.79? Di shell router, jika saya ping sisi terowongan itu berfungsi. Dari sisi LAN, lalu lintas masuk ke entri "192.168.46.79" kedua dan ditolak / turun.
Saya juga tidak mengerti mengapa SG560 menghasilkan dua (2) entri tabel untuk "default" dan tujuan IPSEC. Saya bingung.

Jawaban:

53

dengan route -nperintah yang akan Anda dapatkan

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG    0      0        0 eth0
0.0.0.0         160.98.123.1    0.0.0.0         UG    600    0        0 wlan0

sudo route del -net 0.0.0.0 gw 192.168.178.1 netmask 0.0.0.0 dev eth0

Anda akan mendapatkan semua parameter masing-masing dari atas

Philippe Gachoud
sumber
1
Setelah reboot, itu datang lagi. Bagaimana saya bisa menghapus secara permanen?
Shyamkkhadka
1
@shyamkkhadka tergantung dari proses mana yang telah dibuat ... merekomendasikan Anda untuk mengirim pertanyaan dengan kasus khusus Anda untuk menganalisisnya. Berikan detail tentang rute yang Anda dapatkan dan ingin Anda hapus. Sebagian besar server dan klien dhcp akan membuat rute
Philippe Gachoud
15

Jenis rute dengan !bendera dapat dijangkau atau dilarang. route, menjadi utilitas kuno dari alat-net, tidak membedakan keduanya. Gunakan iproute2.

Cara net-tools untuk menghapus rute ini adalah dengan menggunakannya route del. Namun, net-tools tidak memberikan cara untuk membedakan antara rute yang ditolak dan yang lainnya (karena argumen dev adalah opsional, meskipun tidak menentukan perangkat kemungkinan akan menghapus rute yang tidak terjangkau).

iproute2 memungkinkan Anda melakukannya seperti ini:

ip route del unreachable 10.1.0.0/24
ip route del unreachable 192.168.46.79/32

Mungkin tidak terjangkau, tetapi dilarang. Gunakan ip routetanpa argumen untuk menentukan yang mana.

Falcon Momot
sumber
8

Saya pikir ini: route del -net 10.1.0.0 netmask 255.255.0.0 metric 2

Saya tidak 100% yakin. Tapi, saya pikir Anda punya sesuatu yang konyol terjadi karena Anda memiliki 2 rute default.

Baumgart
sumber
2
+1: 2 rute default selalu merupakan pertanda ada sesuatu yang salah konfigurasi (kecuali jika mereka benar-benar mengarah ke gateway yang berbeda dan memiliki metrik yang berbeda).
wolfgangsz
-1

Silakan lihat apakah ada "file konfigurasi perangkat" di bawah /etc/network/interfaces.d/ -> Saya punya eht0 !! Sungguh, itu eht0 dan bukan eth0 di sana!

Andreas Brandts
sumber
Anda mungkin ingin memperluas jawaban Anda, karena saat ini tidak jelas bagaimana kaitannya dengan pertanyaan yang diajukan.
womble