Биллинговая система Nodeny
03 Мая 2024, 16:29:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: 2 канала ipfw fwd  (Прочитано 14443 раз)
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« : 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 - ситуация та же самая, при форвардинге на шлюз по умолчанию работает - дальше нет.

В чам может быть прболема?
Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #1 : 30 Августа 2009, 20:37:56 »

Так поможет кто нибудь?
Записан
elite
Начальник планеты
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1227

In LAN we trust!

358714596
Просмотр профиля
« Ответ #2 : 30 Августа 2009, 20:42:08 »

Так поможет кто нибудь?
лениво  Показает язык
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #3 : 30 Августа 2009, 22:54:07 »

вроде бы детально расписал, но как-то непонятно. Во-первых юзай tcpdump чтоб понять куда идут пакеты, с какими ip и т.д. Во-вторых fwd надо делать после ната - помнится когад я тестировал несколько лет назад, fwd отсылал пакет в пунк назначения минуя все цепочки, через которые он должен был пройти
Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #4 : 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

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

Подскажыте пожалуйста в чем может быть проблема?
Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #5 : 31 Августа 2009, 11:51:34 »

Блин, да хоть направте что в таком случае исполльзовать. Неужели никто не стыкался с таким?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #6 : 31 Августа 2009, 12:05:57 »

я ж объяснил - я сталкивался с ситуацией, когда fwd отправляло пакет в пункт назначения напрямую, минуя дальнейшую обработку пакета. Т.е вполне вероятно, что пакет в нат просто не попадает. Проверить это поможет tcpdump - смотришь на адреса исходящий пакетов, если не натятся - значит посылка верна, натятся - ищем проблему в другом месте, пакеты вообще не отправляются - другую и т.д. В Unix громадное количество средств понять что происходит, все можно отследить по цепочке.Просто нарисовать конфиги и любоваться почему не работает - этого не дсотаточно
Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #7 : 01 Сентября 2009, 08:04:12 »

Да, пакет отправляется не наченым дальше.
1 срабатывает фаер ipfw а уж потом pf. Подскажыте какими правилами можно заставить пакет уйти уже после pf nat.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #8 : 01 Сентября 2009, 09:07:09 »

Уточним некоторые моменты. У тебя используется маршрутизация по источнику, т.е в зависимости от того, от какого клиента пришел пакет, ты его направляешь в определенный канал? Если нет, то значит это не маршрутизация по источнику и тебе нужно просто прописать роуты.

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

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #9 : 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 правило пробывал по разному делать - не получается. Тоесть работает только через шлюз по умолчанию.

Как зафорвардить пакеты на другой шлюз с ядерного ната?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #10 : 01 Сентября 2009, 10:42:28 »

не смотря на правила, one_pass должно быть равно 0. сделал?
Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #11 : 01 Сентября 2009, 11:08:54 »

Нет, в доке по билингу пишет ясно что предусматривается что one.pass должно быть 1.
firewall.html - Во всех примерах предусматривается, что переменная net.inet.ip.fw.one_pass=1.

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

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #12 : 01 Сентября 2009, 11:59:08 »

в доке написано для pf nat, а мы говорим о ядерном nat. Зачем нужна переменная one_pass, для того чтобы всегда быть установленной в 1? Ессно, установка в 0 потребует доработки фаервола
Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 323


Просмотр профиля
« Ответ #13 : 01 Сентября 2009, 12:28:10 »

Хм, только фаервола /etc/rc.firewall или также скрипта NoDeny - nofire.pl?

Если только фаервола то я справлюсь...
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #14 : 01 Сентября 2009, 13:27:10 »

nofire.pl тоже. Поищи в форуме топик про прозрачную проксю. Там как раз используется one_pass=0
Записан
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!