На форуме российского представительства D-Link несколько раз возникал вопрос по поводу использования “интерфейса” ARP и разных его режимах работы. Внятного ответа, как всегда найти не удалось. В лучшем случае отсылают читать мануал, а так чтобы на пальцах для дураков – это фигу. А мануал, как водится, английский и официальный до безобразия. На том же форуме есть примеры использования, но без комментариев почему так, а не иначе. Режимов для ARP имеется три штуки: Static, Publish и XPpublish. Чем они отличаются и где используются я попробую объяснить.
Первое, что хотелось бы сделать – это дать ссылку на инструкцию к DFL на русском языке. Почему на русском FTP его до сих пор нет – неясно. Тем более, что прошивку “чисто для России” выложили без альтернатив давным-давно. Сильно рекомендую инструкцию себе скачать и прочитать. Формулировки там, конечно, тоже местами не сахар, но хотя бы на родной мове.
Во-вторых, немного теории, для тех, кто не очень понимает механизма работы протокола ARP в сферической сети в вакууме. Те, кто понимают, могу переходить сразу дальше 🙂 Известно, что хост A имеет IP-адреса <ip_A> и MAC-адрес <mac_A>, хост B соответственно – <ip_B> и <mac_B>. Итак, у хоста A есть пакет для хоста B. Первое, что делает хост A – это проверяет (исходя из своего ip-адреса и маски) находится ли B в его подсети. Если нет – пакет направляется на соответствующий маршрутизатор и уже его головная боль как доставить пакет. Так что ARP работает только в одном сегменте сети, то есть за роутер оно не ходит.
Ок, предположим вышло так, что хост назначения находится в той же подсети. В таком случае, хост A проверяет свою локальную arp-таблицу на предмет наличия там MAC-адреса хоста B. Если есть – посылает пакет. Если нет – орет что есть мочи “а кто это тут у нас такой с ip_B в сети?”. На что хост B должен ему ответить “я это, и МАС-адрес у меня mac_B”. Оба записывают MAC-адреса друг друга и радостно начинают обмениваться данными.
А теперь то, ради чего все и затевалось. Режим Static позволяет намертво прикрутить соответствие IP и MAC-адреса получателя. Если обычно это соответствие динамическое (периодически хост A снова пытается выяснить MAC-адрес хоста B), то в статическом режиме пакты для ip_B всегда идут на mac_B. Такой режим нередко используется для защиты от подмены ip-адреса левыми хостами. Провайдеры такое тоже используют, чтобы злой хакер Вася не взял адрес Пети и не ломал ему кайф от пользования Интернетом.
Режим Publish заставляет наш роутер (DFL-800 например) ответить хосту A вместо хоста B и сообщить все необходимые данные. Бывает нужно это, например, когда у хоста B наблюдаются проблемы с ARP-ответами. Второй сценарий используется чаще и позволяет опубликовать на одном интерфейсе нашего DFL-роутера несколько ip-адресов. Можно использовать в случае, когда нет возможности распилить сеть на VLAN’ы, а разделение на разные ip-подсети необходимо. Третий сценарий позволяет использовать на одном внешнем интерфейсе несколько различных ip-адресов для перенаправления пакетов к различным внутренним серверам.
Режим XPublish делает то же самое, но меняет еще и MAC-адрес отправителя в пакете с ARP-ответом. В предыдущем случае MAC-адресом отправителя пакета остается MAC-адрес роутера, что в отдельных случаях может вызывать проблемы. Разумеется, если MAC-адрес интерфейса совпадает с MAC-адресом, который мы сообщаем, результат для режимов Publish и XPublish будет одинаковым.
Существует еще такая штука как Proxy ARP, но это тема для отдельного разговора.
Полезная запись! А можно вас попросить раскрыть по-подробнее как на wan интерфейсе опубликовать несколько ip дабы пробросить их к разным машинам во внутренних подсетях без vlan-ов. Как подсети подружить с помощью arp 00-00.. уже разобрался:) А тут кажется все просто, а никак не получается.
Все действительно просто. С помощью arp публикуем несколько адресов “снаружи” и с помощью ip-правил перенаправляем пакеты куда надо. Только придется у провайдера попросить привязать к нескольким ip один mac, если привязка используется.
Или нужно на примерах? 🙂 сделаем, если потребуется
Получилось! Нужно было попросить провайдера снять привязку к маку и прописать в ARP не их мак а 00, и еще маршрут с метрикой-0 добавить. Правда, все равно осталось много вопросов, видимо знаний не хватает как правила оптимально составлять. Есть еще IPSec туннели которые тоже не отовсюду видны.
А можно к вам обратиться за помощью? Буду очень благодарен, не на словах, если поможете навести порядок:) skype:ypa246
Использовал вот эту инструкцию от производителя http://www.dlink.ru/ru/faq/85/481.html
Но мой провайдер настроил маршрут с пула адресов на внешний IP маршрутизатора.
Задачу меня следующая: есть три машины в локальной сети, необходимо чтобы каждой машине был присвоен внешний IP. Для этого и выделили нам этот пул внешних IP.
Получается мне надо попросить провайдера убрать маршрут и привязать все 4 внешних IP на MAC-адрес маршрутизатора? (D-Link 260e)
Не очень понятно что значит “Но мой провайдер настроил маршрут с пула адресов на внешний IP маршрутизатора”. С одного хвоста от провайдера можно получить 4 разных адреса (хоть и близких)? Тогда, быть может, проще всего подключить самый обыкновенный свитч и не париться?
Схема нужна что и как 🙁
Нарисовал схему (надеюсь понятная) http://s51.radikal.ru/i133/1305/3e/7777acdef24f.png
В общем можно добавить следующее: все пакеты, которые идут на IP из пула поступают на внешний IP DFL’а и необходимо распределить эти пакеты по определённым локальным IP, которые в свою соответствуют определённым IP из пула.
Да вообще не проблема. Заводим пачку парных правил проброса портов согласно количеству внешних IP-адресов и все… Только в качестве адреса назначения указываем правильные внешние адреса и в правиле SAT указываем на какой внутренний адрес его пересылать.
Подробно расписать требуется?
Буду благодарен за подробную инструкцию! 🙂
Боюсь показаться неоригинальным, но http://dlink.ru/ru/faq/85/481.html
🙂
Кстати, привязку в одному маку всех IP из пула мой провайдер отказывается делать с формулировкой: “Вам никто там не сделает”. Провайдер соответственно Ростелеком)
Да ладно? Прям таки и никто? Тот факт, что Ростелекому влом это делать, ни разу не говорит о том, что никто так делать не станет. Местные наши провайдеры делают и никакой проблемы в этом не видят.
Ростелеком вообще редко повернут к потребителю лицом
Это рабочий инет. И альтернативы нет… Но начальство я уже загрузил этим вопросом, пускай выбивает)
Можно, конечно, раздать адресам из пула разные Mac-адреса и оно даже, наверное работать будет…
Но ИМХО, надо ногами пинать саппорт провайдера и выходить на технарей
Решил проблему: настроил 3 VLAN’а с соответствующими IP из пула у каждого, далее правила доступа в интернет для них. И о чудо, всё заработало ^_^
Вот кстати пример настройки для начинающих http://kompfirma.narod.ru/DFL.pdf
Добрый день! Снова обращаюсь к Вам за помощью.
Возникла необходимость пробросить через DFL белые IP от провайдера на хост с vSphere, на котором висят виртуальные машины и с внутренними ip (теперь нужно для публичных DNS). Наверное будет проще нарисовать все на схеме и вообще поговорить:) Пожалуйста, свяжитесь со мной (контакт оставлял ранее).
Спасибо!
Проброс портов – самое подходящее решение, ИМХО
Добрый день!
Подскажите, пожалуйста, а в обратную сторону это работает? Т.е. нужно сделать так, чтобы smtp трафик шел с дополнительного адреса WAN интерфейса.
Проще некуда. Нужно правило маршрутизации по протоколу и указать в качестве единственного 0.0.0.0 маршрута нужный интерфейс и все.
Можно еще попробовать в правилах для траффика указать, что интерфейс назначения должен быть правильный wan
Приветствую!
Змий, а можешь поподробнее разжевать? На интерфейсе WAN прописано 2 ip-адреса (основной wan_ip и mail_ip)
создаю Routing Rules для сервиса smtp,
Source
Interface: any
Network: all-nets
Destination
Interface: wan
Network: mail_ip
Я так понимаю, нужно еще таблицу маршрутизации создать отдельную?
1) если в роутер приходят несколько проводов, то все решается правилами для пакетов – там просто указываем, что интерфейс назначения – нужный нам интерфейс для нужного протокола
2) если в роутер приходит один кабель с пачкой адресов от провайдера, то все решается доп. Таблицами маршрутизации. Для этого создается новая таблица под нужный протокол (smtp в данном случае) и для маршрута 0.0.0.0 руками указывается желаемый внешний адрес, в основной же таблице руками же для того же 0.0.0.0 руками лучше прописать основной свой внешний ip.
Если соберусь, картинки нарисую завтра
Где же это завтра ? 🙂 Меня последняя ситуация тоже интересует . Нарисуйте.
http://24rus.wordpress.com/2013/09/08/%d0%bc%d0%b0%d0%b3%d0%b8%d1%8f-%d1%81-%d0%be%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%ba%d0%be%d0%b9-%d0%bf%d0%b0%d0%ba%d0%b5%d1%82%d0%be%d0%b2-%d1%81-%d0%bd%d1%83%d0%b6%d0%bd%d0%be%d0%b3%d0%be-ip/
Не оно разве?
Оно, правда со своей ситуацией сразу не совсем соотнес. Тема не совсем полная.
Спасибо. Отписался там со своим вопросом.