Friday, November 17th, 2017

Linux маршрутизатор с несколькими внешними интерфейсами

Published on Март 30, 2009 by   ·   Комментариев нет

Настройка линукс маршрутизатора через iptables + iproute2 на два (и больше) внешних интерфейса. Предполагается: — то вы уже знакомы с понятием маршрутизации и ната. — теоретически понимаете как работает нат, что такое маршрутизация и файрвол, но не знаете как это реализовать на вашей системе. Имеется: — две входящие сетевые соски от двух разных провайдеров. — локальная сеть — три сетевых интерфейса на маршрутизаторе. Задача: Объеденить всех пользователей в одну локальную сеть и пускать одних пользователей в интернет через одного провайдера, других — через другого. В рассматриваемом примере, все пользователи в локальной сети будут находиться в сети 172.16.0.0/16, при этом пользователей из подсети 172.16.0.0/24 надо пропускать в интернет через первого провайдера, а пользователей 172.16.1.0/24 — через второго. Будем использовать iproute2 для таблиц маршуризации и iptables для ната. Обозначим:

 $IP_LOCAL="172.16.0.1" - адрес нашего маршрутизатора в локальной сети. $IP_INET1="1.1.1.2" - адрес нашего маршрутизатора в сети первого провайдера.  <a href="http://www.mackrick.co.uk/belstaff-motorcycle-pants.html">belstaff motorcycle pants</a> $IP_INET2="2.2.2.2" - адрес нашего марщрутизатора в сети второго провайдера. $IF_LOCAL="eth0" - имя интерфейса на локальную сеть $IF_INET1="eth1" - имя интерфейса на первого провайдера. $IF_INET2="eth2" - имя интерфейса на второго провайдера. $NET_LOCAL="172.16.0.0/16" - локальная сеть. $NET_INET1="1.1.1.0/24" - адрес сети в которой гейт нашего первого провайдера. $NET_INET2="2.2.2.0/24" - адрес сети в которой гейт нашего второго провайдера.  <a href="http://www.masterlo.it/">Adidas Italia Online</a> $NET_SUB1="172.16.0.0/24" - подсеть пользователей на первого провайдера $NET_SUB2="172.16.1.0/24" - подсеть пользователей на второго провайдера $GW1="1.1.1.1" - гейт первого провайдера. $GW2="2.2.2.1" - гейт второго провайдера.

Настраиваем статические адреса на сетевые карты. Debian (ubuntu) хранит настройки в файле

 /etc/network/interfaces.

пишем:

 auto lo iface lo inet loopback #local auto eth0 iface eth0 inet static address 172.16.0.1 netmask 255.255.0.0 network 172.15.0.0 broadcast 172.16.255.255 #inet 1 auto eth1 iface eth1 inet static address 1.1.1.2 netmask 255.255.255.0 gateway 1.1.1.1 network 1.1.1.0 broadcast 1.1.1.255 #inet 2 auto eth2 iface eth2 inet static #если надо - меняем мак адреса # pre-up ifconfig eth2 hw ether aa:bb:cc:cc:bb:aa address 2.2.2.2 netmask 2.2.2.0 # себе я второй гейт не прописываю, в следствии чего сам маршрутизатор ходит в инет через первый инет # gateway 2.2.2.1 network 2.2.2.0 broadcast 2.2.2.255

тем самым мы сказали, что все сетвые у нас имеют статические адреса, и указали их. Настаиваем маршрутизацию с утилитой ip. Утилита route позволяет нам обратиться к таблице маршртизации. Сила утилиты ip в том, что она позволяет создать большое количество таблиц для самых разных потребностей, а так же, способна считывать флаги, которые расставляет файрвол iptables (об этом ниже) и на их основе тоже делать какие-то действия. Основа маршрутизации через разные таблицы — правила (rule) А сила различных таблиц в том, что мы можем хранить огромное количество различных таблиц маршрутизации, через которые и будем пропускать пакеты. Просмотреть список уже имеющихся таблиц можно командой

 ip rule list 0: from all lookup 255 32766: from all lookup main 32767: from all lookup default

Мы видим, что у нас есть три правила: таблица 255, main и default. То, что выдает нам route — хранится в таблице main, что можно увидеть командой

 ip route list table main

В качестве номеров таблиц можно использовать цифры, ( пример: 0: from all lookup 255 ), а можно прописать на эти цифры какие-то более понятные простым смертным имена ( пример: 32766: from all lookup main ). Так что обозначим свои таблицы: Редактируем файл

 /etc/iproute2/rt_tables

и добавляем туда записи вида:

 # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 10 T1 20 T2

номер — это то самое число, которое мы можем использовать если не именовать таблицы, а строковое значение — то, что мы в действительности будем использовать. (кстати, тут же мы видим и уже встречавшиеся нам в списке правил таблицы) Теперь создаем некий скрипт, который в последствии будет все нам прописывать при старте системы. Понятное дело, что каждый использует свой любимый редактор =) /etc/init.d/route [cc lang=»bash» tab_size=»2″ lines=»-1″] #!/bin/sh IP_LOCAL=»172.16.0.1″ # адрес нашего маршрутизатора в локальной сети. IP_INET1=»1.1.1.2″ # адрес нашего маршрутизатора в сети первого провайдера. IP_INET2=»2.2.2.2″ # адрес нашего марщрутизатора в сети второго провайдера. IF_LOCAL=»eth0″ # имя интерфейса на локальную сеть IF_INET1=»eth1″ # имя интерфейса на первого провайдера. IF_INET2=»eth2″ # имя интерфейса на второго провайдера. NET_LOCAL=»172.16.0.0/16″ # локальная сеть. NET_INET1=»1.1.1.0/24″ # адрес сети в которой гейт нашего первого провайдера. NET_INET2=»2.2.2.0/24″ # адрес сети в которой гейт нашего второго провайдера. GW1=»1.1.1.1″ # гейт первого провайдера. GW2=»2.2.2.1″ # гейт второго провайдера.


Смотрите также:

Tags: , , , , ,

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]