Ipfw NAT и mpd5

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Ipfw NAT и mpd5

Непрочитанное сообщение hranitel_y2k » 2010-12-20 19:56:33

Люди помогите, поиск в гугле и чтение man не помогает.

Проблема в том,что на серваке работала схема IPFW+NATD+MPD5. Mpd5 используется в качестве клиента для PPPoE подключения к интернету.
Решил перевести всю схему на ipfw nat (kernel), вылезла проблема:
При старте системы в логах ошибка:

Код: Выделить всё

gate kernel: ipfw:
gate kernel: unknown interface name ng0
Правило для ipfw на котором возникает ошибка:

Код: Выделить всё

ipfw nat 1 config log if ng0 reset same_ports deny_in
Интернета, естественно, и в сетке, и на сервере нет, поскольку нат не работает (mpd5 благополучно соединяется и все что нужно получает). Если после загрузки соединиться с серваком и сделать ipfw forcerestart, то ошибка не возникает и инет пашет и на самом сервере и на всех хостах сети. Потом, даже если соединение с провом рвется, когда связь восстанавливается, инет у всех появляется.
Я так понимаю, поправьте если не прав, проблема в том,что ipfw инициализируется раньше mpd5, и когда он пытается это сделать, интерефейса ng0 еще нет - отсюда и ошибка.
Как это можно исправить?
Есть мысль сделать для mpd up_script, но у меня это скрипт почему-то не пашет. Может есть более правильное решение проблемы?
Все гениальное - просто!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Ipfw NAT и mpd5

Непрочитанное сообщение terminus » 2010-12-20 20:07:50

проблема в том,что ipfw инициализируется раньше mpd5, и когда он пытается это сделать, интерефейса ng0 еще нет - отсюда и ошибка.
так точно.
Может есть более правильное решение проблемы
Можно попробовать выставить зависимости в rc.c скрипте MPD. А вообще народ с этим уже воевал - поищите по форуму.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: Ipfw NAT и mpd5

Непрочитанное сообщение hranitel_y2k » 2010-12-20 20:13:08

Находил, тоже говорили про зависимости. Подскажите или, подкиньте ссылку на маны, как это можно сделать?
Все гениальное - просто!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Ipfw NAT и mpd5

Непрочитанное сообщение hizel » 2010-12-20 20:37:13

в mpd есть свой nat в client-mode, зачем вам natd и kernel nat?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: Ipfw NAT и mpd5

Непрочитанное сообщение hranitel_y2k » 2010-12-20 20:52:23

hizel писал(а):в mpd есть свой nat в client-mode, зачем вам natd и kernel nat?
Ng_nat?
А зачем использовать дополнительный модуль, когда у ipfw уже есть весь необходимый функционал? Да и конфиг один получается,настраивать проще...
Все гениальное - просто!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Ipfw NAT и mpd5

Непрочитанное сообщение hizel » 2010-12-20 21:03:51

угу, по вашей проблеме и видно что проще :-)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: Ipfw NAT и mpd5

Непрочитанное сообщение hranitel_y2k » 2010-12-20 21:16:15

hizel писал(а):угу, по вашей проблеме и видно что проще :-)
Проще вообще было не трогать NATD,у него такой проблемы нет:)
Но все таки вопрос остается открытым... Как более удобным и простым методом решить проблему?
Мне пока видятся только скрипты в mpd, пойду читать мануалы на данную тему...
Все гениальное - просто!

Аватара пользователя
armadex
мл. сержант
Сообщения: 111
Зарегистрирован: 2007-11-07 21:29:33
Откуда: Ukraine, Кривой Рог
Контактная информация:

Re: Ipfw NAT и mpd5

Непрочитанное сообщение armadex » 2011-01-03 23:12:29

ну наверное что то типа такого костыля
cat /usr/local/etc/mpd5/start_nat.pl

Код: Выделить всё

#!/usr/bin/perl

$ppp_nat_addr=$ARGV[2];
$gw_nat_addr='10.78.233.253';


$ppp_nat_cmd=sprintf("/usr/sbin/ngctl -f - << -EOF
mkpeer ipfw: nat 1 out
name ipfw:1 PPP_NAT
connect ipfw: PPP_NAT: 2 in
msg PPP_NAT: setaliasaddr %s
",$ppp_nat_addr);
system($ppp_nat_cmd);

$gw_nat_cmd=sprintf("/usr/sbin/ngctl -f - << -EOF
mkpeer ipfw: nat 3 out
name ipfw:3 GW_NAT
connect ipfw: GW_NAT: 4 in
msg GW_NAT: setaliasaddr %s
",$gw_nat_addr);
system($gw_nat_cmd);


$fw_one=sprintf("/sbin/ipfw add netgraph 2 all from any to %s via ng0 in",$ppp_nat_addr);
$fw_two=sprintf("/sbin/ipfw add netgraph 1 all from 192.168.1.2 to any via ng0 out");
$fw_third=sprintf("/sbin/ipfw add netgraph 4 all from any to 10.78.233.253 via rl0 in");
$fw_four=sprintf("/sbin/ipfw add netgraph 3 all from 192.168.1.2 to any via rl0 out");

`$fw_one`;
`$fw_two`;
`$fw_third`;
`$fw_four`;
cat /usr/local/etc/mpd5/stop_nat.pl

Код: Выделить всё

#!/usr/bin/perl

$nat_type="PPP";
$gw_type="GW";

$stop_ppp_nat_cmd=sprintf("/usr/sbin/ngctl shutdown %s_NAT:",$nat_type);
`$stop_ppp_nat_cmd`;
$stop_gw_nat_cmd=sprintf("/usr/sbin/ngctl shutdown %s_NAT:",$gw_type);
`$stop_gw_nat_cmd`;
########## ЧИСТИМ ФАЕРВОЛ #######################
$stop_fw_cmd=sprintf("/sbin/ipfw -f flush");
`$stop_fw_cmd`;
фаер DEFAULT_TO_ACCEPT
ну и в mpd.conf добавить

Код: Выделить всё

        set iface up-script /usr/local/etc/mpd5/start_nat.pl
        set iface down-script /usr/local/etc/mpd5/stop_nat.pl
если не нужно натить во внутреннюю сеть провайдера провайдера, то пункты с GW_NAT можно пропустить!
Автор благодарит алфавит за любезно предоставленные буквы!

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: Ipfw NAT и mpd5

Непрочитанное сообщение hranitel_y2k » 2011-01-04 3:04:07

Спасибо, после праздников буду тестить!

Всех с НОВЫМ ГОДОМ!!!
Все гениальное - просто!

hranitel_y2k
сержант
Сообщения: 154
Зарегистрирован: 2007-12-10 21:04:35

Re: Ipfw NAT и mpd5

Непрочитанное сообщение hranitel_y2k » 2011-01-05 16:11:53

Решил проблему через mpd скрипт, заодно прописал через него маршрут по умолчанию. Down скрипт не делал, поскольку проблема только при старте системы и поднятии интефейса.
Может кому пригодиться:

Код: Выделить всё

set iface up-script /usr/local/etc/mpd5/link_up.sh

Код: Выделить всё

#!/bin/sh
route delete default
route add default $4
ipfw nat 1 config log if $1 reset same_ports deny_in
Вообще, очень интересная ситуация с ipfw, сам нат он создавать не хочет (пишет нет интерфейса), зато спокойно создает правила с ним связанные :cz2:
Все гениальное - просто!