Я долго просматривал форум, и вроде бы не нашел описания ситуации, в которую я попал.Имеем Cisco 3725 Router, который динамически транслирует адреса с перегрузкой (overload) из двух не перекрывающихся подсетей (на внутренних интерфейсах роутера) на внешний интерфейс, смотрящий в Интернет.
В обеих подсетях установлены почтовые серверы.Соответственно, для них на роутере проброшен статический NAT по всем портам.
ip nat inside source list 1 interface FastEthernet0/1 overload - NAT для внутреннего интерфейса 1
ip nat inside source list 2 interface FastEthernet0/1 overload - NAT для внутреннего интерфейса 2ip nat inside source static 192.168.0.1 xxx.xxx.xxx.xxx extendable - статическая трансляция локального IP-адреса из сети 1 сервера в глобальный
ip nat inside source static 192.168.0.90 xxx.xxx.xxx.xxy extendable - статическая трансляция локального IP-адреса из сети 2 сервера в глобальныйКонтроль доступа к серверам производится через ACL, накладываемые на внешний порт роутера.
Дальше начались грабли, касающиеся реверсивного просмотра PTR-записей на DNS-сервере, находящемся внутри локальной сети 2, на котором в зонах пробиты оба почтовых сервера.
Запросы к DNS-серверу транслируются по следующим правилам:ip nat inside source static tcp 192.168.0.92 53 xxx.xxx.xxx.xxz 53 extendable
ip nat inside source static udp 192.168.0.92 53 xxx.xxx.xxx.xxz 53 extendable
1 грабля [решенная]:
Динамический NAT превалирует над статическим, поэтому в ACL 1 и ACL 2 пришлось прописать строчкиaccess-list 1 deny 192.168.0.1
access-list 2 deny 192.168.0.90Чтобы трансляция адресов производилась исключительно через статику.
2 грабля [нерешенная]:
С ужасом обнаружил, что транслируются не только заголовки пакета, но и адреса, указанные в его теле. Причем трансляция заголовков идет по правилам для DNS-сервера, а трансляция в теле - по правилам для почтовых серверов.Как выяснил:
На запрос PTR-записей почтовых серверов из-вне сети DNS-сервер продолжал отвечать, что таких записей не существует, несмотря на корректную настройку зоны.
Cоздал вторую PTR-зону с нереальными адресами серверов. DNS-сервер начал корректно отвечать на запросы PTR-записей из-вне сети, выдавая с помощью NAT реальные IP-адреса.Тем не менее, считаю, что это не выход, поскольку зона должна реплицироваться к провайдеру, а плюнуть на PTR-записи я не могу, в частности, поскольку по ним осуществляется проверка существования почтовых серверов в рамках борьбы со спамом - то есть в данный момент почта уходит, но не во все домены.
В связи с этим у меня два вопроса:
1. Если трансляция адресов в теле пакета является фичей IOS`а (12.3 IPVOICE-M), то можно ли ее отключить и если можно, то как?
2. Буду признателен, если изложите идеи решения проблемы.
Если я пропустил какой-либо пост с решением аналогичного вопроса - не судите строго - я честно просматривал форум и статьи, используя поиск.
Всё правильно. Именно так оно и должно работать.If the DNS message is a query for a name to match a known IP address (a reverse lookup), NAT examines its table for a match to the address in the Question section. Again, either a match is found and the address is translated, or the message is dropped.
(Routing TCP/IP, vol. II)Это к вопросу, почему "на запрос PTR-записей почтовых серверов из-вне сети DNS-сервер продолжал отвечать, что таких записей не существует, несмотря на корректную настройку зоны". Вот именно потому, что таких трансляций в таблице не было. Стоило вам создать "вторую PTR-зону с нереальными адресами", как они появились, и все заработало.
Думаю, вам надо немного поменять ваш дизайн. Трансляция записей A и PTR это фича NATа, и по-моему, неотключаемая.
>Всё правильно. Именно так оно и должно работать.
>
>If the DNS message is a query for a name to match
>a known IP address (a reverse lookup), NAT examines its table
>for a match to the address in the Question section. Again,
>either a match is found and the address is translated, or
>the message is dropped.
>(Routing TCP/IP, vol. II)
>
>Это к вопросу, почему "на запрос PTR-записей почтовых серверов из-вне сети DNS-сервер
>продолжал отвечать, что таких записей не существует, несмотря на корректную настройку
>зоны". Вот именно потому, что таких трансляций в таблице не было.
>Стоило вам создать "вторую PTR-зону с нереальными адресами", как они появились,
>и все заработало.
>Думаю, вам надо немного поменять ваш дизайн. Трансляция записей A и PTR
>это фича NATа, и по-моему, неотключаемая.Спасибо за оперативный ответ. В таком случае, не предложите ли варианты изменения дизайна, поскольку после двух дней биения головой об стол в голову ничего с ходу не приходит. А "прыгать" уже надо.
>Спасибо за оперативный ответ. В таком случае, не предложите ли варианты изменения
>дизайна, поскольку после двух дней биения головой об стол в голову
>ничего с ходу не приходит. А "прыгать" уже надо.Напишите мне на почту поподробнее, пожалуйста. Если можно, изобразите графически, что у вас сейчас. Это чтобы мне стало совсем все понятно по поводу вашего текущего дизайна.
Еще раз спасибо. Проблема оказалась решаемая.Достаточно добавить параметр no-payload к правилу трансляции для DNS-сервера:
ip nat inside source static 192.168.0.92 xxx.xxx.xxx.xxz no-payload
P.S. Гордюсь, поскольку нашел сам без подсказок со стороны %)
>Еще раз спасибо. Проблема оказалась решаемая.
>
>Достаточно добавить параметр no-payload к правилу трансляции для DNS-сервера:
>
>ip nat inside source static 192.168.0.92 xxx.xxx.xxx.xxz no-payload
>
>P.S. Гордюсь, поскольку нашел сам без подсказок со стороны %)Поздравляю :)
А про no-payload я и не знал, спасибо! теперь буду знать.