The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"SNAT & routing"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"SNAT & routing"  
Сообщение от vladimir.malyk email on 21-Окт-08, 10:30 
Есть 2 линка в интернет. На одном реальный ЙП(ppp0), на другом серый(eth1). Дефолтный шлюз на сером линке.

Нужно чтобы asterisk слал запросы через линк с реальным ЙП.

Делаю:

iptables -t mangle -A OUTPUT -d ! 192.168.0.0/255.255.255.0 -m owner --uid-owner asterisk -j MARK --set-mark 255

ip route add 88.88.88.88 dev ppp0 table i_ip
ip route add default via  88.88.88.88 dev ppp0 table i_ip
ip rule add fwmark 255 pri 100 table i_ip
ip rule add from 88.88.88.88 pri 200 table i_ip

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Пакеты от астериска уходят через ppp0, как и нужно, НО адрес источника у них не 88.88.88.88 а 192.168.254.2 (eth1, серый линк).

Как добиться SNAT на 88.88.88.88 для пакетов, идущих через ppp0?

iptables -t nat -A POSTROUTING -o ppp0 -j SNAT 88.88.88.88 дает тот же результат.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "SNAT & routing"  
Сообщение от reader (ok) on 21-Окт-08, 12:46 
>[оверквотинг удален]
>
>iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
>
>Пакеты от астериска уходят через ppp0, как и нужно, НО адрес источника
>у них не 88.88.88.88 а 192.168.254.2 (eth1, серый линк).
>
>Как добиться SNAT на 88.88.88.88 для пакетов, идущих через ppp0?
>
>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT 88.88.88.88 дает тот
>же результат.

iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 88.88.88.88
и убедится что пакеты не попадают в другое правило SNAT

iptables-save

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "SNAT & routing"  
Сообщение от PavelR (??) on 21-Окт-08, 14:01 
>[оверквотинг удален]
>>
>>Как добиться SNAT на 88.88.88.88 для пакетов, идущих через ppp0?
>>
>>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT 88.88.88.88 дает тот
>>же результат.
>
>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 88.88.88.88
>и убедится что пакеты не попадают в другое правило SNAT
>
>iptables-save

астериск имеет кучку опций, позволяющих указать, с какого адреса отправлять запросы.

Далее в силу вступает "сага о двух провайдерах", широко и многократно описанная на сайте.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "SNAT & routing"  
Сообщение от vldimir.malyk email(ok) on 21-Окт-08, 14:54 
>
>астериск имеет кучку опций, позволяющих указать, с какого адреса отправлять запросы.

назовите хоть одну :) я только bindaddr из похожего нашел, но это не то что нужно.

>
>Далее в силу вступает "сага о двух провайдерах", широко и многократно описанная
>на сайте.

этих "саг" я уже ворох пересмотрел. все вокруг да около, готового решения нет.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "SNAT & routing"  
Сообщение от PavelR (??) on 21-Окт-08, 16:12 
>>
>>астериск имеет кучку опций, позволяющих указать, с какого адреса отправлять запросы.
>
>назовите хоть одну :) я только bindaddr из похожего нашел, но это
>не то что нужно.
>

Специально для вас проверил:

при выставленном bindaddr для sip, соединения между устройствами проходят с указанного адреса, а не с адреса интерфейса, на котором устройства висят.

>>
>>Далее в силу вступает "сага о двух провайдерах", широко и многократно описанная
>>на сайте.
>
>этих "саг" я уже ворох пересмотрел. все вокруг да около, готового решения
>нет.

Готовые решения - у майкрософта и прочих вендоров.

А если не понятен принцип ip ru / ip ro - извините.
А там еще и флажки (fwmark) есть...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "SNAT & routing"  
Сообщение от vldimir.malyk email(ok) on 21-Окт-08, 16:43 
>[оверквотинг удален]
>>>астериск имеет кучку опций, позволяющих указать, с какого адреса отправлять запросы.
>>
>>назовите хоть одну :) я только bindaddr из похожего нашел, но это
>>не то что нужно.
>>
>
>Специально для вас проверил:
>
>при выставленном bindaddr для sip, соединения между устройствами проходят с указанного адреса,
>а не с адреса интерфейса, на котором устройства висят.

каюсь. действительно, именно так и есть.

>[оверквотинг удален]
>>>Далее в силу вступает "сага о двух провайдерах", широко и многократно описанная
>>>на сайте.
>>
>>этих "саг" я уже ворох пересмотрел. все вокруг да около, готового решения
>>нет.
>
>Готовые решения - у майкрософта и прочих вендоров.
>А если не понятен принцип ip ru / ip ro - извините.
>
>А там еще и флажки (fwmark) есть...

fwmark как раз работает - пакеты идут куда надо, но адрес отправителя в них стоит не тот. и как с этим бороться - не ясно.

в любом случае, с bindaddr проблема решается. спасибо за помощь!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "SNAT & routing"  
Сообщение от vldimir.malyk email(ok) on 21-Окт-08, 15:04 
>[оверквотинг удален]
>>Пакеты от астериска уходят через ppp0, как и нужно, НО адрес источника
>>у них не 88.88.88.88 а 192.168.254.2 (eth1, серый линк).
>>
>>Как добиться SNAT на 88.88.88.88 для пакетов, идущих через ppp0?
>>
>>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT 88.88.88.88 дает тот
>>же результат.
>
>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 88.88.88.88
>и убедится что пакеты не попадают в другое правило SNAT

пакеты в другое POSTROUTING правило не попадают. но с ppp0 идут с неправильным ip.

ощущение такое, что пакеты после OUTPUT сразу идут во внешку, хотя в документации написано обратное.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "SNAT & routing"  
Сообщение от reader (ok) on 21-Окт-08, 16:42 
>[оверквотинг удален]
>>>же результат.
>>
>>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 88.88.88.88
>>и убедится что пакеты не попадают в другое правило SNAT
>
>пакеты в другое POSTROUTING правило не попадают. но с ppp0 идут с
>неправильным ip.
>
>ощущение такое, что пакеты после OUTPUT сразу идут во внешку, хотя в
>документации написано обратное.

а если лог в самом начале POSTROUTING устроить?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "SNAT & routing"  
Сообщение от vldimir.malyk email(ok) on 21-Окт-08, 16:54 
>[оверквотинг удален]
>>>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 88.88.88.88
>>>и убедится что пакеты не попадают в другое правило SNAT
>>
>>пакеты в другое POSTROUTING правило не попадают. но с ppp0 идут с
>>неправильным ip.
>>
>>ощущение такое, что пакеты после OUTPUT сразу идут во внешку, хотя в
>>документации написано обратное.
>
>а если лог в самом начале POSTROUTING устроить?

устроил.
iptables -t nat -A POSTROUTING -o ppp0 -j LOG

один пакет в минуту:
Oct 21 15:50:08 gate kernel: IN= OUT=ppp0 SRC=192.168.254.2 DST=194.187.154.13 LEN=575 TOS=0x00 PREC=0x00 TTL=64 ID=24423 PROTO=UDP SPT=5060 DPT=63221 LEN=555
Oct 21 15:50:50 gate kernel: IN= OUT=ppp0 SRC=192.168.254.2 DST=194.187.154.13 LEN=539 TOS=0x00 PREC=0x00 TTL=64 ID=24424 PROTO=UDP SPT=5060 DPT=62877 LEN=519
Oct 21 15:51:08 gate kernel: IN= OUT=ppp0 SRC=192.168.254.2 DST=194.187.154.13 LEN=575 TOS=0x00 PREC=0x00 TTL=64 ID=24436 PROTO=UDP SPT=5060 DPT=63221 LEN=555

tcpdump -i ловит пакеты с неправильным йп десятками.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Решение проблемы."  
Сообщение от vldimir.malyk email(ok) on 21-Окт-08, 17:04 
>[оверквотинг удален]
>>
>>Как добиться SNAT на 88.88.88.88 для пакетов, идущих через ppp0?
>>
>>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT 88.88.88.88 дает тот
>>же результат.
>
>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 88.88.88.88
>и убедится что пакеты не попадают в другое правило SNAT
>
>iptables-save

Сабжевым способом решить проблемы с asterisk мне не удалось.

PavelR с подсказал альтернативный способ - использовать опцию bindaddr астериска. Asterisk шлет запросы через тот интерфейс, на который он забинден. Это не совсем то, что хотелось, но проблему решает.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Решение проблемы."  
Сообщение от PavelR (??) on 21-Окт-08, 18:19 
>[оверквотинг удален]
>>iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 88.88.88.88
>>и убедится что пакеты не попадают в другое правило SNAT
>>
>>iptables-save
>
>Сабжевым способом решить проблемы с asterisk мне не удалось.
>
>PavelR с подсказал альтернативный способ - использовать опцию bindaddr астериска. Asterisk шлет
>запросы через тот интерфейс, на который он забинден. Это не совсем
>то, что хотелось, но проблему решает.

Да нихрена не так. Шлет он через тот интерфейс, через который ему говорит таблица и правила маршрутизации.

У меня: внешний интерфейс, внешний айпи. Внутренний интерфейс, шлюзы.

Как будет связь между * и шлюзом, если пакеты с _адреса_ внешнего интерфейса пойдут во внешний интерфейс ? Правильно, никакая.


Пользуйтесь ip route.

Команды, с которых следует начать:

ip ru sh

ip ro sh table main
ip ro sh table default

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Решение проблемы."  
Сообщение от vldimir.malyk email(??) on 22-Окт-08, 10:13 
>>Asterisk шлет запросы через тот интерфейс, на который он забинден. Это не совсем
>>то, что хотелось, но проблему решает.
>
>Да нихрена не так. Шлет он через тот интерфейс, через который ему
>говорит таблица и правила маршрутизации.
>
>У меня: внешний интерфейс, внешний айпи. Внутренний интерфейс, шлюзы.
>
>Как будет связь между * и шлюзом, если пакеты с _адреса_ внешнего
>интерфейса пойдут во внешний интерфейс ? Правильно, никакая.

вот именно потому, что связи никакой нет, решение с bindaddr и подошло как временное.

>Пользуйтесь ip route.
>
>Команды, с которых следует начать:
>
>ip ru sh
>
>ip ro sh table main
>ip ro sh table default

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Решение проблемы."  
Сообщение от PavelR (??) on 22-Окт-08, 10:27 
>[оверквотинг удален]
>>Да нихрена не так. Шлет он через тот интерфейс, через который ему
>>говорит таблица и правила маршрутизации.
>>
>>У меня: внешний интерфейс, внешний айпи. Внутренний интерфейс, шлюзы.
>>
>>Как будет связь между * и шлюзом, если пакеты с _адреса_ внешнего
>>интерфейса пойдут во внешний интерфейс ? Правильно, никакая.
>
>вот именно потому, что связи никакой нет, решение с bindaddr и подошло
>как временное.

Это косяк настройки маршрутизации. _Не_всегда  надо отправлять пакеты с адреса сетевой карты в эту сетевую карту.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Решение проблемы."  
Сообщение от vldimir.malyk email(??) on 22-Окт-08, 11:13 
>[оверквотинг удален]
>>>У меня: внешний интерфейс, внешний айпи. Внутренний интерфейс, шлюзы.
>>>
>>>Как будет связь между * и шлюзом, если пакеты с _адреса_ внешнего
>>>интерфейса пойдут во внешний интерфейс ? Правильно, никакая.
>>
>>вот именно потому, что связи никакой нет, решение с bindaddr и подошло
>>как временное.
>
>Это косяк настройки маршрутизации. _Не_всегда  надо отправлять пакеты с адреса сетевой
>карты в эту сетевую карту.

посоветуй доку, где раскрываются "идеологические" аспекты использования маршрутизации. доки по инструментарию у меня уже достаточно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Решение проблемы 2"  
Сообщение от vldimir.malyk email(??) on 22-Окт-08, 09:52 
корень проблемы:

> Все пакеты астерикса изначально идут на default route eth1! Вот

почему правило для -o ppp0 -j SNAT не работает, а правило -o eth1 -j
SNAT --to-source 192.168.254.2 - да!
>Дальше маркированный пакет с серым в попадает в ip route и уходит

через ppp0

отсюда решение:

добавляем в /etc/iproute2/rt_tables таблицу iip

делаем:
ip ru add from 88.88.88.88 table iip
ip ro add 88.88.88.88 dev ppp0 table iip
ip ro add default via  88.88.88.88 dev ppp0 table iip
ip ru add fwmark 255 pri 100 table iip
ip ru add from 88.88.88.88 pri 200 table iip
ip ru f c

iptables -t mangle -A OUTPUT -d ! 192.168.0.0/24 -m owner --uid-owner asterisk -j MARK --set-mark 255
iptables -t nat -A POSTROUTING -m mark --mark 255 -j SNAT --to-source 88.88.88.88

и все работает отлично.

спасибо mutronix с linux.org.ru.
http://www.linux.org.ru/view-message.jsp?msgid=3186294&nocac...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру