Маршрутизация между несколькими подсетями

10

Допустим, я хочу создать внутреннюю сеть с 4 подсетями. Там нет центрального маршрутизатора или коммутатора. У меня есть «подсеть управления», доступная для связи шлюзов во всех четырех подсетях (192.168.0.0/24). Общая схема будет выглядеть так:

10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24

Словом, я настраиваю один linux box в каждой подсети с 2 интерфейсами, 10.0.x.1 и 192.168.0.x. Они функционируют как шлюзы для каждой подсети. Для каждой подсети 10.x / 24 будет несколько хостов. Другие хосты будут иметь только 1 интерфейс, доступный как 10.0.xx

Я хочу, чтобы каждый хост мог пинговать друг друга в любой другой подсети. Мой вопрос первый: возможно ли это? И во-вторых, если это так, мне нужна помощь в настройке iptables и / или маршрутов. Я экспериментировал с этим, но могу придумать только решение, которое позволяет пинговать в одном направлении (пакеты icmp являются только примером, в конечном итоге я хотел бы получить полные сетевые возможности между хостами, например, ssh, telnet, ftp и т. Д.) ,

Greyline
источник

Ответы:

8

Итак, у вас есть пять сетей 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24и 192.168.0.0/24, и четыре коробки маршрутизации между ними. Скажем коробка маршрутизации имеет адреса 10.0.1.1/192.168.0.1, 10.0.2.1/192.168.0.2, 10.0.3.1/192.168.0.3, и 10.0.4.1/192.168.0.4.

Вам нужно будет добавить статические маршруты в другие 10.0.x.0/24сети на каждом маршрутизаторе, используя команды, подобные следующим (РЕДАКТИРОВАНИЕ!):

# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4

и соответствующие маршруты на других маршрутизаторах. На полях без маршрутизации только с одним интерфейсом установите маршрут по умолчанию, указывающий на 10.0.x.1. Конечно, вам также нужно будет добавить статические адреса и сетевые маски на все интерфейсы.

Также обратите внимание, что linux по умолчанию не работает как маршрутизатор, вам нужно включить пересылку пакетов с помощью:

echo 1 > /proc/sys/net/ipv4/ip_forward

Приведенные ipвыше команды не делают настройки постоянными, как это сделать, зависит от дистрибутива.

Как я уже сказал, я не проверял это и, возможно, что-то забыл.

Йохан Мирен
источник
Спасибо за помощь здесь. То, что вы посоветовали, работает, когда я пингую маршрутизатор к маршрутизатору (с 10.0.1.1 по 10.0.2.1), но не когда я пингую другой хост. Например, пинг с 10.0.1.1 по 10.0.2.2 не приводит к тому, что трафик не перенаправляется на хост 10.0.2.2. Не могли бы вы как-нибудь манипулировать iptables? Я экспериментировал с этим пару дней, но безрезультатно.
Greyline
Стандартных методов маршрутизации должно быть достаточно. Вот контрольный список: 1. все адреса должны быть настроены на хостах (например, ip addr add 10.0.2.2/24 dev eth0), 2. маршруты должны быть установлены на четырех полях маршрутизатора, как указано выше, 3. маршрут по умолчанию на блоках, не относящихся к маршрутизатору, должны быть установлены так, чтобы они указывали на блок маршрутизации в сети (например, ip route add default через 10.0.1.1), 4. cat / proc / sys / net / ipv4 / ip_forward на четырех маршрутизаторах должен выведите «1».
Йохан Мирен,
Я исправил ошибку в вышеприведенных командах ip route. Я также на самом деле протестировал эту настройку, хотя только с четырьмя машинами: двумя блоками маршрутизации и двумя хостами на сторонах 10.0.x.0. Оно работает!
Йохан Мирен
Йохан, спасибо за ваш дополнительный вклад. Эта настройка работает. Оказывается, образ Linux, который я использовал, имел стандартные правила iptables, которые были проблематичными. Спасибо, что помогли мне узнать об этом.
Greyline