URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 52963
[ Назад ]

Исходное сообщение
"ip tables и iproute2"

Отправлено V.Pasashnikov , 01-Фев-05 17:04 
Сначала небольшое описание. Есть машина с двумя интерфейсами: на eth0 (3 адреса) 10.1.1.1/24, 10.2.1.1/24, 10.3.1.1/24, на eth1 10.10.1.1/24.

Далее, делается DNAT с помощью iptables с внешнего интерфейса на сеть за eth1. Соединение может придти с трёх разных роутеров (10.1.1.2, 10.2.1.2, 10.3.1.2), за этирми роутерами внешний мир (192.168.0.0/24). Классически это решается с помощью policy route (пакет iproute2).

Итак, путь первого пакета:
1. Syn 192.168.0.1->10.1.1.1
2. Syn 10.10.1.1->10.10.1.10
3. Syn,Ack 10.10.1.10->10.10.1.1
4. Syn,Ack 10.10.1.1->????

Куда? Ибо если на первом шаге отработал DNAT, после него было принято решении о роутинге. А вот на 4 шаге адрес 10.10.1.1 будет внесён в пакет, уже после принятия решения о роутинге. Т.е. policy routing будет видеть ещё внутренний адрес.

Поэтому будет принято не верное решение о роутинге.

1. Да, есть модуль CONNTRACK для iptables, решающий данную проблему. Но, у меня нет возможности его поставить.
2. Отправлять на какой либо другой маршрутер с тем, что бы он уже делал policy routing. Тоже не подходит, ввиду его отсутствия.
3. Можно сделать маршрут на 127.0.0.1 для пакетов с source адресом из 10.10.1.0/24, с тем, что бы пакет прошёл ещё раз цепочки и было принято правильное решение о роутинге. Но почему-то это приводит к тому, что на lo пакету цикляться, и умирают в виду истечения ttl.

Вопрос? Ввиду отсутствия других очевидных вариантов, как поправить вариант 3. Или хотя бы объясните где проблема, я уже сам додумаю решение.

По мылу готов предоставить более развёрнутое описание и сам файл конфигурации iptables.


Содержание

Сообщения в этом обсуждении
"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 12:19 
Добрый день,
Люди неужели ждесь нету спецов, способных оказать помощь?

"ip tables и iproute2"
Отправлено Beginner , 02-Фев-05 16:40 
>Добрый день,
>Люди неужели ждесь нету спецов, способных оказать помощь?
Не понял проблемы. Ну DNAT, а полиси-роутинг причем?

"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 16:42 
>>Добрый день,
>>Люди неужели ждесь нету спецов, способных оказать помощь?
>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
Тогда скажи куда пойдёт пакет на шаге 4?

"ip tables и iproute2"
Отправлено Beginner , 02-Фев-05 16:48 
>>>Добрый день,
>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>Тогда скажи куда пойдёт пакет на шаге 4?

Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT


"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 16:51 
>>>>Добрый день,
>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>Тогда скажи куда пойдёт пакет на шаге 4?
>
>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>
Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а только потом будет подменён адрес. Соответственно, пакет будет роутиться , а полиси роутинг принимать решение, по неправильному соурс адресу.


"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 16:53 
>>>>>Добрый день,
>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>
>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>
>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>полиси роутинг принимать решение, по неправильному соурс адресу.
Весь вопрос в том, как ещё раз принять решение о роутинге, после замены соурс адреса.


"ip tables и iproute2"
Отправлено Beginner , 02-Фев-05 16:54 
>>>>>Добрый день,
>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>
>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>
>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>полиси роутинг принимать решение, по неправильному соурс адресу.

Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE значит ДО, ROUTING - маршрутизация). Вопрос снят?


"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 16:56 
>>>>>>Добрый день,
>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>
>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>
>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>полиси роутинг принимать решение, по неправильному соурс адресу.
>
>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>значит ДО, ROUTING - маршрутизация). Вопрос снят?

НЕА:)

Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING, всё ок. Но вот обратный пакет когда идёт, он менятеся в цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и здравым смыслом. И вот тут, то и возникает проблема!


"ip tables и iproute2"
Отправлено Beginner , 02-Фев-05 17:04 
>>>>>>>Добрый день,
>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>
>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>
>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>
>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>
>НЕА:)
>
>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>здравым смыслом. И вот тут, то и возникает проблема!

Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то ответ изначально направлен на правильный адрес и через SNAT не проходит


"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 17:10 
>>>>>>>>Добрый день,
>>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>>
>>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>>
>>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>>
>>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>>
>>НЕА:)
>>
>>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>>здравым смыслом. И вот тут, то и возникает проблема!
>
>Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то
>ответ изначально направлен на правильный адрес и через SNAT не проходит
>
Это так. Но ведь для исходящего пакета в п. 3. SRC адрес будет 10.10.1.10. Так? Соответственно, где то этот адрес должен будет замениться на 10.1.1.1. Где это произойдёт?

"ip tables и iproute2"
Отправлено Beginner , 02-Фев-05 17:19 
>>>>>>>>>Добрый день,
>>>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>>>
>>>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>>>
>>>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>>>
>>>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>>>
>>>НЕА:)
>>>
>>>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>>>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>>>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>>>здравым смыслом. И вот тут, то и возникает проблема!
>>
>>Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то
>>ответ изначально направлен на правильный адрес и через SNAT не проходит
>>
>Это так. Но ведь для исходящего пакета в п. 3. SRC адрес
>будет 10.10.1.10. Так? Соответственно, где то этот адрес должен будет замениться
>на 10.1.1.1. Где это произойдёт?


В цепочке POSTROUTING. Я не понял задачи. В чем проблема? В процессе маршрутизации используется адрес хоста с которого идет пакет 10.10.1.10 и адрес на который идет хх.хх.хх.хх.


"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 17:23 
>>>>>>>>>>Добрый день,
>>>>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>>>>
>>>>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>>>>
>>>>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>>>>
>>>>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>>>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>>>>
>>>>НЕА:)
>>>>
>>>>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>>>>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>>>>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>>>>здравым смыслом. И вот тут, то и возникает проблема!
>>>
>>>Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то
>>>ответ изначально направлен на правильный адрес и через SNAT не проходит
>>>
>>Это так. Но ведь для исходящего пакета в п. 3. SRC адрес
>>будет 10.10.1.10. Так? Соответственно, где то этот адрес должен будет замениться
>>на 10.1.1.1. Где это произойдёт?
>
>
>В цепочке POSTROUTING. Я не понял задачи. В чем проблема? В процессе
>маршрутизации используется адрес хоста с которого идет пакет 10.10.1.10 и адрес
>на который идет хх.хх.хх.хх.

правильно, поэтому будет использоват шлюз по умолчанию (т.к. xx.xx.xx.xx нет в нашей таблице). А хочется, что бы пакет ушёл с через то же роутер, через который пришёл!!!


"ip tables и iproute2"
Отправлено Beginner , 02-Фев-05 17:31 
>>>>>>>>>>>Добрый день,
>>>>>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>>>>>
>>>>>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>>>>>
>>>>>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>>>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>>>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>>>>>
>>>>>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>>>>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>>>>>
>>>>>НЕА:)
>>>>>
>>>>>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>>>>>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>>>>>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>>>>>здравым смыслом. И вот тут, то и возникает проблема!
>>>>
>>>>Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то
>>>>ответ изначально направлен на правильный адрес и через SNAT не проходит
>>>>
>>>Это так. Но ведь для исходящего пакета в п. 3. SRC адрес
>>>будет 10.10.1.10. Так? Соответственно, где то этот адрес должен будет замениться
>>>на 10.1.1.1. Где это произойдёт?
>>
>>
>>В цепочке POSTROUTING. Я не понял задачи. В чем проблема? В процессе
>>маршрутизации используется адрес хоста с которого идет пакет 10.10.1.10 и адрес
>>на который идет хх.хх.хх.хх.
>
>правильно, поэтому будет использоват шлюз по умолчанию (т.к. xx.xx.xx.xx нет в нашей
>таблице). А хочется, что бы пакет ушёл с через то же
>роутер, через который пришёл!!!
Помещай его в SNAT на роутерах. Будешь иметь такой результат.



"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 17:35 
>>>>>>>>>>>>Добрый день,
>>>>>>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>>>>>>
>>>>>>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>>>>>>
>>>>>>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>>>>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>>>>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>>>>>>
>>>>>>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>>>>>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>>>>>>
>>>>>>НЕА:)
>>>>>>
>>>>>>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>>>>>>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>>>>>>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>>>>>>здравым смыслом. И вот тут, то и возникает проблема!
>>>>>
>>>>>Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то
>>>>>ответ изначально направлен на правильный адрес и через SNAT не проходит
>>>>>
>>>>Это так. Но ведь для исходящего пакета в п. 3. SRC адрес
>>>>будет 10.10.1.10. Так? Соответственно, где то этот адрес должен будет замениться
>>>>на 10.1.1.1. Где это произойдёт?
>>>
>>>
>>>В цепочке POSTROUTING. Я не понял задачи. В чем проблема? В процессе
>>>маршрутизации используется адрес хоста с которого идет пакет 10.10.1.10 и адрес
>>>на который идет хх.хх.хх.хх.
>>
>>правильно, поэтому будет использоват шлюз по умолчанию (т.к. xx.xx.xx.xx нет в нашей
>>таблице). А хочется, что бы пакет ушёл с через то же
>>роутер, через который пришёл!!!
>Помещай его в SNAT на роутерах. Будешь иметь такой результат.

О каком SNATE речь??? Пакет пойдёт на дефаулт роутер. Т.е. на единственный роутер для всех трёх диапазонов (10.1.1.1/24, 10.2.1.1/24, 10.3.1.1/24). Но роутеров три, и не случайно. А для увеличения надёжности. Поэтому хочется что бы пакет сразу уходил куда нужно.


"ip tables и iproute2"
Отправлено Beginner , 02-Фев-05 17:38 
>>>>>>>>>>>>>Добрый день,
>>>>>>>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>>>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>>>>>>>
>>>>>>>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>>>>>>>
>>>>>>>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>>>>>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>>>>>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>>>>>>>
>>>>>>>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>>>>>>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>>>>>>>
>>>>>>>НЕА:)
>>>>>>>
>>>>>>>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>>>>>>>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>>>>>>>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>>>>>>>здравым смыслом. И вот тут, то и возникает проблема!
>>>>>>
>>>>>>Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то
>>>>>>ответ изначально направлен на правильный адрес и через SNAT не проходит
>>>>>>
>>>>>Это так. Но ведь для исходящего пакета в п. 3. SRC адрес
>>>>>будет 10.10.1.10. Так? Соответственно, где то этот адрес должен будет замениться
>>>>>на 10.1.1.1. Где это произойдёт?
>>>>
>>>>
>>>>В цепочке POSTROUTING. Я не понял задачи. В чем проблема? В процессе
>>>>маршрутизации используется адрес хоста с которого идет пакет 10.10.1.10 и адрес
>>>>на который идет хх.хх.хх.хх.
>>>
>>>правильно, поэтому будет использоват шлюз по умолчанию (т.к. xx.xx.xx.xx нет в нашей
>>>таблице). А хочется, что бы пакет ушёл с через то же
>>>роутер, через который пришёл!!!
>>Помещай его в SNAT на роутерах. Будешь иметь такой результат.
>
>О каком SNATE речь??? Пакет пойдёт на дефаулт роутер. Т.е. на единственный
>роутер для всех трёх диапазонов (10.1.1.1/24, 10.2.1.1/24, 10.3.1.1/24). Но роутеров три,
>и не случайно. А для увеличения надёжности. Поэтому хочется что бы
>пакет сразу уходил куда нужно.

На каждом из этих трех роутеров поставь SNAT или MASQUERADE. Не на том над которым ты ломаешь голову. Не получается все сделать в 1 ящике - расширяй поле деятельности


"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 17:41 
>>>>>>>>>>>>>>Добрый день,
>>>>>>>>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>>>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>>>>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>>>>>>>>
>>>>>>>>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>>>>>>>>
>>>>>>>>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>>>>>>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>>>>>>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>>>>>>>>
>>>>>>>>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>>>>>>>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>>>>>>>>
>>>>>>>>НЕА:)
>>>>>>>>
>>>>>>>>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>>>>>>>>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>>>>>>>>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>>>>>>>>здравым смыслом. И вот тут, то и возникает проблема!
>>>>>>>
>>>>>>>Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то
>>>>>>>ответ изначально направлен на правильный адрес и через SNAT не проходит
>>>>>>>
>>>>>>Это так. Но ведь для исходящего пакета в п. 3. SRC адрес
>>>>>>будет 10.10.1.10. Так? Соответственно, где то этот адрес должен будет замениться
>>>>>>на 10.1.1.1. Где это произойдёт?
>>>>>
>>>>>
>>>>>В цепочке POSTROUTING. Я не понял задачи. В чем проблема? В процессе
>>>>>маршрутизации используется адрес хоста с которого идет пакет 10.10.1.10 и адрес
>>>>>на который идет хх.хх.хх.хх.
>>>>
>>>>правильно, поэтому будет использоват шлюз по умолчанию (т.к. xx.xx.xx.xx нет в нашей
>>>>таблице). А хочется, что бы пакет ушёл с через то же
>>>>роутер, через который пришёл!!!
>>>Помещай его в SNAT на роутерах. Будешь иметь такой результат.
>>
>>О каком SNATE речь??? Пакет пойдёт на дефаулт роутер. Т.е. на единственный
>>роутер для всех трёх диапазонов (10.1.1.1/24, 10.2.1.1/24, 10.3.1.1/24). Но роутеров три,
>>и не случайно. А для увеличения надёжности. Поэтому хочется что бы
>>пакет сразу уходил куда нужно.
>
>На каждом из этих трех роутеров поставь SNAT или MASQUERADE. Не на
>том над которым ты ломаешь голову. Не получается все сделать в
>1 ящике - расширяй поле деятельности

Таки проблема в том, что например роутер 10.1.1.1 установлен как роутер по умолчанию для моего. Соответственно все пакеты будут уходить на него. Но не на остальные два!


"ip tables и iproute2"
Отправлено Beginner , 02-Фев-05 17:44 
>>>>>>>>>>>>>>>Добрый день,
>>>>>>>>>>>>>>>Люди неужели ждесь нету спецов, способных оказать помощь?
>>>>>>>>>>>>>>Не понял проблемы. Ну DNAT, а полиси-роутинг причем?
>>>>>>>>>>>>>Тогда скажи куда пойдёт пакет на шаге 4?
>>>>>>>>>>>>
>>>>>>>>>>>>Если не отвлекаться на полиси-роутинг, то на адрес заданный в цепочке DNAT
>>>>>>>>>>>>
>>>>>>>>>>>Угум. Вот только при DNAT'е сначало будет принято решение о роутинге, а
>>>>>>>>>>>только потом будет подменён адрес. Соответственно, пакет будет роутиться , а
>>>>>>>>>>>полиси роутинг принимать решение, по неправильному соурс адресу.
>>>>>>>>>>
>>>>>>>>>>Внимательно читаем... да хоть правило iptables! DNAT помещается в цепочку PREROUTING (PRE
>>>>>>>>>>значит ДО, ROUTING - маршрутизация). Вопрос снят?
>>>>>>>>>
>>>>>>>>>НЕА:)
>>>>>>>>>
>>>>>>>>>Проблема в том, что да DNAT подменяет адрес получателя в ценочке PREROUTING,
>>>>>>>>>всё ок. Но вот обратный пакет когда идёт, он менятеся в
>>>>>>>>>цепочке POSTROUTING! Этого нигде нет, но это так. Проверено экспериментом и
>>>>>>>>>здравым смыслом. И вот тут, то и возникает проблема!
>>>>>>>>
>>>>>>>>Обратный пакет не меняется! Поскольку у запроса исходящий адрес не меняется, то
>>>>>>>>ответ изначально направлен на правильный адрес и через SNAT не проходит
>>>>>>>>
>>>>>>>Это так. Но ведь для исходящего пакета в п. 3. SRC адрес
>>>>>>>будет 10.10.1.10. Так? Соответственно, где то этот адрес должен будет замениться
>>>>>>>на 10.1.1.1. Где это произойдёт?
>>>>>>
>>>>>>
>>>>>>В цепочке POSTROUTING. Я не понял задачи. В чем проблема? В процессе
>>>>>>маршрутизации используется адрес хоста с которого идет пакет 10.10.1.10 и адрес
>>>>>>на который идет хх.хх.хх.хх.
>>>>>
>>>>>правильно, поэтому будет использоват шлюз по умолчанию (т.к. xx.xx.xx.xx нет в нашей
>>>>>таблице). А хочется, что бы пакет ушёл с через то же
>>>>>роутер, через который пришёл!!!
>>>>Помещай его в SNAT на роутерах. Будешь иметь такой результат.
>>>
>>>О каком SNATE речь??? Пакет пойдёт на дефаулт роутер. Т.е. на единственный
>>>роутер для всех трёх диапазонов (10.1.1.1/24, 10.2.1.1/24, 10.3.1.1/24). Но роутеров три,
>>>и не случайно. А для увеличения надёжности. Поэтому хочется что бы
>>>пакет сразу уходил куда нужно.
>>
>>На каждом из этих трех роутеров поставь SNAT или MASQUERADE. Не на
>>том над которым ты ломаешь голову. Не получается все сделать в
>>1 ящике - расширяй поле деятельности
>
>Таки проблема в том, что например роутер 10.1.1.1 установлен как роутер по
>умолчанию для моего. Соответственно все пакеты будут уходить на него. Но
>не на остальные два!

То есть 10.2.1.1/24 тоже прописан через 10.1.1.1?
Я ушел.


"ip tables и iproute2"
Отправлено V.Pasashnikov , 02-Фев-05 17:48 
>>>На каждом из этих трех роутеров поставь SNAT или MASQUERADE. Не на
>>>том над которым ты ломаешь голову. Не получается все сделать в
>>>1 ящике - расширяй поле деятельности
>>
>>Таки проблема в том, что например роутер 10.1.1.1 установлен как роутер по
>>умолчанию для моего. Соответственно все пакеты будут уходить на него. Но
>>не на остальные два!
>
>То есть 10.2.1.1/24 тоже прописан через 10.1.1.1?
>Я ушел.
нет. Но т.к. стандартный алгоритм роутинга не может найди пути к xx.xx.xx.xx, то он отправляет в default. А для того что бы раскидать по двум остальным нужен пакет с уже подменённым src адресом и тот самы policy routing.


"ip tables и iproute2"
Отправлено jonatan , 02-Фев-05 17:58 
Если я все правильно понял, то
http://linux-ip.net/html/adv-multi-internet.html
Вся разница, что там два разных интерфейса со своими ip, а у тебя один и на нем несколько ip.

"ip tables и iproute2"
Отправлено V.Pasashnikov , 03-Фев-05 08:45 
>Если я все правильно понял, то
>http://linux-ip.net/html/adv-multi-internet.html
>Вся разница, что там два разных интерфейса со своими ip, а у
>тебя один и на нем несколько ip.


Да! Это решение:) Спасибо, огромное. Добавил в копилку.
Я ещё попробую побороть своё решение с lo интерфейсом, может чего и получиться.


"ip tables и iproute2"
Отправлено jonatan , 03-Фев-05 10:44 
Я еще раз подумал над твоей задачей и теперь сомневаюсь, что предложенный мной вариант будет работать. Я пробовал policy route и NAT на РАЗНЫХ машинах, а у тебя на одной. Поэтому предлагаю другое решение. Повесить на eth1 несколько адресов, например:
10.10.1.1/24
10.10.1.2/24
10.10.1.3/24
Далее правила DNAT
iptables -t nat -A PREROUTING -d 10.1.1.1 -j DNAT --to-destination 10.10.1.1
iptables -t nat -A PREROUTING -d 10.2.1.1 -j DNAT --to-destination 10.10.1.2
iptables -t nat -A PREROUTING -d 10.3.1.1 -j DNAT --to-destination 10.10.1.3
Т.о. в policy route можно раскидывать по таблицам на основе src 10.10.1.1, 10.10.1.2 и 10.10.1.3.
Попробуй.

"ip tables и iproute2"
Отправлено V.Pasashnikov , 03-Фев-05 11:14 
>Я еще раз подумал над твоей задачей и теперь сомневаюсь, что предложенный
>мной вариант будет работать. Я пробовал policy route и NAT на
>РАЗНЫХ машинах, а у тебя на одной. Поэтому предлагаю другое решение.
>Повесить на eth1 несколько адресов, например:
>10.10.1.1/24
>10.10.1.2/24
>10.10.1.3/24
>Далее правила DNAT
>iptables -t nat -A PREROUTING -d 10.1.1.1 -j DNAT --to-destination 10.10.1.1
>iptables -t nat -A PREROUTING -d 10.2.1.1 -j DNAT --to-destination 10.10.1.2
>iptables -t nat -A PREROUTING -d 10.3.1.1 -j DNAT --to-destination 10.10.1.3
>Т.о. в policy route можно раскидывать по таблицам на основе src 10.10.1.1,
>10.10.1.2 и 10.10.1.3.
>Попробуй.

Да, но это значит, что на каждой машине, что за интерфейсом eth1 требуется, по три ip адреса. А этого хотелось избежать.

Поэтому-то и возникла идея, что пакет с src из 10.10.1.0/24 роутить по дефаулту на 127.0.0.1, с тем что бы он ещё раз прошел всё цепочку PRE-FORWARD-POST без каких либо изменения в пакете. Соответственно будет принято правильное решение о маршрутизации. Так сказать cisco way.


"ip tables и iproute2"
Отправлено jonatan , 03-Фев-05 11:26 
Сори, но я тогда не понял задачи. Ты хочешь DNAT-ить всю подсеть 10.10.1.0/24? Зачем вообще тогда нужен NAT?

"ip tables и iproute2"
Отправлено V.Pasashnikov , 03-Фев-05 11:36 
>Сори, но я тогда не понял задачи. Ты хочешь DNAT-ить всю подсеть
>10.10.1.0/24? Зачем вообще тогда нужен NAT?

Есть сеть 10.10.1.0/24 в ней находяться всякие разные машины, типа вэб-серверов, и прочих серверов (на каждом сервере один ip). Есть очень важные и нужные торговые сервера. Есть три провайдера. Для каждого провайдера своя циска. Все они приходят на машуну которую мы сейчас обсуждаем. Есть публичные адреса серверов в сети каждого провайдера. Эти адреса подняты на eth0 моей машины. Поэтому нужен DNAT. Соответственно, что бы пакеты уходили туда откуда пришли нужен policy routing.


"ip tables и iproute2"
Отправлено jonatan , 03-Фев-05 13:04 
Понятно. Пока вижу два варианта.
1. Поставить второй роутер перед этим. На одном - policy routing, на другом - DNAT.
2. Использовать какой-нибудь редиректор и policy routing. Например, в xinetd есть redirect. Но тогда сервера в локалке будут видеть только локальный ip шлюза. Если нужны реальные ip в логах, то этот вариант не подходит.
Если еще что придумаю - сообщю. Найдешь свое решение - опиши, плиз.

"ip tables и iproute2"
Отправлено V.Pasashnikov , 03-Фев-05 13:45 
>Понятно. Пока вижу два варианта.
>1. Поставить второй роутер перед этим. На одном - policy routing, на
>другом - DNAT.
>2. Использовать какой-нибудь редиректор и policy routing. Например, в xinetd есть redirect.
>Но тогда сервера в локалке будут видеть только локальный ip шлюза.
>Если нужны реальные ip в логах, то этот вариант не подходит.
>
>Если еще что придумаю - сообщю. Найдешь свое решение - опиши, плиз.
>
Оба пройдены.
Хорошо. Как найду решение свистну.


"ip tables и iproute2"
Отправлено jonatan , 04-Фев-05 08:58 
Посмотри еще здесь.
http://www.netfilter.org/patch-o-matic/pom-extra.html#pom-ex...

This option adds a `ROUTE' target, which enables you to setup unusual
routes. For example, the ROUTE lets you route a received packet through
an interface or towards a host, even if the regular destination of the
packet is the router itself. The ROUTE target is also able to change the
incoming interface of a packet.


"ip tables и iproute2"
Отправлено V.Pasashnikov , 04-Фев-05 09:02 
>Посмотри еще здесь.
>http://www.netfilter.org/patch-o-matic/pom-extra.html#pom-ex...
>
>This option adds a `ROUTE' target, which enables you to setup unusual
>
>routes. For example, the ROUTE lets you route a received packet through
>
>an interface or towards a host, even if the regular destination of
>the
>packet is the router itself. The ROUTE target is also able to
>change the
>incoming interface of a packet.

Тоже видел. У меня в системе нет этого модуля. А компилить, не могу.


"ip tables и iproute2"
Отправлено Beginner , 04-Фев-05 09:13 
>>Сори, но я тогда не понял задачи. Ты хочешь DNAT-ить всю подсеть
>>10.10.1.0/24? Зачем вообще тогда нужен NAT?
>
>Есть сеть 10.10.1.0/24 в ней находяться всякие разные машины, типа вэб-серверов, и
>прочих серверов (на каждом сервере один ip). Есть очень важные и
>нужные торговые сервера. Есть три провайдера. Для каждого провайдера своя циска.
>Все они приходят на машуну которую мы сейчас обсуждаем. Есть публичные
>адреса серверов в сети каждого провайдера. Эти адреса подняты на eth0
>моей машины. Поэтому нужен DNAT. Соответственно, что бы пакеты уходили туда
>откуда пришли нужен policy routing.


Мдя...
А не проще поднять нормальную маршрутизацию? Тогда и уходить будет нормально, без всяких приблуд. Или там такие мраки что понять невозможно.
Или железо настолько слабое что не потянет?


"ip tables и iproute2"
Отправлено V.Pasashnikov , 04-Фев-05 09:32 
>>>Сори, но я тогда не понял задачи. Ты хочешь DNAT-ить всю подсеть
>>>10.10.1.0/24? Зачем вообще тогда нужен NAT?
>>
>>Есть сеть 10.10.1.0/24 в ней находяться всякие разные машины, типа вэб-серверов, и
>>прочих серверов (на каждом сервере один ip). Есть очень важные и
>>нужные торговые сервера. Есть три провайдера. Для каждого провайдера своя циска.
>>Все они приходят на машуну которую мы сейчас обсуждаем. Есть публичные
>>адреса серверов в сети каждого провайдера. Эти адреса подняты на eth0
>>моей машины. Поэтому нужен DNAT. Соответственно, что бы пакеты уходили туда
>>откуда пришли нужен policy routing.
>
>
>Мдя...
>А не проще поднять нормальную маршрутизацию? Тогда и уходить будет нормально, без
>всяких приблуд. Или там такие мраки что понять невозможно.
>Или железо настолько слабое что не потянет?
А что значит нормальная маршрутизация??? Не понимаю?


"ip tables и iproute2"
Отправлено jonatan , 04-Фев-05 09:39 
А ты не рассматривал вариант получения у провайдеров реальных адресов для серверов? Если да, то в чем причина отказа?

"ip tables и iproute2"
Отправлено V.Pasashnikov , 04-Фев-05 09:53 
>А ты не рассматривал вариант получения у провайдеров реальных адресов для серверов?
>Если да, то в чем причина отказа?

По моему трэд пошёл в неправильную сторону. Да у меня есть 3 сети, по одной от каждого провайдена и есть PI адреса.
Но беда в том, что Windows сервера не умеют полиси роутинг, поэтому мой девайс по прежнему будет нужен. Ну и плюс что бы не выставлять винды напрямую в инет.


"ip tables и iproute2"
Отправлено jonatan , 04-Фев-05 10:04 
Имея реальные ip никто не мешает тебе использовать роутер между Инетом и windows-серверами. Некоторые провайдеры специально выделяют дополнительную подсеть с маской 30 (для связи между cisco и роутером) помимо основной. Например, один из наших двух провайдеров sovintel сразу это предложил. Если пров дает одну подсеть используй на роутере proxy_arp (используем для второго провайдера). Проблем не вижу.

"ip tables и iproute2"
Отправлено V.Pasashnikov , 04-Фев-05 10:09 
>Имея реальные ip никто не мешает тебе использовать роутер между Инетом и
>windows-серверами. Некоторые провайдеры специально выделяют дополнительную подсеть с маской 30 (для
>связи между cisco и роутером) помимо основной. Например, один из наших
>двух провайдеров sovintel сразу это предложил. Если пров дает одну подсеть
>используй на роутере proxy_arp (используем для второго провайдера). Проблем не вижу.
>
:)
Я в курсе:) Но не хочу.:) Как профессор Преображенский. Не хочу.
Грубо говоря это будет не правильно. Нефиг в DMZ делать реальным адресам.

"ip tables и iproute2"
Отправлено jonatan , 04-Фев-05 10:28 
Дело хозяйское :)
Только вот почему реальные адреса в DMZ - неправильно, для меня загадка.