Я новичок в сети, пытаясь понять, как работают несколько сетевых интерфейсов. Я сомневаюсь, что когда на компьютере установлено два или более сетевых карт , что означает шлюз по умолчанию, присутствующий в /etc/sysconfig/network
. Предполагается, что ядро должно балансировать нагрузку между различными интерфейсами, для которых шлюзы определены в соответствующем /etc/sysconfig/network-scripts/ifcfg-eth*
?
3 ответа
Шлюз по умолчанию - это то место, куда отправляются пакеты, когда нет более определенного маршрута - фактически шлюз по умолчанию имеет маршрут, соответствующий всем пакетам - маршрут маски маски /0.
Попробуйте "netstat -rn", чтобы увидеть маршруты в вашей системе.
Шлюз по умолчанию не является интерфейсом в вашей системе - обычно это ваш локальный маршрутизатор. Он может быть доступен через несколько интерфейсов, хотя обычно существует только один активный интерфейс.
Я не уверен насчет балансировки нагрузки, но кажется разумным, что если шлюз по умолчанию доступен с более чем одного интерфейса, то пакеты могут быть отправлены со всех интерфейсов к нему.
Простой пример настройки сети с нуля:
ifconfig eth0 192.168.0.55 netmask 255.255.255.0
route add default gateway 192.168.0.1 eth0
Первая команда устанавливает ваш интерфейс и добавляет маршрут к локальной сети (192.168.0/24). Вторая команда добавляет маршрут по умолчанию через 192.168.0.1, который теперь доступен благодаря первому маршруту.
Если у вас есть второй интерфейс, вы также можете настроить его:
ifconfig eth1 192.168.0.56 netmask 255.255.255.0
Теперь любой интерфейс может достичь шлюза по умолчанию. Вы можете проверить, происходит ли распределение нагрузки, используя "ifconfig" и просматривая пакеты RX/TX. Если счетчики увеличиваются, это указывает на то, что интерфейс используется.
Обновить:
Для двух интерфейсов в разных сетях вы можете добавить более одного шлюза по умолчанию. Я не знаю, поддерживается ли эта ситуация файлом etc/sysconfig. Если нет, вы можете добавить инструкцию "route add default gateway" в ваш скрипт запуска.
Некоторые мелочи по теме: раньше было возможно отправить пакет через шлюз с IP-адресом источника с другого интерфейса (асимметричная маршрутизация). Таким образом, вы можете отправлять все ваши пакеты с одного шлюза и получать их через другой. Это полезно в случае, когда у вас есть соединения с асимметричной полосой вверх / вниз или широтой (например, спутниковая нисходящая линия связи и сотовая восходящая линия связи).
Я говорю "привык", потому что большинство интернет-провайдеров теперь отфильтровывают пакеты с IP-адресом источника, который не назначен в нисходящем направлении.
Более случайное двойное веселье:
У меня на ноутбуке две карты: проводная и беспроводная. Я назначаю им один и тот же IP-адрес в конфигурации моего DHCP-сервера на основе их адреса Ethernet. Когда подключен проводной, я получаю высокую скорость. Но когда я отключаю его, все продолжает работать. Я даже не теряю соединения с удаленными хостами. Ядро не заботится о том, с какого интерфейса поступает пакет, если оно связано с правильным IP-адресом.
Шлюз по умолчанию должен быть доступен только одному из ваших сетевых интерфейсов. Наличие более одной сетевой карты в одной подсети и, следовательно, потенциально недетерминированный выходной путь может привести к неожиданному и неутешительному поведению.
См. Например, https://serverfault.com/questions/415304/multiple-physical-interfaces-with-ips-on-the-same-subnet
Если вы действительно хотите реализовать это, надежным способом было бы настроить какую-либо форму агрегирования сети, что означает объединение / объединение в отношении Linux.
При двух маршрутах с одинаковыми метриками используется схема балансировки нагрузки в циклическом режиме. Это может происходить для каждой сети или для каждого пакета. Маршрутизаторы Cisco (не linksys) могут быть настроены так же, но для каждого пакета обеспечивается лучшее распределение эквивалентных каналов. С точки зрения хоста, я полагаю, что если вы не запускаете демон маршрутизации, такой как маршрутизируемый или стробированный, ядро системы выберет один интерфейс в качестве своего предпочтительного маршрута и переключится на другой интерфейс только в том случае, если первый отключится или шлюз станет недоступен через этот интерфейс.