OS: FreeBSD 9.1 i386 Release.
Сервер получает адрес через ppp от провайдера (укртелеком). Проблема в том, что получение это длительное и получается, что правила ipfw (+kernel nat) применяются ранее, чем будет получен адрес. В итоге приходиться из /etc/rc.conf исключать загрузку ipfw, и через крон стартовать через 60 секунд после загрузки ОСи. Тогда все правила нормально применяются и есть инет. Если так не сделать - то инета даже на сервере нет: адрес получает (в логах это видно), но инета нет. В логах ничего такого, что может насторожить. Сервер удалённый и все манипуляции приходиться делать через помощника, который может выполнять только под диктовку.
Вот, что есть в /etc/rc.conf:
# PPPPoE #
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="NO"
ppp_profile="pppoe"# FIREWALL #
firewall_enable="YES"
firewall_script="/etc/my-firewall"
а вот что в /etc/ppp/ppp.conf
default:
set log Phase Chat LCP IPCP CCP tun commandpppoe:
set device PPPoE:rl0
set speed sync
set mru 1492
set mtu 1492
set ctsrts off
enable lqr
set lqrperiod 5
add! default HISADDR
set timeout 0
set redial 0 0
set authname user
set authkey pass
enable dns
set reconnect 5 10000
Пробовал добавлять!bg /etc/my-firewallв ppp.conf, но ничего не меняется.
Какие ещё есть нормальные варианты решения?
a) показать /etc/my-firewall и вывод ipfw show до и после поднятия tun
b) man syslog.conf на предмет "|"
c) читать таки больше, чем писать, желательно документацию
Уже который год по всем углам ру- и уанета skeletor задает уйму вопросов сомнительной полезности, уровень которых ничуть не растет со временем, что не радует.
Смотрите, когда стартует сервер, то при загрузке правил ipfw интерфейса tynX еще нет, т.к. небыло запуска ppp, поэтому правило NAT не загружается.
Как можно рещить:
- указать в конфиге NAT статический адрес, а не имя интерфейса;
- использовать вместо штатного ppp mpd и использовать up-script для загрузки правил ната.Ваш вариант загрузки по крону плох тем, что вы точно не знаете поднят у вас туннель через 60 с после статрта сервера или нет.
> Смотрите, когда стартует сервер, то при загрузке правил ipfw интерфейса tynX еще
> нет, т.к. небыло запуска ppp, поэтому правило NAT не загружается.
> Как можно рещить:
> - указать в конфиге NAT статический адрес, а не имя интерфейса;
> - использовать вместо штатного ppp mpd и использовать up-script для загрузки правил
> ната.
> Ваш вариант загрузки по крону плох тем, что вы точно не знаете
> поднят у вас туннель через 60 с после статрта сервера или
> нет.Нашёл вариант с ppp.linkup. Работает.
>> Смотрите, когда стартует сервер, то при загрузке правил ipfw интерфейса tynX еще
>> нет, т.к. небыло запуска ppp, поэтому правило NAT не загружается.
>> Как можно рещить:
>> - указать в конфиге NAT статический адрес, а не имя интерфейса;
>> - использовать вместо штатного ppp mpd и использовать up-script для загрузки правил
>> ната.
>> Ваш вариант загрузки по крону плох тем, что вы точно не знаете
>> поднят у вас туннель через 60 с после статрта сервера или
>> нет.
> Нашёл вариант с ppp.linkup. Работает.Можно так:
Скрипт ф-вола:
--------------------------------------------------------------------------------------
#!/bin/sh
.......
#ip внешнего и-фейса
natip=`ifconfig tun0|grep inet|awk '{print $2}'`......
if [ -z $natip ]; then
while [ -z $natip ]; do echo "Waiting for IP...." && sleep 12
done
else echo "The internet connection established"
fi.....
Правила
-------------------------------------------------------------------------------------Если переменная ($natip) определена, продолжение загрузки. Если нет, ждёт появления айпишника (соединения) Таймаут ppp сколько? По дефолту 3 секунды.