Ubuntu'da ağ bağlantılarının önceliğini nasıl ayarlarım?


41

Bir Ubuntu 11.04 makinesi WiFi ve 3G'ye aynı anda bağlanırsa, uygulamaların (tarayıcı vb.) İlk önce WiFi kullanmasına izin vermek için önceliği nasıl ayarlarım? Bu mevcut değilse, 3G kullanmalıdır.

Temel olarak, ağ bağlantılarının kullanıldığı sırayı ayarlamak istiyorum.

Düzenleme: Ubuntu / Linux'ta uzman olmayan, sadece rahat olanlar için faydalı olacak daha kolay bir yaklaşım arıyorum.

Yanıtlar:


27

Hiç kimse bunu yapmak için en basit komutu sözü var şaşırdım: ifmetric. Kullanılarak yüklenebilir sudo apt-get install ifmetric. Bu komut herhangi bir arayüzün metrik değerini değiştirmek için kullanılabilir. Alt ölçüye sahip arayüz tercih edilir Internet.

Bunu kullanmak için önce aşağıdaki routekomutu kullanan metrikleri görün :

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0
0.0.0.0         10.42.0.2       0.0.0.0         UG    600    0        0 wlan0

Burada, eth0daha düşük bir metrik değer vardır, bu yüzden tercih edilecektir wlan0. Tercih etmek istiyorsanız wlan0, metrik değerini düşürün:

sudo ifmetric wlan0 50

Şimdi, yönlendirme tablosu şöyle görünür:

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.2       0.0.0.0         UG    50     0        0 wlan0
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0

Şimdi Linux wlan0Internet için kullanıyor olacak . Değişiklik derhal yansıtılacaktır.


1
Mükemmel cevap. Thx (ayrıca -n yolu için). Metrik değiştirme komutunu ifmetric yükledikten sonra yeniden başlatmak zorunda kaldım
Thorsten Niehues

Bu değişiklik nasıl kalıcı hale getirilir (iPhone'larımın sıcak noktasını yanlışlıkla kullanmak istemiyorum)
Thorsten Niehues

2
@ThorstenNiehues: kalıcı hale getirmek için aklıma gelen hızlı çözüm yaparak, crontab için ifmetric komutu eklemektir crontab -esonunda satırı ekleyin ve sonra: @reboot sudo ifmetric wlan0 50.
shivam'lar

İşe yarıyor. Ancak bundan sonra yerel makinelere erişemiyorum (örn. Tarayıcı ile). Herhangi bir fikir? Teşekkürler.
tomasb

@ tomasb: ilginç bir şüphe. Bununla birlikte, arayüz tercihinin değiştirilmesi sizi tercih edilen arayüzün yerel ağına getireceğinden beklenmektedir. Yerel makinelere erişmenin basit bir yolu, sanal bir makine kullanarak bunlara erişmektir. Ancak, daha iyi çözümler mevcut olmalıdır. Düşünmeme ve cevap vermeme izin verin.
shivams

14

Metrikleri ayarlamak, öncelikleri nasıl değiştirdiğinizdir. Daha yüksek metrik kullanmak daha "pahalıdır", bu nedenle işletim sistemi trafiği yönlendirmesi gerekiyorsa en düşük metrikli arayüzleri kullanır. Daha düşük metrik ara yüzün kapatılması durumunda daha yüksek metrik ara yüz kullanılır, çünkü trafiği belirli bir ağ / varış noktasına doğru yönlendirmek için kullanılabilecek tek arayüzdür.

Metrikler / etc / network / interfaces dosyasında , belgelere bağlantı noktalarında belirtilmiştir.

Dosyayı düzenlemek, ağları tanımlamak ve sadece metricparametreyi değiştirmek ve kaydetmek için herhangi bir metin düzenleyiciyi kullanın . Yeniden başlatma, ağ servislerini yeniden başlatmanın geeky ayrıntılarına girmeden tüm değerleri sıfırlamanın en basit yoludur.


2
Harry - Cevap için teşekkürler - eth1 ile ilgilendiğim ağ "ifconfig" te gösteriliyor, ancak "/ etc / network / interfaces" de gösterilmiyor. "İfconfig" içinde ne var ve "/ etc / network / interfaces" de ne var?
Praveen Sripati

1
"/ Etc / network / interfaces" e00 eklemek daha risklidir. Arabirim için metriği değiştirmek için ifconfig komutunu deneyebilirsiniz (önyüklemeden sonra orada kaldığını kontrol edin).
harrymc 9:11

'Sudo ifconfig eth1 metric 4' komutunu çalıştırdığımda şu hata mesajı aldım: 'SIOCSIFMETRIC: İşlem desteklenmiyor'. goo.gl/UhXBJ 'Ek olarak, tüm sistemler metrik argümandan faydalanmıyor. Linux sistemi yapılandırırken ....., her arayüz için bir kesin yol komut eklemek "Tipler Ubuntu hiçbir yalındır yaklaşım var gibi gibi bir acemi kullanıcı için bir kullanıcı arayüzünden..
Praveen Sripati

2
Linux, tüm adaptörlerde yapılan hızlı bir testten sonra en hızlı adaptör üzerinde karar vermişe benziyor. Metrik artık birçok dağıtımda desteklenmiyor. Hala "/ etc / network / interfaces" üzerinden bir şeyler deneyebilir ve dikte edebilirsiniz, ancak ne kadar başarılı olacağınızı bilmiyorum. Ayrıca bu soruya bakınız .
harrymc

3
Herkesin yaptığı en basit çözüm, sadece kullanmak istemediğiniz arayüzü kapatmak veya "Bu bağlantıyı yalnızca ağındaki kaynaklar için kullan" seçeneğiyle sınırlandırmaktır. Aynı yönlendirici).
harrymc 10:11

7
  1. Genel trafik için arayüzlerin önceliklendirilmesi, yönlendirme metrikleri değiştirilerek yapılır. Her yol, atlama sayıları ve bant genişlikleri gibi ilişkili parametrelere sahiptir. routeKomut için kılavuzdaki "metrik" seçeneğine bakın .

    $ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref     Use Iface
    0.0.0.0         192.168.1.254   255.255.255.255 U     0      0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     256    0        0 eth0
    
  2. Ağ kaynaklarına uygulama erişimine öncelik vermek genellikle "trafik şekillendirme" ile ele alınır - Ubuntu veya yönlendiricinin bunu yapıp yapamayacağını görmek için bir web arama motoru kullanırdım.


Dipnot.

MS Windows'ta, ancak Linux'ta değil, netstat -nrkomut aynı bilgiyi verir route print. Yönlendirme metrikleri dahil.


Rota metninin "Metrik" Hedefe olan uzaklığı (genellikle atlamalı sayılır). Son çekirdekler tarafından kullanılmaz, ama rotaları daemonlar gerekebilir. Düzenli bir Ubuntu Masaüstünde Metric parametresinin bir etkisi olup olmadığından emin değilim.
Praveen Sripati 14:11

1
Lütfen bunu yapmam için bana özel rota komutunu verebilir misiniz?
Praveen Sripati 14:11

11
@PraveenSripati - Böyle bir cevap için 100 kadar kazandığın itibarını verdiğine inanmıyorum - teknik olarak doğru, ama sana ya da bana yardım etmiyor. :-( Ben de belirli bir emir arıyorum
Lord Loh.

1
Gerçekten ne bir cevap ?? Ayrıca netstat -nr metriği göstermez. @Shivams tarafından verilen yanıtı görüntüleyin
Thorsten Niehues 20

3

Gerçekten denemedim, ancak NCD (Network Configuration Daemon - 1) bu amaç için kullanılabilir. Site ağ yapılandırmasını kolaylaştırdığını iddia ediyor. Sözdizimi basit görünüyor.

# Bazı ağ bağlantısı için bekleyin. Eth1'in önüne koyarak eth1'i tercih edin.
liste ("NET-eth1", "NET-eth0") adları;

(1) - http://code.google.com/p/badvpn/wiki/NCD


Haklısın, NCD yazılımım bunu iyi yapıyor; orada örnek olduğu gibi çalışır. Bununla birlikte, pnameslistenin aslında bir multidepend()sonraki satırdaki ifadeye ilişkin bir argüman olduğuna dikkat etmeliyim - bu öncelikleri uygulayan listedir . Bunun arkasındaki mekanizma zaman olacağı eth1çıkageldi eth0zaten, o idam olduğu multiprovide("NET-eth1");, çünkü NET-eth1önünde NET-eth0, multidepend()aşağı inip yukarı hemen gel ama değişkenleri açığa olacaktır eth1yerine süreç eth0.
Ambroz Bizjak

Baktım ama çözemedi. Bu o kadar zor olmamalı.
SDsolar

3

Bunların hepsi rota ölçümleri yüzünden. Varsayılan rotayı en düşük metrikle silmek ve ardından eski rotayı daha yüksek bir metrikle eski durumuna getirmek istiyorsunuz. Lütfen aşağıdaki komutları takip ediniz.

Diyelim ki yönlendirme tablonuz şuna benziyor:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.16.87.254    0.0.0.0         UG    100    0        0 ens38
0.0.0.0         192.168.151.2   0.0.0.0         UG    101    0        0 ens33
10.16.86.64     0.0.0.0         255.255.255.248 U     100    0        0 ens38
10.16.87.254    0.0.0.0         255.255.255.255 UH    100    0        0 ens38
10.16.88.6      10.16.87.254    255.255.255.255 UGH   100    0        0 ens38
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens38
192.168.151.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

Şimdi varsayılan ağ geçidini silin

# route delete default gateway

Şimdi eski varsayılan ağ geçidini eski durumuna getirin (bu durumda metriğin geçerli varsayılan rota 101'den 102 daha yüksek olduğuna dikkat edin)

# route add default gw 10.16.87.254 metric 102 dev ens38                                                              
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.151.2   0.0.0.0         UG    101    0        0 ens33
0.0.0.0         10.16.87.254    0.0.0.0         UG    102    0        0 ens38
10.16.86.64     0.0.0.0         255.255.255.248 U     100    0        0 ens38
10.16.87.254    0.0.0.0         255.255.255.255 UH    100    0        0 ens38
10.16.88.6      10.16.87.254    255.255.255.255 UGH   100    0        0 ens38
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens38
192.168.151.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

Bu çalışıyor. Başka acemiler için Not (ben ne olduğunu takip etmek bu birkaç kez okumak zorunda kaldım): uzaklaşmaların yukarıdaki 1. adımı için giriş Gateway= 10.16.87.254olduğunu UGen düşük olan Metricve 2. adım koyar geri yüksek olan Metricaynen öyle kullanılamıyor olması durumunda hala yedek 192.168.151.2olarak kullanılabilir.
WillC

0

[Güncelleme] Ubuntu 18.04 tarihinden itibaren LTS (sunucu), netplanağ yönetimi için varsayılan sarmalayıcıdır. Netplan'ın yapılandırılması , varsayılan olarak bir YAML dosyası aracılığıyla yapılır /etc/netplan/01-netcfg.yaml( burada daha fazla ayrıntı vardır ).

Yönlendirme metriği, metricpozitif bir tamsayı bekleyen " " seçeneğiyle tanımlanır ( 100genellikle varsayılan değerdir). İşte referans sayfasından örnek :

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses:
      - 10.0.0.10/24
      - 11.0.0.11/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      routes:
      - to: 0.0.0.0/0
        via: 10.0.0.1
        metric: 100
      - to: 0.0.0.0/0
        via: 11.0.0.1
        metric: 100

En düşük olan yol metric(yol uzunluğu) "tercih edilen" ağ geçidi olur. (Kullan: sudo netplan trydeğişiklikleri etkinleştirmek için)

Dolaşan bir ortamda (birden çok bağlantı, açık ve kapalı), optional(boolean) parametresini true(varsayılan olarak yanlış) ayarlamak isteyebileceğinizi unutmayın:

network:
  version: 2
  ethernets:
    enred:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 100
    engreen:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 200
      # this is plugged into a test network that is often
      # down - don't wait for it to come up during boot.
      optional: true

DHCP bağlantısı durumunda, rota metriği için biraz farklı sözdizimine dikkat edin.

Ayrıca NetworkManager(henüz kendimi test etmedim) yapılandırmanın bu bölümünü GUI araçlarıyla da görmenize / düzenlemenize izin vereceğini düşündüğüm bir oluşturucu olarak kullanabilirsiniz .

renderer (Skalar)

Bu tanım için verilen ağ arka ucunu kullanın. Şu anda desteklenen networkdve NetworkManager. Bu özellik global olarak networks:, bir cihaz tipi için (örneğin, içinde ethernets:) veya belirli bir cihaz tanımı için belirtilebilir. Varsayılannetworkd .

(Referans sayfasındaki en son 'büyük' ​​örnek, her iki işleyicinin böyle bir hibrit kullanımını göstermektedir).

Ayrıca bu soruya bakınız (askubuntu) .

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.