Настройка сети, как показано на рисунке:

настройка сети

  • Порт Ethernet eth0 машины m1 подключается к порту Ethernet eth0 машины m2 через перекрестный провод.

  • машины m1 и m2 находятся в одной сети: 1.1.1.0/24

  • M1 eth0 имеет адрес 1.1.1.1/24 , и эти записи были введены в таблицу маршрутизации:

    # ip route add 2.2.2.0/24 via 1.1.1.4 //route to m3
    # ip route add 3.3.3.0/24 via 1.1.1.3 //route to m4
    
  • Машина M2 имеет 3 карты Ethernet и действует как маршрутизатор к машине m3 и машине m4, которые находятся в сетях 2.2.2.0/24 и 3.3.3.0/24 соответственно.

  • M2 имеет net.ipv4.ip_forward = 1 в sysctl.conf

  • M2 eth0 имеет адрес 1.1.1.2/24 , eth1 имеет 1.1.1.4/24 , eth2 имеет 1.1.1.3/24 . Это команды, выполняемые на м2, чтобы включить маршрутизацию, чтобы все сети общались

    # ip route add 2.2.2.0/24 via 1.1.1.4 //route to m3
    # ip route add 3.3.3.0/24 via 1.1.1.3 //route to m4
    
  • M3 eth0 имеет адрес 2.2.2.1/24 , и эти записи были внесены в таблицу маршрутизации:

    # ip route add 1.1.1.0/24 via 2.2.2.1 //route to m2 && m1
    # ip route add 3.3.3.0/24 via 2.2.2.1 //route to m4
    
  • M4 eth0 имеет адрес 3.3.3.1/24 , и эти записи были внесены в таблицу маршрутизации.

    # ip route add 2.2.2.0/24 via 3.3.3.1 //route to m3
    # ip route add 1.1.1.0/24 via 3.3.3.1 //route to m2 && m1
    

Итак, первая проблема,

  • Я могу пинговать M1, M3 и M4 от M2.
  • Я могу пинговать М2 от М3 и М4
  • Пинг НЕ работает от М3 до М4 или от М4 до М3.
  • Пинг также НЕ работает от М1 до М3 или М4.
  • Пинг также НЕ работает от M3/M4 до M1.

что я делаю не так?

2 ответа2

0

У M1 нет маршрута к адресу 1.1.1.4 (или .3), так как это прямое соединение с .2.

Если вы посмотрите на таблицу маршрутизации на M1, она будет выглядеть примерно так:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
1.1.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

И поэтому он считает, что должен иметь возможность напрямую подключаться к адресам 1.1.1.3 | 4 через коммутатор или концентратор.

Поместите связь между M1 и M2 в другую подсеть и используйте адрес M2 в качестве шлюза по умолчанию для M1, и он будет работать.

Та же самая ситуация существует с соединениями от M3/4 до других, они должны знать, какой маршрут выбрать, или их маршрутизаторы по умолчанию должны знать.

0

Я думаю, что ваша первая проблема в том, что вы ожидаете, что маршруты будут многопользовательскими - их не будет. Например, вы использовали эти команды на M1, и, кажется, вы ожидаете, что они выберут определенные исходящие интерфейсы на M2:

# ip route add 2.2.2.0/24 via 1.1.1.4 //route to m3
# ip route add 3.3.3.0/24 via 1.1.1.3 //route to m4

Этого не произойдет. Обе записи маршрута будут только пересылать пакет на MAC-адрес M2 (так как это хост, который отвечает на ARP-запросы для обоих адресов nexthop), но M2 самостоятельно решает, куда направить эти пакеты дальше.

Таким образом, маршруты, добавленные в M1, должны были использовать адрес M2, обращенный к M1, то есть via 1.1.1.2 .


Ваша вторая проблема заключается в том, что M2 имеет три интерфейса, принадлежащих к одной сети (1.1.1.0/24).

Вместо этого, поскольку M2 является маршрутизатором и принадлежит всем трем сетям одновременно, он должен иметь адреса из этих сетей: 2.2.2.x/24 для eth1 и 3.3.3.x/24 для eth2.

(При этом вам даже не нужно будет добавлять какие-либо маршруты на M2 - будет достаточно маршрутов локальной подсети.)


Ваша третья проблема заключается в том, что ваши маршруты на M3 и M4 не определяют шлюз для отправки пакетов. Они имеют только собственный адрес хоста, но никоим образом не указывают, что пакеты "к M1" должны действительно проходить через M2.

Поскольку в маршрутах не указан допустимый шлюз /nexthop, они рассматриваются как маршруты локальной подсети; другими словами, вы говорите M3 /M4, что пункт назначения (M1) доступен в локальной сети Ethernet, хотя это не так. Поэтому, когда вы пропингуете M1 из M3 /M4, они пытаются разрешить IP-адрес M1, используя ARP (что, конечно, не удается).

(Помните, что Ethernet всегда работает на коммутируемом носителе, а не на двухточечном соединении, поэтому M2 будет принимать только те пакеты, которые были специально отправлены на MAC-адрес (или широковещательную передачу) M2. Другими словами, M2 должен быть указан как шлюз для маршрута к M1.)

Если вы уже зафиксировали IP-адреса M2 в соответствии с частью II, маршруты на M3/M4 должны выглядеть следующим образом:

(On M3)
# ip addr add 2.2.2.1/24 dev eth0
# ip route add 1.1.1.0/24 via 2.2.2.x  // <via M2's eth1 address>
# ip route add 3.3.3.0/24 via 2.2.2.x  // <via M2's eth1 address>

(On M4)
# ip addr add 3.3.3.1/24 dev eth0
# ip route add 1.1.1.0/24 via 3.3.3.x  // <via M2's eth2 address>
# ip route add 2.2.2.0/24 via 3.3.3.x  // <via M2's eth2 address>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .