Биллинговая система Nodeny

Главная категория => Общий раздел => Тема начата: Александр (AleksHr) от 30 Августа 2009, 15:18:23



Название: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 30 Августа 2009, 15:18:23
Нужен совет, уже замучался.

Фаервол (для теста):
Код:
#!/bin/sh -
f='/sbin/ipfw'

${f} add 130 allow tcp from any to me 22
${f} add 131 allow tcp from me 22 to any

${f} add 200 allow ip from any to any

Есть 2 шлюза 10.46.16.1 и 172.16.12.12
3 интерфейса (2 внешних что выше, 1 локальный 192.168.13.1)

nat pf:
Код:
nat pass on re0 from 192.168.13.0/24 to any -> re0
nat pass on vge0 from 192.168.13.0/24 to any -> vge0

Билинг вообще выключен (ядро не запущено и т.д.).

в rc.conf изменяю дефаулт роут на шлюз 1 провайдера - клиент работает через 1, на шлюз 2 - соответсвенно через 2. С настройками тут все хорошо.

Тепер прописую правило (когда гейт по умолчанию 10.46.16.1):
Код:
ipfw add 150 fwd 10.46.16.1 ip from 192.168.13.12 to any
все продолжает работать, удаляю правило ipfw delete 150.

Добавляю правило, только шлюз провайдера 2:
Код:
ipfw add 150 fwd 172.16.12.12 ip from 192.168.13.12 to any
все - затык, 172.16.12.12 - пингуется - дальше нет.

Если дефаулт роут на шлюз провайдера 2 - ситуация та же самая, при форвардинге на шлюз по умолчанию работает - дальше нет.

В чам может быть прболема?


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 30 Августа 2009, 20:37:56
Так поможет кто нибудь?


Название: Re: 2 канала ipfw fwd
Отправлено: elite от 30 Августа 2009, 20:42:08
Так поможет кто нибудь?
лениво  :P


Название: Re: 2 канала ipfw fwd
Отправлено: Efendy от 30 Августа 2009, 22:54:07
вроде бы детально расписал, но как-то непонятно. Во-первых юзай tcpdump чтоб понять куда идут пакеты, с какими ip и т.д. Во-вторых fwd надо делать после ната - помнится когад я тестировал несколько лет назад, fwd отсылал пакет в пунк назначения минуя все цепочки, через которые он должен был пройти


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 31 Августа 2009, 08:41:56
Постараюся обяснить подробнее. NoDeny настроен по документации, со всем разобрался, все работает и шейпится (скорость к основным и альтернативным направлениям задется без проблем). Фаервол IPFW, нат - PF NAT.

re0 (IP сервера 172.16.12.11/255.255.255.248) - шлюз провайдера 172.16.12.12
vge0 (IP сервера 10.46.16.200/255.255.252.0) - шлюз провайдера 10.46.16.1


Настройки pf.conf:
Код:
nat pass on re0 from 192.168.13.0/24 to any -> re0
nat pass on vge0 from 192.168.13.0/24 to any -> vge0

Настройки ip.firewall:
Код:
#!/bin/sh -
f='/sbin/ipfw'

${f} add 130 allow tcp from any to me 22
${f} add 131 allow tcp from me 22 to any

${f} add 200 allow ip from any to any

С данными настройками все работает по маршруту заданому в rc.conf.
Меняю шлюз в rc.conf - все бегают соответсвенно по 2 провайдеру.

Теперь вопрос:
какое правило нужно вставить в rc.firewall чтоб IP 192.168.13.11 ушел по шлюзу второго провайдера?

Припустим что шлюз по умолчанию: 10.46.16.1 и все пакеты идут через него.

Пробую добавить:
Код:
ipfw add 150 fwd 172.16.12.12 ip from 192.168.13.11 to any

интернет полностю перестает работать, пакеты не идут.

Подскажыте пожалуйста в чем может быть проблема?


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 31 Августа 2009, 11:51:34
Блин, да хоть направте что в таком случае исполльзовать. Неужели никто не стыкался с таким?


Название: Re: 2 канала ipfw fwd
Отправлено: Efendy от 31 Августа 2009, 12:05:57
я ж объяснил - я сталкивался с ситуацией, когда fwd отправляло пакет в пункт назначения напрямую, минуя дальнейшую обработку пакета. Т.е вполне вероятно, что пакет в нат просто не попадает. Проверить это поможет tcpdump - смотришь на адреса исходящий пакетов, если не натятся - значит посылка верна, натятся - ищем проблему в другом месте, пакеты вообще не отправляются - другую и т.д. В Unix громадное количество средств понять что происходит, все можно отследить по цепочке.Просто нарисовать конфиги и любоваться почему не работает - этого не дсотаточно


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 01 Сентября 2009, 08:04:12
Да, пакет отправляется не наченым дальше.
1 срабатывает фаер ipfw а уж потом pf. Подскажыте какими правилами можно заставить пакет уйти уже после pf nat.


Название: Re: 2 канала ipfw fwd
Отправлено: Efendy от 01 Сентября 2009, 09:07:09
Уточним некоторые моменты. У тебя используется маршрутизация по источнику, т.е в зависимости от того, от какого клиента пришел пакет, ты его направляешь в определенный канал? Если нет, то значит это не маршрутизация по источнику и тебе нужно просто прописать роуты.

Возможно, (ищи в гугле), во фре уже есть штатные средства обеспечить корректно маршрутизация по источнику, я не знаю. Что касается fwd - юзай нат, к которому можно иметь доступ в Ipfw (ядерный или natd)


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 01 Сентября 2009, 10:33:36
Спасибо Efendy, сейчас заюзал natd - все работает со следующими правилами:
Код:
natd -n vge0 -p 8668
natd -n re0 -p 8669

${f} add 20 check-state
${f} add 30 prob 0.5 skipto 65 ip from any to any setup keep-state

${f} add 50 divert 8669 ip from 192.168.13.0/24 to any
${f} add 55 fwd 172.16.12.12 ip from 172.16.12.11 to any
${f} add 60 divert 8669 ip from any to 172.16.12.11

${f} add 65 divert 8668 ip from 192.168.13.0/24 to any
${f} add 70 fwd 10.46.16.1 ip from 10.46.16.200 to any
${f} add 75 divert 8668 ip from any to 10.46.16.200

Но, хотел бы использовать ядерный нат (kernel nat), пробую создать правила по аналогии к natd:
Код:
${f} nat 1 config if 10.46.16.200
${f} nat 2 config ip 172.16.12.11

${f} add 20 check-state
${f} add 30 prob 0.5 skipto 180 ip from any to any setup keep-state

${f} add 150 nat 1 ip from 192.168.13.0/24 to any
${f} add 160 fwd 10.46.16.1 ip from 192.168.13.0/24
${f} add 170 nat 1 ip from any to 10.46.16.200

${f} add 180 nat 2 ip from 192.168.13.0/24 to any
${f} add 190 fwd 172.16.12.12 ip from 192.168.13.0/24
${f} add 195 nat 2 ip from any to 172.16.12.11

Ничего не работает, fwd правило пробывал по разному делать - не получается. Тоесть работает только через шлюз по умолчанию.

Как зафорвардить пакеты на другой шлюз с ядерного ната?


Название: Re: 2 канала ipfw fwd
Отправлено: Efendy от 01 Сентября 2009, 10:42:28
не смотря на правила, one_pass должно быть равно 0. сделал?


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 01 Сентября 2009, 11:08:54
Нет, в доке по билингу пишет ясно что предусматривается что one.pass должно быть 1.
firewall.html - Во всех примерах предусматривается, что переменная net.inet.ip.fw.one_pass=1.

Если сделать 0, биллинг нормально будет формировать правила без переделки nofire.pl? Или ето только для firewall.conf? может у кого нить есть правила для опции 0.


Название: Re: 2 канала ipfw fwd
Отправлено: Efendy от 01 Сентября 2009, 11:59:08
в доке написано для pf nat, а мы говорим о ядерном nat. Зачем нужна переменная one_pass, для того чтобы всегда быть установленной в 1? Ессно, установка в 0 потребует доработки фаервола


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 01 Сентября 2009, 12:28:10
Хм, только фаервола /etc/rc.firewall или также скрипта NoDeny - nofire.pl?

Если только фаервола то я справлюсь...


Название: Re: 2 канала ipfw fwd
Отправлено: Efendy от 01 Сентября 2009, 13:27:10
nofire.pl тоже. Поищи в форуме топик про прозрачную проксю. Там как раз используется one_pass=0


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 01 Сентября 2009, 17:22:03
Может есть у кого фаервол переделаный под natd или nat? Имею ввиду чтоб ограничывал скорость и т.д., а не только давал доступ (как в мануале). Пробую сам создать но никак не выходит.


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 01 Сентября 2009, 22:12:47
Так сто насчет конфига с natd? Подскажыте куда правила на диверт на нат поставить...


Название: Re: 2 канала ipfw fwd
Отправлено: Elisium от 01 Сентября 2009, 22:35:26
Мб тут есть чето полезное ? (ссылка - тыц) (http://groups.google.com.ua/group/nodeny/browse_thread/thread/733b0bd03a743ce4?hl=ru#)
Эээм .. посмотрел повнимательнее - тема то, вроде, на Вашу смахивает ))


Название: Re: 2 канала ipfw fwd
Отправлено: Александр (AleksHr) от 01 Сентября 2009, 22:59:35
Ето моя тема... но тогда только пробывал, а сейчас реально ставлю билинг.

В биллинг лишь можно добавить:
ipfw add $num divert $natd_port ip from $user_ip to any
переменные естественно свои.


Куда в билинг? После какой строки и т.д.?
Как правило сформировать правила фаервола если использовать natd?

Я думаю многим интересна даная тема. Можете подсказать?


Название: Re: 2 канала ipfw fwd
Отправлено: Elisium от 01 Сентября 2009, 23:22:45
У меня есть другая тема - ВОТ (http://demo.nodeny.com.ua/forum/index.php?topic=86.0)
Задача та же, только по другому сделано .. не сильно ровно, но работает ((
Хотя, хотелось бы, как у Вас ))