Случаи бывают разные, но это вы все и так знаете. Отвечая на письма наших читателей, расскажу как сотворить магию, которая позволит отправлять пакеты с нужного IP-адреса, если их прописано несколько на роутере.
Возможных вариантов два – либо это разные интерфейсы, со своими шлюзами, адресами, DNS’ами и прочей радостью. Либо это провайдер выдал пачку адресов и мы их радостно прописали как дополнительные на интерфейсе. В теории, можно растащить несколько адресов провайдера по разным интерфейсам, но нужно чтобы у этих интерфейсов были разные MAC-адреса, иначе свитч сойдет с ума и ничего внятного из этого не выйдет.
Вариант нумер раз. Тут все просто до безобразия – пишем как обычно таблицу маршрутизации, в смысле по вкусу. А траффиком управляем через правила для траффика – не забываем указать протокол (или группу) и говорим, что интерфейс назначения ни разу не Any, а вовсе даже Wan1, Wan2 или вообще любой, какой нам нужен. На основании этого правила траффик пойдет только по тому интерфейсу, для которого оно разрешено, по всем остальным указанный протокол не пойдет, потому что не разрешено.
Вариант второй чуток более хлопотный и лично я его использовать не рекомендую. Если в роутере есть лишний физический дырка, проще поставить в середину свитч и развести сетки по нескольким интерфейсам. Тем более, что купить управляемый свитч нынче не проблема, а выделять порты для “разветвления” внешнего кабеля удобнее именно на уже имеющемся свитче. Но это ИМХО, и не является непререкаемым фактом.
Итак, вариант второй – мы прописали несколько адресов на одном интерфейсе и хотим отправлять пакеты не с IP1, а с IP2 (например). Тут нам помогут дополнительные таблицы маршрутизации. Первым делом, создаем новую таблицу маршрутизации. Тип есть смысл указывать как “Only”, поскольку дело исключительное. В таблице будет одна строчка, в которой обязательно нужно указать IP2 в качестве адреса отправителя (локальный IP-адрес). После чего создаем правило, в котором указываем нашу новую таблицу маршрутизации в качестве “прямой”. Если сервер стоит у нас и есть нужда отвечать на запросы, в качестве “обратной” таблицы маршрутизации тоже стоит указать свежесозданную таблицу. Разумеется, указываем протокол, к которому будет применяться таблица. По вкусу, можно указать расписание, источник и получатель можно заполнять как “любое”. Все!
Чтобы использовать дополнительные таблицы маршрутизации и правила к ним в полный рост, нужно много планировать и иметь большую умную голову 🙂 Мое решение – очень примитивное, технология может куда больше.
UPDATE
Пример из комментариев. Есть 4 внешних адреса (ext_1, ext_2, ext_3 и ext_4), которые получены от одного провайдера и заведены в один WAN-порт на роутере. Есть внутренние сервисы, которым назначены некие внутренние адреса из локалки (DNS, Web, Mail, Some_srv). Задача раз – выпустить всех через один адрес, впускать запросы извне каждый сервис по своему внешнему адресу. Задача два – выпустить каждый сервис через свой же адрес, впускать тоже по своему адресу.
Общая часть. В интерфейсах создаем нужное количество arp-записей. В правилах для пакетов создаем нужное количество SAT-правил вида “если пакет прилетает извне на адрес ext_1 и на порт 53, маппим его на внутренний адрес DNS и порт не меняем” и “если пакет прилетает извне на адрес ext_2 и на порт 80, маппим его на внутренний адрес Web и порт не меняем”. Повторить по количеству сервисов 🙂
Решение номер раз. Больше ничего не требуется. С какого адреса выходить мы будем? С того, который основной на интерфейсе. Или можно в основной таблице маршрутизации явно указать какой адрес используется. Но это по вкусу.
Перед решением номер два, немного теории. Таблицы маршрутизации сами не решают ничего ровным счетом. Они лишь указывают в какую сеть можно попасть, если использовать такой-то шлюз и такой-то интерфейс. Все. Опционально, можно указать IP, которым будет представляться роутер. Все решают правила маршрутизации. Для решения второй задачи придется, по большому счету, палить из пушки по воробьям – эффективно, но винтовки все равно никто не выдаст.
Решение номер два. Создадим дополнительные таблицы маршрутизации на одну меньше, чем количество наших внешних адресов и пропишем в них один маршрут – тот, который обычный в All-net, но подставим очередной внешний IP в графе “локальный IP”. Один адрес (по умолчанию который) у нас уже есть в стандартной таблице, поэтому дополнительных на одну меньше. В принципе, создавать их можно в режиме “default” и не заморачиваться – должно работать. Далее, начинаем писать правила маршрутизации. Минимум – одно правило на одну доп.таблицу. Можно колдовать с бОльшим количеством правил на доп.таблицу – готовить по вкусу, бывает нужно для нескольких сервисов, например.
Итак, создаем правило. Адресный фильтр… Логика такова: сервера внутри, стало быть прямое направление пакета – извне вовнутрь, обратное – изнутри наружу. Фром интернет с любовью Так и пишем в адресном фильтре. Источник – интернет, назначение “core” и соответствующий внешний адрес. Разбираемся с таблицами. Прямая – можно оставить стандартную, а можно поставить нашу дополнительную. Это пофиг, в данном случае. Обратная – обязательно соответствующая таблица маршрутизации. Все. Расписание и сервисы заполняем по вкусу.
Проверять логику можно нужно. Сделать это можно развернув в правиле маршрутизации направления пакетов (работать с исходящими пакетами) и поменяв местами прямую и обратную таблицы. А в качестве протокола в правиле указать HTTP. Благо, сейчас сервисов “угадай мой IP” в интернете ведро. Даже если где-то косяк в настройке (я наврал ненароком, например), такая проверка выявит как оно реально работает.
В путь, жду отзывов
DFL-210
Приветствую. Этот пост я читал, просто не смог его соотнести с той тематикой.
Не смог логику построить в конфиге
Допустим я прописал в адресную книгу 4 ип из пула провайдера,
создал 4 арп записи типа паблишь, каждая со своим МАК.
У меня в сети сервера со своими сервисами. исходящие запросы и пакеты нужно развести по адресам. Входящие запросы при помощи САИТа я так понял можно завести на какой угодно сервак с какого угодно внешнего ип.
–
из них нужно чтобы мэйл сервер работал с ип1(исходящие пакеты и запросы)
–
АД+днс работал с ип2 (исходящие пакеты и запросы)
–
Веб сервер работал с ип3 (исходящие пакеты и запросы)
–
остальные сервисы и сервера работали с ип4 (исходящие)
–
проброс портов по остальным серверам с ип адресов опубликованых на WAN порту пробрасывать САТом (это понятно)
–
тоесть
192,168,11,10(mail) —> 178.19.246.153 \ 178,19,246,153:110 ->192.168.11.10 (pop3) (*1)
192.168.11.20(web) —> 178.19.246.154
–
192.168.11.11(ad1+dns)–> 178.19.246.155 (ad+ some service+dns+some port)
192.168.11.22(ad2+dns)–> 178.19.246.155 (dns+some port)
–
192.168.11.0/24 ——–> 178.19.246.156
–
Вопрос. – реально ли справиться правилами маршрутизации или нужно таблицы создавать ?
-можете ли привести в пример кнфиг для (*1) случая?
Буду благодаен.
Обновил запись, надеюсь, что подробно расписал сценарий. Комментарии приветствуются.
Кстати, публиковать аж в интернет весь каталог AD – плохая идея.
Спасибо! Теперь статья стала понятней намного!
сам сервис АД в нет не публикуется 🙂
Или я тугой или дфл тугой.
Для большей гибкости воткнул в маршрутизатор лишние ип и шлюз к нему
wan_ip 178.19.242.225 \ 255.255.255.248 \ wan_gw 178.19.242.230
–
www-srv \ sat – (any-all \ core-wan_ip) http \\ SAT – www-srv (192.168.11.10)
www-srv \allow (any-all \ core-wan_ip) http \\
–
www-srv в дмз порту, через дхцп получает по статической записи свой ип
добавлял
www-srv \ allow (wan-www_srv \ any-all)
хотя должен пробрасываться порт – он не пробрасывается…
как так ?
Ну, RDP снаружи работает. Пароль спрашивает, на сертификат жалуется. Или оно из локалки не работает?
Кстати – там в таблицах дополнительных опций точно не нужно ?
Сможете потом заглянуть на роутер и проверить мои настройки которые я еще не применил ?
можно ли с вами связаться?
текущие настройки ( которые делаю сейчас) можно просмотреть
https://178.19.242.225
login: guest
pass: guest
Да разобрался, фишка была в местоположении првил. Группы ДМЗ перетащил наверх, лан опустил вниз и все заработало. Зависимости такой не понял. Теперь буду пробовать с маршрутизацией.