Назад | Перейти на главную страницу

Маршрутизатор Linux с одной сетевой картой

Предположим, у меня небольшая сеть со следующим количеством VLAN:

VLAN1 10.1.1.0/24

VLAN2 10.1.2.0/24

VLAN3 10.1.3.0/24

Маршрутизация VLAN осуществляется центральным коммутатором, коммутатор не выполняет маршрутизацию на основе политик (Dell PowerConnect 6224F), поэтому он будет использовать только маршрут по умолчанию для всего остального трафика, выходящего за пределы VLAN, указанных выше. (т.е. 0.0.0.0/0).

Теперь предположим, что у меня есть два интернет-соединения, каждое с модемом NAT DSL в VLAN1 (скажем, 10.1.1.16 и 10.1.1.17), и я хочу, чтобы устройства в VLAN2 использовали одно интернет-соединение, а устройства в VLAN3 использовали другое, я думал использования Linux для этого.

Скажем, я настраиваю Linux-сервер (10.1.1.8) и настраиваю шлюз по умолчанию на основном коммутаторе так, чтобы он указывал на 10.1.1.8, тогда можно ли настроить IPTables в Linux-системе, чтобы делать то, что мне нужно?

Большинство практических руководств по настройке маршрутизатора на базе Linux содержат два двух сетевых интерфейса в качестве требования, но я не думаю, что это необходимо в данном сценарии, поскольку этот Linux-сервер просто будет находиться в той же VLAN, что и модемы DSL. (плюс у меня в настоящее время нет запасных сетевых адаптеров, которые можно было бы установить на сервере, который у меня есть), поэтому мой вопрос (при условии, что это возможно) может ли кто-нибудь дать мне некоторые рекомендации по созданию некоторых правил IP-таблиц, чтобы позаботиться об этом?

Я мог бы также в будущем сделать так, чтобы все HTTP-соединения были прозрачно проксированы, в идеале через общий экземпляр squid, но по-прежнему маршрутизировали запросы по соответствующему DSL-соединению.

Редактировать:

Мне не нужно маршрутизировать между VLAN, так как основной коммутатор уже делает это нормально. Возможно, я не понимаю терминологию, но если я настрою маршрут по умолчанию для 0.0.0.0/0 на основном коммутаторе как 10.1.1.8, могу ли я настроить Linux-сервер для перенаправления пакетов через правильный шлюз DSL, в зависимости от источник пакета?

Пример того, чего я пытаюсь достичь ...

ПК в VLAN3 (10.1.3.123) отправляет пакет в 1.2.3.4. Шлюз по умолчанию на ПК - 10.1.3.1 (т. Е. Интерфейс маршрутизации в VLAN3), затем коммутатор направляет этот пакет через 10.1.1.1 на 10.1.1.8 (коммутатор настроен на использование этого IP-адреса в качестве следующего перехода для 0.0.0.0. / 0). Затем Linux-сервер маршрутизирует / перенаправляет этот пакет через модем DSL 10.1.1.17, поскольку исходный IP-адрес находился в VLAN 3 (10.1.3.0/24). Если бы пакет исходил из 10.1.2.0/24, то Linux-сервер направил бы / перенаправил через 10.1.1.16.

                      VLAN 1
                   (10.1.1.0/24)
  10.1.1.16 (DSL1) ------+
                         |
  10.1.1.17 (DSL2) ------+
                         |
  10.1.1.8 (Linux) ------+
                         |
                  +-------------+
   VLAN 2  -------| Core Switch |-------  VLAN 3
(10.1.2.0/24)     +-------------+      (10.1.2.0/24)

Дальнейшее редактирование:

Думаю, я не очень хорошо объяснил, чего я пытаюсь достичь здесь, но, пожалуйста, потерпите немного здесь, так как я не гуру сети (на случай, если вы еще этого не заметили!).

Я не хочу создавать несколько интерфейсов в Linux-боксе, так как я не хочу, чтобы он выполнял какую-либо маршрутизацию между VLAN, я просто хочу, чтобы блок находился в одной из VLAN (один интерфейс) и пересылал (или маршрутизировал?) пакеты через DSL1 или DSL2, в зависимости от источника пакета. Если 10.1.1.8 является маршрутом по умолчанию для 0.0.0.0/0 в нашей сети, конечно, это можно сделать?

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

Ваш пограничный маршрутизатор Linux должен знать обо всех подсетях за коммутатором - вы можете сделать это со статическими маршрутами, например:

route add -net 10.1.1.0/16 gw <switch IP>

Или коммутатор Dell (из быстрого гугла) поддерживает RIP и OSPF, поэтому вы можете заставить его автоматически анонсировать свои маршруты к Linux, если вы использовали Quagga или аналогичный для получения рекламы.

Вашим клиентам нужно будет только настроить шлюз по умолчанию (интерфейс коммутатора в их VLAN) и иметь соответствующие списки ACL на коммутаторе, чтобы разрешить их трафик на границу.

К сожалению, я не делал PBR для Linux, поэтому не могу дать вам никаких волшебных правил и могу только указать на статья Google нашел - хотя выглядит актуально. Не зацикливайтесь на многовариантных интерфейсах, в Linux легко превратить один интерфейс в несколько, создав псевдонимы (ifconfig eth0:25 <ipaddr>) или VLAN (ifconfig eth0.25 <ipaddr>).

В большинстве случаев каждый интерфейс vlan в системе Linux будет работать как «настоящий» интерфейс, поэтому, когда вы читаете руководства, просто мысленно замените «eth0» на «eth0.123» и «eth1» на «eth0.456».

Я бы порекомендовал вам отключить всю маршрутизацию в коммутаторе. Похоже, это вызовет путаницу и сложности.

Как комментировал кто-то другой, я согласен с рекомендацией не использовать VLAN 1 для «реального трафика». Использование другого идентификатора VLAN (их много ...) делает более понятным, что порт был явно и намеренно настроен.

Я думаю, вы могли бы создать дополнительные сетевые адреса для своей сетевой карты - по одному для каждой VLAN, а затем использовать route для создания статических маршрутов.