Default Gateway Değişiyor

Başlatan canavaroski90, 09 Ocak 2013 - 22:33:27

« önceki - sonraki »

0 Üyeler ve 4 Ziyaretçi konuyu incelemekte.

canavaroski90

Herkese merhabalar. Kubuntu 12.04 kullanmaktayım. Evde internete girerken BeagleBona bağlanmak için ethernet kablomu taktığımda otomatik olarak default gatewayim eth0 oluyor, internet bağlantım kesiliyor. Ethernet kablomu çıkarınca wlan0 default oluyor, internetim geliyor. Bu sorunun çözümü nedir?

Ethernet kablomu takmadan önce :
route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
192.168.0.0     *               255.255.255.0   U     2      0        0 wlan0


Taktıktan sonra:
route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
192.168.0.0     *               255.255.255.0   U     2      0        0 wlan0
192.168.1.0     *               255.255.255.0   U     1      0        0 eth0


Tekrar çıkarınca:

route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
link-local      *               255.255.0.0     U     1000   0        0 wlan0
192.168.0.0     *               255.255.255.0   U     2      0        0 wlan0


heartsmagic

"İnternete girerken BeagleBone'a bağlanmak için" demişsin, bu kısmı biraz açabilir misin?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

canavaroski90

#2
Alıntı yapılan: heartsmagic - 10 Ocak 2013 - 14:08:34
"İnternete girerken BeagleBone'a bağlanmak için" demişsin, bu kısmı biraz açabilir misin?

İlginiz için teşekkürler.

2 olayı birbirinden farklı düşünün. Normal bilgisayarınızı açtınız, internette geziniyorsunuz. Daha sonra BeagleBone üzerinde çalışmak istediniz, ssh bağlantısı kurmak için ethernet kablosu ile bağlantı yaptınız, kafanıza bir soru takıldı google'ı açtınız ama açılmıyor. Peki sorun nedir? Kablolu bağlantım default gateway olarak atanmış, internete çıkamıyorum. SSH bağlantımı kesip BeagleBonedan kablomu çıkarttığım zaman default gatewayim tekrar wlan0 oluyor, internete girebiliyorum. Yani son aktifleşen interface ne ise, o default gateway olarak kalıyor nedense.

Olay bundan ibaret, yani direk olay ile BeagleBoneun alakası bulunmamakta, sadece ethernet kablomu harici bir cihaza bağladığımda internetim kesiliyor. :)

Edit : İnternete kablosuz olarak bağlanıyorum. Yani ethernet bağlantımın internet ile direkt olarak alakası yok.

heartsmagic

Sorun ilginçmiş cidden. Şimdi belki elle gw ve ip ayarı yapmayı deneriz, fakat o geçici olarak çözer sorunu. Sorun her harici cihazda olmuyordur sanırım zira bunu tetikleyen bir şey olmalı bağlanılan yerde. Deneme imkânın var mı başka bir makine vs. ile?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

plymouth

Neyin tetiklediğini ben söyleyeyim müsadenizle. Lünux Kerneli  için kablo interface'ler daha önceliklidir. oradan gelen dhcp paketleri ile öğrenilen network daha baskın olur (metric değeri daha az olur da denilebilir) ve böylece otomatik olarak o ağ birinci tercihiniz olur. O yüzden kablo takılıysa kablo wi-fi 'ı döver. :)

Çözüm konusunda bu default davranışı değiştirmeyi denemek pek iyi bir fikir değildir. Bunu yerine route komutu yardımıyla kablo ve wi-fi birkilte kullanılabilir.
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it

heartsmagic

@plymouth, benim de aklıma gelen şeylerden biri buydu fakat dhcp ile ip dağıtmaya çalışacak bir şey yok ki şu an? Eğer karşıdaki cihaz böyle bir şey yapmıyorsa sadece iki makine arasında bağlantı kurulması gw'nin değişmesi için yeterli midir? Yoksa iki NIC arasında yapılan bu bağlantı yeterli oluyor mu böyle bir şey için? Şöyle kabaca bir düşündüm de, kablosuz ağ kullanmaya başladıktan sonra hiç böyle bir olay gelmemiş başıma :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

plymouth

Aslında kablo takılınca IP alıyor eğer almasa wi-fi ile kablonun önceliklerini hiç değiştirmez. Wi-fi kullanmaya devam edersiniz.  Artı, bize verilen çıktılarda gördüğüm kadarıyla 192.168.1.0/24 ağından IP alabiliyor kablo üzerinden ve GW olarak 192.168.1.1 gösteriliyor. 

Alıntı YapŞöyle kabaca bir düşündüm de, kablosuz ağ kullanmaya başladıktan sonra hiç böyle bir olay gelmemiş başıma
Ben pek emin değilim ben de sürekli oluyor hem de hepsinde.  OpenBSD, Ubuntu, Debian, KfreeBSD, Red Hat...
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it

heartsmagic

Orada söylemek istediğimi eksik ifade etmişim, kablosuz kullanmaya başladıktan sonra kablo ile bir yerlere bağlanmamışım ek olarak :) Haliyle sorunun yabancısıyım.

Evet, IP almış görünüyor orada söylediğin gibi. İki NIC bağlantısı yetiyor o halde bu iş için.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

plymouth

@heartsmagic, evet ama ben de anlamamışım, halbuki söylediğin yeterince açık. Neyse...

route komutu bu durumda size bir çıkış yolu sunabilir.

Flags sütunuda "UG" yazan satır tüm paketler için Default Getaway olan IP adresini işaret eder.  Devamındaki "iface" sütunu size bu işin hangi interface ile yapılacağını belirtir.

Kablo takılıyken önce kablo interface takılınca gelen gw bilgisinden kurtulalım;
route del default gw 192.168.1.1
sonra sisteme tüm paketler için çıkış yolu olarak wi-fi'ı kullanmasını söyleyelim;
route add default gw 192.168.0.1
böylece istediğiniz olmuş olacak.

Daha fazlası için "man route"
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it

canavaroski90

Cevaplar için çok  çok teşekkür ederim. Konuyu açtıktan sonra 3-4 gün sıkı takip etsem de bir kaç gün atlayınca almış başını gitmiş :)


@plymouth, edindiğim tecrübelere göre (sanırım) kullandığım tüm linux kernelları "SON" ve "BAŞARILI" bağlantıyı kendine internete çıkış kapısı olarak arıyor. Örnek veriyorum, internete wi-fi üzerinden bağlıyken localde ethernet üzerinden bir cihaza bağlandığınızda ve bağlantınız başarılı ise bilgisayar (ya da üzerinde linux çalışan sistem) internete çıkabilmek için son başarılı bağlantınız olan ethernet interfaceini kullanmaya çalışıyor. Mesela ben BeagleBonea bağlandığımda amcam beagle üzerinden nete ulaşmaya çalışıyor.


İşin ilginç yanına geliyorum, yaptığım şeyleri sırayla yazıyorum.
- Eve geldim, kablosuz ağa bağlandım. (Şu an internetim var)
- Ethernet kablomu beaglebone, raspberry-pi, beagleboard vs. bir cihaza taktım (artık internetim yok)
- Wi-fi bağlantımı kesip tekrar bağlandım (?? Yine internetim var, default olarak çıkış kapım wlan0 oldu)


Yani anladığım ve gözlemlediğim kadarı ile dediğim gibi son ve başarılı olan bağlantı internete çıkış kapısı olarak seçiliyor gibi. Mesela BeagleBone için kendi yazdığım bir protokolde benzer çekilde çalışıyor. Bir GSM modülü ile internete çıkıyorum, ethernet bağlantısını gerçekleştirdiğim anda default gw eth0 olarak atanıyor, kendi yazdığım GSM servicelarını durdurup tekrar başlattığım zaman ise (ethernet bağlantısını kesmeden) default gw olarak tekrar GSM bağlantım geliyor.


Nedendir, niyedir, nasıl oalcak bu işler çözemedim :) Ayrıca mesela günde 10 kere bir external devicea ethernet bağlantısı yaptım ve çıkardım, günce 10 kere önerdiğiniz route add ve route del işlemlerini tekrarlamam ya da sürekli wi-fi'den kopup tekrar bağlanmam mı gerekmekte ?


Tekrardan teşekkür ederim.

plymouth

#10
Bunu sıkıcı buluyor olabilirsiniz ama bu windows üzerinde de  böyledir. Kablo takılıysa mutlaka kabloyu tercih eder. Kablonun metric değeri daha düşüktür.

Kablo takılı değilken route -n komutunu verince çıktıda wlan0 kısmında metric 0(sıfır) iken, kabloyu takınca bir anda wi-fi metric değeri 0(sıfır)'dan daha büyük bir değer olur. Bu tamamen kablonun paket kayıpları konusunda daha güvenilir olması ile ilgili.  Metric değeri aslında network üzerindeki reliability  ile ilgilidir. Bağlantı türlerine göre bunlar standarttır. Mesela, metric 40Gb < metric 4Gb < metric 1 Gb .......< metric 802.1g < metric 802.1b (Wi-fi)  Wi-fi daima paket kaybı olan bir iletişim/bağlantı şeklidir.

Günde 10 kez veya 100 kez, bilemiyorum, rutin işler artık. Belki bu duruma kalıcı bir çözüm getiren biri vardır ama ben hiç araştırmadım.
Bu arada başka bir çözüm olarak,  Beaglebone IP vermezse sorun olmaz... Biraz bakınca, ip, man interfaces gibi yardımcı olabilecek şeyler buldum...
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it

canavaroski90

Alıntı yapılan: plymouth - 16 Ocak 2013 - 10:40:53
Bunu sıkıcı buluyor olabilirsiniz ama bu windows üzerinde de  böyledir. Kablo takılıysa mutlaka kabloyu tercih eder. Kablonun metric değeri daha düşüktür.

Kablo takılı değilken route -n komutunu verince çıktıda wlan0 kısmında metric 0(sıfır) iken, kabloyu takınca bir anda wi-fi metric değeri 0(sıfır)'dan daha büyük bir değer olur. Bu tamamen kablonun paket kayıpları konusunda daha güvenilir olması ile ilgili.  Metric değeri aslında network üzerindeki reliability  ile ilgilidir. Bağlantı türlerine göre bunlar standarttır. Mesela, metric 40Gb < metric 4Gb < metric 1 Gb .......< metric 802.1g < metric 802.1b (Wi-fi)  Wi-fi daima paket kaybı olan bir iletişim/bağlantı şeklidir.

Günde 10 kez veya 100 kez, bilemiyorum, rutin işler artık. Belki bu duruma kalıcı bir çözüm getiren biri vardır ama ben hiç araştırmadım.
Bu arada başka bir çözüm olarak,  Beaglebone IP vermezse sorun olmaz... Biraz bakınca, ip, man interfaces gibi yardımcı olabilecek şeyler buldum...

Cevabınız için teşekkür ederim :)

Şimdi şunu merak etmekteyim, "windows üzerinde de  böyledir" demişsiniz. Ancak Ben windowsta da çalışmaktayım. VBox üzerinde Kubuntu 12.04 ile çalışıyorum. Böyle bir sıkıntıyı daha önce hiç yaşamadım.

Ya da VBox'ı es geçersek, ufak bir örnek vereyim. Windows üzerinde çalışırken Putty ile BeagleBone'a ssh bağlantısı kurmam mümkün olabiliyor. (Çalıştığım hiç bir BeagleBone üzerinde DHCP serverı barındırmıyor, ya da Windows üzerinde çalışan bir DHCP serverım da bulunmamakta, static IP veriyorum BeagleBona, bu ip ile bağlanıyorum.) Ancak evde kablosuz ağa bağlanıp internete girerken Putty üzerinden Beaglebona bağlandığım zaman internetim kesilmiyor? Yani Windows hala internete çıkış kapısı olarak wi-fi interfacini öncelikli olarak seçiyor. Ancak Dual-Boot olarak kullandığım Kubuntu 12.04'te ise durum bahsettiğim gibi. (Dual-Boot dememin sebebi VBox olmayan Kubuntuyu kastetmem, kafa karışıklığı olmasın, bilgisayarın açılışında OS olarak Kubunutuyu seçiyorum, windowsla alakam olmayan süreçten bahsediyorum). Bu durumu anlamlandıramadım. Windowsta herşey tıkırında, Kubuntu üzerinde ise kabloyu takınca internet bağlantım kopmakta. Yani ya reliability değeri ile Windows ilgilenmiyor ya da Kubuntu biraz fazla kafasını takmış durumda :)

heartsmagic

Konu güzel yerlere gidiyor :) @plymouth'un önerisinden yola çıkarsak sanırım metric düzenlemesi yapılabilirse bu olay belki atlatılabilir? Yanlış düşünmüyorsam bu iş için birden fazla yol gördüm gibi. Biris route ile:

sudo route add -net default gw falanca_ip netmask 0.0.0.0 dev wlan0 metric 1
sudo route del -net default gw falanca_ip netmask 0.0.0.0 dev wlan0 metric 0

gibi. İlk komut metric değeri ekliyor ikincisi siliyormuş.
http://stackoverflow.com/questions/10592612/set-network-interface-metric

Diğernde is ifmetric uygulaması önerilmiş. interfaces dosyasına da ekleme yapılabiliyormuş:
http://www.linuxquestions.org/questions/linux-networking-3/setting-metric-for-eth-interfaces-591796/
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

plymouth

Windows'u en son XP' de bırakmıştım. Hem kablo hem wi-fi varsa cmd altında route print yazınca hep kabloyu tercih etmesi bana tuhaf gelirdi. Tabi bu hala aynı mı bilemiyorum.
This life is not the real thing.
It is not even in Beta.
If it was, then OpenBSD would already have a man page for it

cagriemer

8.04 ile bu metrik olayi degismis.[1] Iki oneri var. Ilki interfaces dosyasina elle bu degeri girmek, ikinci de [2] adresinde anlatildigi gibi arayuzden.

[1] https://wiki.ubuntu.com/HardyReleaseNotes#Route_metrics
[2] http://ubuntuforums.org/showpost.php?s=e98d126466b1d094a8458d66007b1972&p=10234501&postcount=3