Виберіть мережевий інтерфейс за замовчуванням


12

У мене є сервер з 2 інтерфейсами. eth0 в 100 разів швидше, ніж eth1. Хоча з якоїсь причини кожне перезавантаження, інтерфейс за замовчуванням вибирається навмання. Щоб зробити речі більш прикрими, вони обидва використовують один і той же шлюз, тому вибір шлюзу за замовчуванням не буде працювати. Як linux вибирає інтерфейс за замовчуванням і як вибрати режим за замовчуванням?

Ось мій, route -nщоб допомогти трохи пояснити ситуацію.

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. Це VPS, тому мій провайдер також може десь бути винним. Причиною другого інтерфейсу є наявність іншого IP-адреси для dns, оскільки він працює лише у DNS, і це дуже повільно.

EDIT: Це сервер Ubuntu 10.04


Цікаво, оскільки на сторінці manconfig зазначено це у розділі про "метрику": Цей параметр встановлює метрику інтерфейсу. Він не доступний під GNU / Linux.
wzzrd

1
Радий, що ви зрозуміли це. Якщо ніхто більше не відповів на це, і ваша редакція представляє рішення, ви повинні додати це внизу в розділі відповідей власним, а потім прийняти його як правильну відповідь (після таймауту). Будь ласка, не ставте відповіді в розділі запитань.
Калеб

@Caleb: Я все ще був у тайм-ауті, я опублікував свого прихильника
користувача163365

Відповіді:


15

Використовуйте ifmetricдля зміни метричного значення обох інтерфейсів. Збільшення eth1 вище eth0 призведе до використання eth0 для всіх з'єднань. Вирішує проблему цілком.


2
Чи це змінює шлюз за замовчуванням відразу або після перезавантаження?
CMCDragonkai

2

Вам слід відключити другий, повільний інтерфейс, а потім додати вторинний IP-код до основного. Для цього відредагуйте файл інтерфейсів за допомогою:

sudo vi /etc/network/interfaces

Після доступу до мережевого файлу вам, мабуть, буде представлено щось подібне до цього:

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

Переконфігуруйте так, щоб виглядати так:

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

Це призначить обидва IP-адреси першому NIC. Після цього збережіть файл і запустіть:

/etc/init.d/networking restart

І зміни будуть вчинені.

<- редагувати ->

На мій досвід, якщо він знаходиться на тому ж віртуальному комутаторі, це не має значення, хоча розміщені середовища можуть його ще більше заблокувати. Однак, можливо, варто спробувати, якщо це не працює, ви можете попросити вашу хостинг-компанію змінити віртуальний інтерфейс на щось більш здатне.

<- редагувати ->

Крім того, якщо ваш основний IP зараз не обслуговує DNS, то чому б не використовувати його і для DNS? Ви можете розмістити кілька різних служб на одному IP, оскільки вони використовують різні порти.


0

У вас, здається, є два інтерфейси в одній підмережі, що трохи дивно. Linux (припускаючи, що ви використовуєте похідну Red Hat), вибирає шлюз за замовчуванням, читаючи значення GATEWAY з /etc/sysconfig/network. Однак ця змінна містить IP-адресу як ідентифікатор шлюзу, а не ім'я інтерфейсу. Отже, у вашому випадку одна IP-адреса може бути шлюзом для обох інтерфейсів, що призводить (я думаю) до певного стану гонки.

Я досі не впевнений, навіщо вам потрібен другий інтерфейс. Що станеться, якщо ви повністю зведете повільний інтерфейс?


По-перше, я використовую ubuntu, але бачити це не проблема шлюзу, це не повинно мати значення. По-друге, якщо я збиваю другий інтерфейс, трафік використовує перший інтерфейс, але я втрачаю другий IP, тому я маю другий інтерфейс на першому місці.
користувач163365

1
Ви можете легко налаштувати дві адреси в одному інтерфейсі з псевдонімом. Весь трафік через швидкий інтерфейс, два IP налаштовані, проблема вирішена, ні? І зважаючи на "Як Linux вибирає інтерфейс за замовчуванням і як вибрати режим за замовчуванням?", Як це не проблема шлюзу?
wzzrd

1
Не буде працювати, оскільки це віртуальний інтерфейс, ймовірно, налаштований для маршрутизації лише тих даних, які надходять у вказаний ip. Також ця проблема стосується інтерфейсу, а не шлюзу, оскільки шлюз однаковий в обох інтерфейсах.
користувач163365

2
Вхідні запити можуть надходити через один інтерфейс, але вихідні речі все одно проходять через випадковий інтерфейс. Спробуйте пораду, киньте один з інтерфейсів, поставте інший IP на інший з псевдонімом і подивіться, чи він працює. Якщо вони, як ви кажете, віртуальні, то чому різниця в швидкості і чому спроба розлуки? Щось не гель.
EightBitTony
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.