Wybierz domyślny interfejs sieciowy

12

Mam serwer z 2 interfejsami. eth0 jest 100 razy szybszy niż eth1. Chociaż z jakiegoś powodu przy każdym ponownym uruchomieniu domyślny interfejs jest wybierany losowo. Aby wszystko było bardziej denerwujące, oboje korzystają z tej samej bramy, więc wybranie domyślnej bramy nie będzie działać. W jaki sposób Linux wybiera domyślny interfejs i jak wybrać domyślny?

Oto moja route -npomoc, aby trochę wyjaśnić sytuację.

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
173.246.100.0   0.0.0.0         255.255.252.0   U     0      0        0 eth1
173.246.100.0   0.0.0.0         255.255.252.0   U     0      0        0 eth0
0.0.0.0         173.246.103.254 0.0.0.0         UG    0      0        0 eth1
0.0.0.0         173.246.103.254 0.0.0.0         UG    100    0        0 eth0

PS. To jest VPS, więc mój dostawca może być gdzieś winny. Powodem drugiego interfejsu jest posiadanie innego adresu IP dla dns, ponieważ obsługuje on tylko DNS, jest bardzo wolny.

EDYCJA: To jest serwer Ubuntu 10.04

użytkownik163365
źródło
Interesujące, ponieważ strona podręcznika ifconfig stwierdza to w sekcji o „metryka”: ten parametr ustawia metrykę interfejsu. Nie jest dostępny w systemie GNU / Linux.
wzzrd
1
Cieszę się, że to rozgryzłeś. Jeśli nikt inny nie odpowiedział na to pytanie, a Twoja edycja reprezentuje rozwiązanie, należy dodać to poniżej we własnej sekcji odpowiedzi, a następnie zaakceptować jako poprawną odpowiedź (po upływie limitu czasu). Proszę nie umieszczać odpowiedzi w sekcji pytań.
Caleb
@Caleb: Nadal miałem limit czasu,
wysłałem

Odpowiedzi:

15

Służy ifmetricdo zmiany wartości metryki obu interfejsów. Zwiększenie wartości eth1 powyżej wartości eth0 spowoduje użycie parametru eth0 do wszystkich połączeń. Rozwiązuje problem całkowicie.

użytkownik163365
źródło
2
Czy zmienia to domyślną bramę natychmiast czy po ponownym uruchomieniu?
CMCDragonkai
2

Powinieneś wyłączyć drugi, wolny interfejs, a następnie dodać drugi adres IP do podstawowego. W tym celu dokonaj edycji pliku interfejsów za pomocą:

sudo vi /etc/network/interfaces

Po uzyskaniu dostępu do pliku sieciowego prawdopodobnie pojawi się coś takiego:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 173.246.100.1
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

auto eth1
iface eth0 inet static
    address 173.246.100.2
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

Zmień konfigurację, aby wyglądała następująco:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 173.246.100.1
    network 173.246.100.0
    netmask 255.255.252.0
    broadcast 173.246.100.255
    gateway 173.246.103.254

iface eth0:1 inet static
    address 173.246.100.2
    network 173.246.100.0
    netmask 255.255.252.0

Spowoduje to przypisanie obu adresów IP do pierwszej karty sieciowej. Po wykonaniu tej czynności zapisz plik i uruchom:

/etc/init.d/networking restart

I zmiany zostaną zatwierdzone.

<- EDYCJA ->

Z mojego doświadczenia wynika, że ​​jeśli jest on na tym samym przełączniku wirtualnym, nie powinno to mieć znaczenia, chociaż środowiska hostowane mogą go jeszcze bardziej zablokować. Warto jednak spróbować, jeśli to nie zadziała, możesz poprosić firmę hostingową o zmianę interfejsu wirtualnego na coś bardziej wydajnego.

<- EDYCJA ->

Ponadto, jeśli twój podstawowy adres IP nie obsługuje obecnie DNS, dlaczego nie wykorzystać go również do DNS? Możesz hostować kilka różnych usług pod jednym adresem IP, ponieważ korzystają one z różnych portów.

Alex Berry
źródło
0

Wygląda na to, że masz dwa interfejsy w tej samej podsieci, co jest nieco dziwne. Linux (zakładając, że używasz pochodnej Red Hat) wybiera domyślną bramę, odczytując wartość GATEWAY z /etc/sysconfig/network. Ta zmienna zawiera jednak adres IP jako identyfikator bramy, a nie nazwę interfejsu. Tak więc, w twoim przypadku, jeden adres IP może być bramą dla obu interfejsów, prowadząc (jak sądzę) do pewnego rodzaju warunków wyścigu.

Nadal nie jestem pewien, dlaczego potrzebujesz drugiego interfejsu. Co się stanie, jeśli całkowicie spowolnisz interfejs?

wzzrd
źródło
po pierwsze, używam ubuntu, ale ponieważ nie jest to problem z bramą, nie powinno to mieć znaczenia. Po drugie, jeśli wyłączę drugi interfejs, ruch korzysta z pierwszego interfejsu, ale tracę drugi adres IP, co jest powodem, dla którego mam drugi interfejs w pierwszej kolejności.
user163365
1
Możesz łatwo skonfigurować dwa adresy na jednym interfejsie z aliasem. Cały ruch przez szybki interfejs, dwa skonfigurowane IP, problem rozwiązany, nie? A biorąc pod uwagę „Jak Linux wybiera domyślny interfejs i jak wybrać domyślny?”, Dlaczego nie jest to problem z bramą?
wzzrd
1
Nie będzie działać, ponieważ są to interfejsy wirtualne, prawdopodobnie skonfigurowane tak, aby kierowały tylko dane przychodzące o określonym adresie IP. Ponadto ten problem dotyczy interfejsu, a nie bramy, ponieważ brama jest taka sama w obu interfejsach.
user163365
2
Żądania przychodzące mogą przychodzić na jeden interfejs, ale wychodzące rzeczy i tak już przechodzą przez losowy interfejs. Wypróbuj porady, upuść jeden z interfejsów, umieść drugi adres IP na drugim za pomocą aliasu i sprawdź, czy to działa. Jeśli są, jak mówisz, wirtualne, to dlaczego różnica prędkości i dlaczego próba separacji? Coś się nie żeluje.
EightBitTony