Я добавил второй сетевой интерфейс к виртуальной машине vmware. Второй сетевой интерфейс находится в другой сети. Я использовал nmtui для определения нового интерфейса, а затем перезагрузил компьютер. Оба интерфейса появляются и имеют IP-адреса в ожидаемых сетях. Ради этого вопроса я назову эти сетевые интерфейсы nic1 и nic2.
Когда активны и nic1, и nic2, я могу пинговать только nic2. nic1 истекает. Когда я деактивирую nic2, я могу пинговать nic1.
Что здесь происходит и как заставить оба сетевых интерфейса работать одновременно?
ОБНОВИТЬ:
По запросу, вот вывод ip route show:
default via x.y.a.1 dev nic1 proto static metric 100
default via x.y.b.1 dev nic2 proto static metric 101
x.y.a.0/24 dev nic1 proto kernel scope link src x.y.a.185 metric 100
x.y.c.233 via x.y.b.1 dev nic2 proto dhcp metric 100
x.y.b.0/24 dev nic2 proto kernel scope link src x.y.b.152 metric 100
x.z.d.239 via x.y.a.1 dev nic1 proto dhcp metric 100
Я замаскировал первые три октета буквами, чтобы случайно не создать угрозу безопасности. Но для целей этого разговора IP-адреса двух моих сетей:
x.y.a.185 и x.y.b.152
Устройство, выполняющее эхо-запросы (с использованием указанных выше масок), будет x.v.w.70. Я не думаю, что это проблема маршрутизации, потому что я могу пинговать любой из nic, но не оба одновременно, когда оба активны.
Это проблема маршрутизации. Когда вы устанавливаете свои таблицы маршрутов где угодно, всегда помните об обратном потоке. Если трафик возвращается через другой путь (другой маршрутизатор), то, вероятно, конструкция нарушена. Иногда есть компромисс, оправдывающий такой дизайн (называемый асимметричной маршрутизацией), но это очень редко.
В частности, в Linux по умолчанию rp_filter 1
(режим фильтрации обратного тракта 1). В вашем случае, когда ваш Linux замечает пакет ping от x.v.w.70 до x.y.b.152, он игнорирует его на интерфейсе x.y.b.152. Он проверяет, как идет маршрутизация в обратном направлении, и думает: «Хммм», поскольку пакеты обратно на x.v.w.70, которые я отправляю на x.y.a.1, вообще не должны исходить от x.y.b.1. поскольку rp_filter 1
делает вас много безопаснее против атак спуфинга, обычно не рекомендуется менять его на 0 или 2.
Когда вы выключаете одну сетевую карту, таблица маршрутизации упрощается, и один и тот же пакет обрабатывается правильно.