Расклад:
OS: FreeBSD 5.2
rl0 - интерфейс во внешнюю сеть
rl1 - интерфейс в локальную сетьrl1 <-> rl0 поднят NAT на основе ipnat + ipf
Все было хорошо и все работало как часики (кстати, мимоходом: чтобы поднять ipnat на фре 5.2, надо включить в ядре "options PFIL_HOOKS", иначе глюки с подгружаемым модулем). Ровно до того момента как я решил к этой всей батве еще подключить pppd + callback :)
В общем, колбек настроил с горем пополам.
Теперь мне надо чтобы: при подключении ppp0, NAT шуровал через него. При его отключении через rl0.
Ну это все понятно, тут особо ничего сложного нет - при активизации изменить таблицу NAT скриптом.Но блин pppd не может изменить defaultroute при подключении! Пишет "file exists". У меня в rc.conf прописан default gateway=x.x.x.x (во внешней сетке) - может поэтому?
Подключается нормально, но defaultroute не меняет гад :(, хотя я эту опцию ему указываю в "options". В результате чего диалап соединение висит как будто его нет. Роутинг шурует через rl0.
HELP PLEASE.
>Расклад:
>OS: FreeBSD 5.2
>rl0 - интерфейс во внешнюю сеть
>rl1 - интерфейс в локальную сеть
>
>rl1 <-> rl0 поднят NAT на основе ipnat + ipf
>
>Все было хорошо и все работало как часики (кстати, мимоходом: чтобы поднять
>ipnat на фре 5.2, надо включить в ядре "options PFIL_HOOKS", иначе
>глюки с подгружаемым модулем). Ровно до того момента как я решил
>к этой всей батве еще подключить pppd + callback :)
>
>В общем, колбек настроил с горем пополам.
>Теперь мне надо чтобы: при подключении ppp0, NAT шуровал через него. При
>его отключении через rl0.
>Ну это все понятно, тут особо ничего сложного нет - при активизации
>изменить таблицу NAT скриптом.
>
>Но блин pppd не может изменить defaultroute при подключении! Пишет "file exists".
>У меня в rc.conf прописан default gateway=x.x.x.x (во внешней сетке) -
>может поэтому?
>
>Подключается нормально, но defaultroute не меняет гад :(, хотя я эту опцию
>ему указываю в "options". В результате чего диалап соединение висит как
>будто его нет. Роутинг шурует через rl0.
>
>HELP PLEASE.
прежде чем вешать новый defaultroute необходимо удалить старый...# man route
попробуй дважды прописать один и тот же маршрут, получишь тот же результат, что ты описалвыше(маршрут уже существует).
>попробуй дважды прописать один и тот же маршрут, получишь тот же результат,
>что ты описалвыше(маршрут уже существует).route delete default?
>попробуй дважды прописать один и тот же маршрут, получишь тот же результат,
>что ты описалвыше(маршрут уже существует).Получилось в общем.
Перед вызовом pppd просто надо запустить команду в скрипте '/sbin/route delete default'А в скрипте, который выполняется автоматически при обрыве связи (/etc/ppp/ip-down), набрать команды
/sbin/route delete default
/sbin/route add default x.x.x.xгде x.x.x.x - айпи "обычного" гейта.
Ну соответственно, в /etc/pppd/ip-up еще указать команды, которые перестраивают таблицу NAT и вешают файрвол на диалап-соединение. А в /etc/pppd/ip-down сбрасывать файрвол и NAT к дефалтным настройкам. ipf и ipnat в этом отношении рулят.
Всем спасибо :)