Есть шлюз на котором крутится и named, но запросов стало много, поэтому нужно чтоб юзеры работали с другим серваком ДНС. Как с помощью iptables настроить переброс запросов на другой сервак, ато пока смениш всем ДНС много времени пройдёт, а надо уже сейчас снять нагрузку.
>Есть шлюз на котором крутится и named, но запросов стало много, поэтому
>нужно чтоб юзеры работали с другим серваком ДНС. Как с помощью
>iptables настроить переброс запросов на другой сервак, ато пока смениш всем
>ДНС много времени пройдёт, а надо уже сейчас снять нагрузку.DNAT
>>Есть шлюз на котором крутится и named, но запросов стало много, поэтому
>>нужно чтоб юзеры работали с другим серваком ДНС. Как с помощью
>>iptables настроить переброс запросов на другой сервак, ато пока смениш всем
>>ДНС много времени пройдёт, а надо уже сейчас снять нагрузку.
>
>DNATА можно пример? Ато я пробовал, но не получается у меня.
>>>Есть шлюз на котором крутится и named, но запросов стало много, поэтому
>>>нужно чтоб юзеры работали с другим серваком ДНС. Как с помощью
>>>iptables настроить переброс запросов на другой сервак, ато пока смениш всем
>>>ДНС много времени пройдёт, а надо уже сейчас снять нагрузку.
>>
>>DNAT
>
>А можно пример? Ато я пробовал, но не получается у меня.http://www.opennet.me/docs/RUS/iptables/#DNATTARGET
и обязательно прочитать то что ниже таблицы.
если и после этого не получится , то показывайте что сделали с описанием из какой подсети запросы и куда пробрасывать
>[оверквотинг удален]
>>>DNAT
>>
>>А можно пример? Ато я пробовал, но не получается у меня.
>
>http://www.opennet.me/docs/RUS/iptables/#DNATTARGET
>
>и обязательно прочитать то что ниже таблицы.
>
>если и после этого не получится , то показывайте что сделали с
>описанием из какой подсети запросы и куда пробрасыватьВот что я сделал:
iptables -t nat -D PREROUTING -d 10.1.1.1 -p tcp --dport 53 -j DNAT --to-destination 10.1.1.100
подсеть 10.0.0.0/8, у всех ДНС сервер 10.1.1.1
Новый ДНС сервак на 10.1.1.100.
>[оверквотинг удален]
>>и обязательно прочитать то что ниже таблицы.
>>
>>если и после этого не получится , то показывайте что сделали с
>>описанием из какой подсети запросы и куда пробрасывать
>
>Вот что я сделал:
>
>iptables -t nat -D PREROUTING -d 10.1.1.1 -p tcp --dport
>53 -j DNAT --to-destination 10.1.1.100
>-D это удалить правило, добавлять -A
запросы на разрешение имен используют UDP, а не TCP>подсеть 10.0.0.0/8, у всех ДНС сервер 10.1.1.1
>Новый ДНС сервак на 10.1.1.100.Новый ДНС сервак получается в подсети клиентов, понадобится еще и SNAT
прочитайте то что по ссылке, там ниже таблицы описывается случай похожий на ваш
>[оверквотинг удален]
>-D это удалить правило, добавлять -A
>запросы на разрешение имен используют UDP, а не TCP
>
>>подсеть 10.0.0.0/8, у всех ДНС сервер 10.1.1.1
>>Новый ДНС сервак на 10.1.1.100.
>
>Новый ДНС сервак получается в подсети клиентов, понадобится еще и SNAT
>
>прочитайте то что по ссылке, там ниже таблицы описывается случай похожий на
>вашЯ и ставол -А, то я случайно нето скопировал.
Сервак находится не в подсети клиентов, это я так написал что используется 10,0,0,0/8, а в этой подсети у меня много более мелких.
Щас попробую ещё раз прочитать.
>[оверквотинг удален]
>-D это удалить правило, добавлять -A
>запросы на разрешение имен используют UDP, а не TCP
>
>>подсеть 10.0.0.0/8, у всех ДНС сервер 10.1.1.1
>>Новый ДНС сервак на 10.1.1.100.
>
>Новый ДНС сервак получается в подсети клиентов, понадобится еще и SNAT
>
>прочитайте то что по ссылке, там ниже таблицы описывается случай похожий на
>вашЯ вот думаю, ведь все эти действия выполняются в таблице NAT, а у меня всё в локальной сети и эту таблицу естественно не проходят. Может тогда это не получится?
>[оверквотинг удален]
>-D это удалить правило, добавлять -A
>запросы на разрешение имен используют UDP, а не TCP
>
>>подсеть 10.0.0.0/8, у всех ДНС сервер 10.1.1.1
>>Новый ДНС сервак на 10.1.1.100.
>
>Новый ДНС сервак получается в подсети клиентов, понадобится еще и SNAT
>
>прочитайте то что по ссылке, там ниже таблицы описывается случай похожий на
>вашТам есть пример:
iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT --to-destination $HTTP_IP
Действительно похожий, но тут сам шлюз выступает клиеном и используется цепочка OUTPUT, а у меня шлюз выступает сервером и нужно использовать цепочку INPUT, а DNAT не работает с данной цепочкой. Что делать?
>Что делать?Прочитать таки это руководство с начала, причем внимательно ибо с порядком прохождения цепочек и таблиц ты не разобрался. Не вижу смысла копипастить сюда всю схему или пересказывать своими словами.
>[оверквотинг удален]
>>
>>прочитайте то что по ссылке, там ниже таблицы описывается случай похожий на
>>ваш
>
>Там есть пример:
>iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j
>DNAT --to-destination $HTTP_IP
>Действительно похожий, но тут сам шлюз выступает клиеном и используется цепочка OUTPUT,
>а у меня шлюз выступает сервером и нужно использовать цепочку INPUT,
>а DNAT не работает с данной цепочкой. Что делать?как уже сказали , прочитайте всю документацию.
все таки так как и начинали, с помощью DNAT перенаправляете запрос на новый сервер.
как пойдет ответ с нового сервера зависит от таблиц маршрутизации, которые на новом сервере, поэтому что бы ответ гарантированно проходил через старый сервер, а иначе клиент ответ не примет, на старом сервере сделайте и SNAT.
при указании , в вопросах, адресов и масок пишите их логически ближе к используемым иначе ответ может не подойти к вашей реальности
>[оверквотинг удален]
>все таки так как и начинали, с помощью DNAT перенаправляете запрос на
>новый сервер.
>
>как пойдет ответ с нового сервера зависит от таблиц маршрутизации, которые на
>новом сервере, поэтому что бы ответ гарантированно проходил через старый сервер,
>а иначе клиент ответ не примет, на старом сервере сделайте и
>SNAT.
>
>при указании , в вопросах, адресов и масок пишите их логически ближе
>к используемым иначе ответ может не подойти к вашей реальностиНаконецто я начал понимать.
Вот решил начать с более простого примера, перенаправить ping на другой сервак (точки специально поменяны на запятые):
1 сервак 10,123,123,4
2 сервак 10,123,123,5
мой комп 10,123,3,101Перенаправляю с первого сервака на второй:
iptables -t nat -A PREROUTING -s 10,123,3,101 -p icmp -j DNAT --to-destination 10,123,123,5
ну тоесть подменяю IP назначения
На втором серваке подменяю IP отвечающего сервака:
iptables -t nat -A POSTROUTING -d 10,123,3,101 -p icmp -j SNAT --to-source 10,123,123,4Вот какая выходит трасса:
Трассировка маршрута к 10,123,123,4 с максимальным числом прыжков 301 <1 мс <1 мс <1 мс 10,123,3,1
2 <1 мс <1 мс <1 мс 10,123,123,4
дальше превышены интервалыТ.е. получается что пакет пошёл дальше, на второй сервак и гдето там потерялся, подскажите в чём я ошибся.
>[оверквотинг удален]
>2 сервак 10,123,123,5
>мой комп 10,123,3,101
>
>Перенаправляю с первого сервака на второй:
>iptables -t nat -A PREROUTING -s 10,123,3,101 -p icmp -j
>DNAT --to-destination 10,123,123,5
>ну тоесть подменяю IP назначения
>На втором серваке подменяю IP отвечающего сервака:
>iptables -t nat -A POSTROUTING -d 10,123,3,101 -p icmp -j SNAT
>--to-source 10,123,123,4iptables -t nat -A POSTROUTING -d 10,123,123,5 -p icmp -j SNAT --to-source 10,123,123,4
>[оверквотинг удален]
>Трассировка маршрута к 10,123,123,4 с максимальным числом прыжков 30
>
> 1 <1 мс <1
>мс <1 мс 10,123,3,1
> 2 <1 мс <1
>мс <1 мс 10,123,123,4
>дальше превышены интервалы
>
>Т.е. получается что пакет пошёл дальше, на второй сервак и гдето там
>потерялся, подскажите в чём я ошибся.
>[оверквотинг удален]
>>Трассировка маршрута к 10,123,123,4 с максимальным числом прыжков 30
>>
>> 1 <1 мс <1
>>мс <1 мс 10,123,3,1
>> 2 <1 мс <1
>>мс <1 мс 10,123,123,4
>>дальше превышены интервалы
>>
>>Т.е. получается что пакет пошёл дальше, на второй сервак и гдето там
>>потерялся, подскажите в чём я ошибся.Сделал так, ничего не поменялось.
>Наконецто я начал понимать.А у меня создается впечатление, что вы окончательно запутались.
Не будем плодить лишних сущностей и вернемся к исходной задаче. Ваше правило
>iptables -t nat -D PREROUTING -d 10.1.1.1 -p tcp --dport 53 -j DNAT --to-destination 10.1.1.100
>подсеть 10.0.0.0/8, у всех ДНС сервер 10.1.1.1
>Новый ДНС сервак на 10.1.1.100.По /8 получается что сеть одна и нужен SNAT, если сети разные, но роут нежелателен или dns сервер отвечает только нашей машине, то опять таки нужен SNAT.
Добавляем проброс порта:
iptables -t nat -A PREROUTING -d 10.1.1.1 -p udp --dport 53 -j DNAT --to-destination 10.1.1.100После этого правила пакет из входящего(цепочка INPUT) становится транзитным(цепочка FORWARD). Убеждаемся что в FORWARD у нас ACCEPT, при необходимости добавляем
iptables -I FORWARD 1 -d 10.1.1.100 -p udp --dport 53 -j ACCEPTЕсли нужен SNAT то добавляем
iptables -t nat -A POSTROUTING -d 10.1.1.100 -p udp --dport 53 -j DNAT --to-source 10.1.1.1Итого порядок преобразований пакетов для dns запросов в формате (источник : назначение), для определенности пусть запрос идет от 10.0.0.5
(10.0.0.5 : 10.1.1.1) - запрос пришел на интерфейс
(10.0.0.5 : 10.1.1.100) - DNAT, запомнили 10.1.1.100->10.1.1.1
(10.1.1.1 : 10.1.1.100) - SNAT, запомнили 10.1.1.1->10.0.0.5
запрос ушел на 10.1.1.100
(10.1.1.100 : 10.1.1.1) - ответ на запрос пришел с 10.1.1.100
(10.1.1.1 : 10.1.1.1) - обратный DNAT, вспоминаем 10.1.1.100->10.1.1.1
(10.1.1.1 : 10.0.0.5) - обратный SNAT, вспоминаем 10.1.1.1->10.0.0.5
ответ ушел на 10.0.0.5И все-таки почитайте руководство.
SNAT и DNAT - делайте на одном (старом) сервере
>SNAT и DNAT - делайте на одном (старом) сервереСделал так, получилось, пинг пошёл. Спасибо.
>[оверквотинг удален]
>(10.0.0.5 : 10.1.1.1) - запрос пришел на интерфейс
>(10.0.0.5 : 10.1.1.100) - DNAT, запомнили 10.1.1.100->10.1.1.1
>(10.1.1.1 : 10.1.1.100) - SNAT, запомнили 10.1.1.1->10.0.0.5
>запрос ушел на 10.1.1.100
>(10.1.1.100 : 10.1.1.1) - ответ на запрос пришел с 10.1.1.100
>(10.1.1.1 : 10.1.1.1) - обратный DNAT, вспоминаем 10.1.1.100->10.1.1.1
>(10.1.1.1 : 10.0.0.5) - обратный SNAT, вспоминаем 10.1.1.1->10.0.0.5
>ответ ушел на 10.0.0.5
>
>И все-таки почитайте руководство.Идею понял, но возник вопрос, тут описан метот когда мне известен IP клиента, а если клиенов много, надо делать правила универсальные, для подсети, ато как запомнить откого пришёл запрос если мы меняем отправителя?
Я поставил конкретный ip для _иллюстрации_, DNAT и SNAT сами запоминают ip и порты, сами их восстанавливают.
>Есть шлюз на котором крутится и named, но запросов стало много, поэтому
>нужно чтоб юзеры работали с другим серваком ДНС. Как с помощью
>iptables настроить переброс запросов на другой сервак, ато пока смениш всем
>ДНС много времени пройдёт, а надо уже сейчас снять нагрузку.зачем это делать на уровне ip?
по моему горазда быстрее и проще сделать это средствами named - forwarding
как бонус получаем отказоустойчивость и кеширование
>>Есть шлюз на котором крутится и named, но запросов стало много, поэтому
>>нужно чтоб юзеры работали с другим серваком ДНС. Как с помощью
>>iptables настроить переброс запросов на другой сервак, ато пока смениш всем
>>ДНС много времени пройдёт, а надо уже сейчас снять нагрузку.
>
>зачем это делать на уровне ip?
>по моему горазда быстрее и проще сделать это средствами named - forwarding
>
>как бонус получаем отказоустойчивость и кешированиеА как это сделать, подскажи.
И снизится тогда нагрузка на основной сервак или нет?
>[оверквотинг удален]
>>>iptables настроить переброс запросов на другой сервак, ато пока смениш всем
>>>ДНС много времени пройдёт, а надо уже сейчас снять нагрузку.
>>
>>зачем это делать на уровне ip?
>>по моему горазда быстрее и проще сделать это средствами named - forwarding
>>
>>как бонус получаем отказоустойчивость и кеширование
>
>А как это сделать, подскажи.
>И снизится тогда нагрузка на основной сервак или нет?http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edit...
>[оверквотинг удален]
>>>
>>>зачем это делать на уровне ip?
>>>по моему горазда быстрее и проще сделать это средствами named - forwarding
>>>
>>>как бонус получаем отказоустойчивость и кеширование
>>
>>А как это сделать, подскажи.
>>И снизится тогда нагрузка на основной сервак или нет?
>
>http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edit...Так это просто настроить чтоб он все данные брал с другого сервака, так у меня так и работает, но нагрузка то в этом случае всёравно ложится на тот сервак кто на запросы отвечает.
>[оверквотинг удален]
>>>>как бонус получаем отказоустойчивость и кеширование
>>>
>>>А как это сделать, подскажи.
>>>И снизится тогда нагрузка на основной сервак или нет?
>>
>>http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edit...
>
>Так это просто настроить чтоб он все данные брал с другого сервака,
>так у меня так и работает, но нагрузка то в этом
>случае всёравно ложится на тот сервак кто на запросы отвечает.Учи матчасть. Сервак грузят рекурсивные запросы, при использовании форвардинга рекурсивные запросы будет резолвить форвардер.
>[оверквотинг удален]
>>>нужно чтоб юзеры работали с другим серваком ДНС. Как с помощью
>>>iptables настроить переброс запросов на другой сервак, ато пока смениш всем
>>>ДНС много времени пройдёт, а надо уже сейчас снять нагрузку.
>>
>>зачем это делать на уровне ip?
>>по моему горазда быстрее и проще сделать это средствами named - forwarding
>>
>>как бонус получаем отказоустойчивость и кеширование
>
>А как это сделать, подскажи.Читай маны по бинду на isc.org, ищи опцию forwarders.
>И снизится тогда нагрузка на основной сервак или нет?Снизится, ибо твой сервак будет только кешировать (при условии стабильной работы форвардеров), а основная масса рекурсивных запросов ляжет на форвардеров.
Если запросов реально много, то желательно увеличить размер кеша бинда и при необходимости добить памяти в комп.