Ubuntu Sunucusunda statik yollar nasıl ayarlanır?


51

Ubuntu 8.10'dan beri Ubuntu kullandım; Bugün Ubuntu 12.04 Server ile çalışıyorum.

Statik rotaları önyüklemede tutmakta zorluk çekiyorum. Genelde rota komutlarını koyardım

/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>

içinde /etc/rc.localya da ben (adında bir dosya yaratacak routesdizin) /etc/network/if-up/ama Ubuntu 12.04 üzerinde çalışmıyor dikkat edin.

Komutları kabuğa yazarsam, çalışırlar, ancak aynı komutlar belirtilen dosyadayken çalışmaz.

Dosya adımı ( routes) Ubuntu 12.04'te hatalı olabileceğini düşünerek başka bir isimle değiştirmeye çalıştım ama bu da işe yaramadı.

Ayrıca bu komutun /sbin/ifconfigişe yaradığını fark ediyorum /sbin/route.

Ağ kurulumunda neler değişti?

Ubuntu 12.04'te statik rotaları nasıl tanımlayabilirim?


Sadece kontrol etmek için: rc.local çalıştırılabilir mi ve shebang hattıyla mı başlıyor? Belki de emrinle ilgili bir problemdir. Stderr dosyasını bir dosyaya ( your_command > stderr.txt 2>&1) yönlendirebilir ve çıktısını inceleyebilirsiniz ...
Salem

Yolları /etc/rc.local konumunda değil / etc / network / interfaces konumunda ayarlamanız gerekir. Ve kullanmanız gereken yeni komutlar ip addve ip route. Ağı yönetecek bir komut. :)
Anders,

Kesinlikle okuyunman 5 interfaces
David Tonhofer

Yanıtlar:


64

Statik yollar koyabilirsiniz /etc/network/interfaces:

auto eth0
iface eth0 inet static
      address 192.168.1.2
      netmask 255.255.255.0
      up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
      up route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.1

13
/ Sbin / ip sözdizimi:up ip route add 192.168.0.0/24 via 192.168.1.1
w00t

1
Cevaptaki son iki satırınızı nazikçe açıklar mısınız veya bilgi kaynağına bir bağlantı verir misiniz? Teşekkürler!
itsols

-Net 192.68.0.0 'ı joker olarak görebilir ve 192.168. *. * İçin hedeflenen tüm paketlerin 192.168.1.1 varsayılan ağ geçidi üzerinden yönlendirilmesi gerektiğini söyleyebilirsiniz. Çekirdek daha sonra bu varsayılan ağ geçidini çözmeyi deneyecek, ancak eğer zaten bir ARP girişi varsa, paketi bir sonraki atlama için ağ geçidinin hedef MAC ile birlikte bulunduğunu öğrendiği arayüzü gönderecektir. Umarım bu biraz yardımcı olur.
Neil McGill,

Rotayı koymak için daha iyi bir yer olabilecek /etc/network/interfaces.d/ de vardır.
Elijah Lynn

Bu çalışır, ancak ağ arayüzleri için man sayfalarında açıklanmaz. Bu standart mı?
BЈовић

18

Statik bir rota tanımlamak için doğru yerin / etc / network / interfaces içinde bulunduğunu çok sık buldum, mesela /etc/init.d/networking restart ile ağı genel olarak yeniden başlatacaksanız sorun yok. Ancak eğer bir arayüzü tek tek kapatmak için ifdown ve ifup kullanacaksanız ifup hatayla bitecektir:

ifup eth1

RTNETLINK answers: File exists
Failed to bring up eth1.

Bu nedenle bir rota tanımlamaya çalışır ancak zaten tanımlanmıştır. Arabirim yine de çalışır, ancak ifup / run / network / ifstate 'i güncellemez, bu yüzden bir dahaki sefere --force bayrağını kullanmadıkça yapamazsınız.

Önceden tanımlanmış olsa bile yapılandırmaya devam etmek için ifup yapmak için, / etc / network / interfaces içindeki rotaları tanımlarken bu formatı kullanabilirsiniz.

up ip route add 172.16.0.0/24 via 192.168.10.1 || true
up ip route add 192.168.0.0/16 via 192.168.10.1 || true

Bu şekilde çıktıda uyarı olacak, ancak arayüz konfigürasyonu tamamlanmış olacaktır.

ifup eth1

RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553

1
Neden config "192.168.0.0/16 'dan 192.168.10.1' e kadar aşağıya doğru bir ip yolu eklemiyorsunuz?"
w00t

Çünkü insanlar ifconfigkoşmak yerine el ile kullanmak gibi şeyler yapıyorlar ifdown, o zaman doğru araçları kullanarak iyileşmek istiyorlar. Bu nedenle, bu araçların durumu düzeltmeye çalıştıkları beklenmeyen duruma karşı direnç göstermeleri yararlı olacaktır. || trueÖneri iyi biridir. Aşağı bir çizgi eklemek de faydalıdır.
Phil P,

5
Rastgele bir kullanıcıdan: ip komutunda "add" yerine "replace" kullanın. Örn: up ip route replace 172.16.0.0/24 via 192.168.10.1"replace" henüz mevcut değilse rotayı ekler, ancak aynı seçiciye sahip bir rota varsa, aynı hedefe sahip olsalar bile, geçerli olanla değiştirilir.
Xen2050,

9

Bunu deneyebilirsiniz (buna ekleyin /etc/network/interfaces), rota ayarlamada neredeyse tamamlanmış bir yöntemdir:

auto eth0
iface eth0 inet static
    post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
    post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/

6

Ubuntu'da ifupdown-extra özellikli bir paket var .
Biri /etc/network/*/statik yollar eklemek için kullanılan otomatik komut dosyalarını (yüklü ) sağlar.

Bunun için yapılandırma dosyası /etc/network/routes

Bu yapılandırma dosyasının tepesinde iyi bir açıklama var:

Bu yapılandırma dosyası, belirli bir arabirim veya genel yollarla ilişkilendirilmiş bir yol listesi oluşturmak için statik yollar if-up komut dosyası ve /etc/init.d/networking-routes komut dosyası tarafından okunur.

Kullandığım örnek bir rota:

192.168.240.0 255.255.255.0 192.168.130.3 em3

1

bizim için ne çalıştı

sudo route add -net 192.168.0.2/32 gw 192.168.1.1 netmask 255.255.0.0

Mac’te çalışırdım:

sudo route -n add -net 192.168.0.2/32 192.168.1.1

ancak bir ubuntu'da IP'ler ve son "netmask" kısmı arasındaki "gw" eksikti (ayrıca ubuntu'da gerekli değil)


10
Bu geçici (persistan olmayan) rotalar için mükemmel çalışır, soru rotaları kalıcı
kılmakla ilgilidir

0

Kullanmayı tercih ederim nmcli.

nmcli device modify <device-name> ipv4.routes "<ip>/<mask> <gw>" ipv4.route-metric 25

Örneğin:

nmcli device modify wlp2s0 ipv4.routes "1.1.1.0/24 192.168.0.1" ipv4.route-metric 25

Bundan sonra, NetworkManager servisini yeniden başlatarak değişiklikleri uygulayın:

sudo systemctl restart NetworkManager.service

0

Kullanarak nmclikalıcı bir çözüm çalıştı (@isapir çözümü cihazımda işe yaramadı).

sudo nmcli connection modify <conection-name> +ipv4.routes "<ip>/<mask> <gw> <mt>"

Örneğin:

sudo nmcli connection modify ssid-name +ipv4.routes "1.1.1.0/24 192.168.0.1 100"

Bundan sonra, bağlantıyı aşağı ve yukarı ayarlayarak değişiklikleri uygulamak mümkündür (tam NetworkManager yeniden başlatılmasına gerek yoktur):

sudo nmcli con down ssid-name ; sudo nmcli con up ssid-name

Mevcut bağlantıları görmek için:

sudo nmcli connection
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.