Memodifikasi entri rute yang ada di linux

11

apa perintah untuk memodifikasi metrik dari entri rute yang ada di linux? Saya dapat mengubah gateway dari entri yang ada menggunakan perintah "ip route change" seperti di bawah ini tetapi tidak dapat mengubah metrik. Apakah ada perintah lain untuk itu?

route –n
40.2.2.0        30.1.3.2        255.255.255.0   eth2

ip route change 40.2.2.0/24 via 30.1.2.2

route -n
40.2.2.0        30.1.2.2        255.255.255.0   eth1
pengguna1762571
sumber
Berikut adalah halaman situs web yang memiliki perintah untuk mengedit alamat IP menggunakan perintah ifconfig. Saya tidak tahu semua perintah dari atas kepala saya, tapi semoga halaman ini akan membantu Anda. tecmint.com/ifconfig-command-examples
Nicholas Awesomepants
1
Hapus rute dan kemudian tambahkan lagi, kecuali mereka sudah memperbaiki lkml.iu.edu/hypermail/linux/net/0504.3/0017.html
thrig

Jawaban:

7

Seperti tercantum dalam komentar pada pertanyaan, mengutip pesan di milis linux-net: "Metrik / prioritas tidak dapat diubah [...] Ini adalah batasan protokol saat ini [...]."
Satu-satunya cara adalah menghapus rute dan menambahkan yang baru.

Ini dilakukan dengan menggunakan routeperintah, contoh:

sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1

Halaman manual Debian untuk perintah rute

Jan
sumber
4
Pertanyaannya bukan bagaimana cara menambahkan rute dengan metrik yang diberikan; OP ingin mengubah metrik pada rute yang ada (tanpa menghapus dan menambahkan kembali rute).
András Korn
4
Jelas Anda belum membaca komentar dalam pertanyaan yang link ke email menunjukkan bahwa metrik kaleng tidak dapat diubah: The metric/priority cannot be changed [...] This is a limitation of the current protocol[...]. Satu-satunya cara adalah menghapus rute dan menambahkan yang baru.
Jan
7
Saya tahu metrik tidak dapat diubah. Jawaban Anda masih belum menjawab pertanyaan - mungkin menunjukkan, dalam jawaban, bahwa metrik hanya dapat diubah dengan menghapus dan menambahkan kembali rute?
András Korn
16

(Menggabungkan berbagai komentar menjadi jawaban)

Saat ini, metrik rute tidak mungkin diubah. Sebagai pesan 2005 tentang negara-negara LKML :

[...] Metrik / prioritas tidak dapat diubah karena kami tidak memiliki bidang terpisah untuk dicocokkan dengan bidang dan nilai-nilai baru jadi jika Anda menentukan metrik entri tidak akan ditemukan dan permintaan gagal dengan ENOENT karena NLM_F_CREATE tidak ditentukan. Ini adalah batasan protokol saat ini dan mungkin ide yang baik untuk mengubah ini, namun itu tidak sepele [...]

Ini tampaknya berlaku untuk ip route changedan ip route replace- yang pertama menghasilkan kesalahan bagi saya, sedangkan yang kedua membuat rute tambahan seperti yang diiklankan (halaman manualnya menyatakan yang replaceakan mengganti atau membuat rute). Ini konsisten dengan kernel yang merespons dengan ENOENT, dan ip route replacemenindaklanjuti dengan permintaan pembuatan rute.


Jadi, solusinya adalah menghapus rute yang ada dan menambahkan yang baru. misalnya

ip route del 40.2.2.0/24 via 30.1.2.2
ip route add 40.2.2.0/24 via 30.1.2.2 metric 1234
Menandai
sumber
ya, digigit oleh masalah ini beberapa bulan terakhir ini ... seperti yang terus dikatakan Brian Cantrill tentang Linux: Ini adalah hal yang berkembang dengan sindrom NIH (tidak ditemukan di sini) ...
Hvisage
@Hvisage dapat Anda jelaskan? Apakah ada alat yang memungkinkan untuk mengubah metrik tanpa harus menghapusnya?
Braiam
@Braiam Itu negatif, seperti pada: TIDAK ada alat semacam itu. sesuai jawabannya. Jika Anda merujuk pada kutipan Bryan Cantrill saya, itu adalah suatu tempat yang saya percayai di youtube.com/watch?v=wTVfAMRj-7E
Hvisage
2

ifmetric akan memungkinkan Anda untuk mengubah metrik rute Anda dengan cepat, mengingat antarmuka yang ingin Anda ubah melalui rute.

Pemakaian

ifmetric <iface> [<metric>]

Misalnya, gunakan ifmetric tun0 12untuk mengubah metrik menjadi 12 untuk semua rute yang dilalui tun0.

AeroClassics
sumber