URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94928
[ Назад ]

Исходное сообщение
"ppp + ipfw + kernel nat в 9.1"

Отправлено skeletor , 14-Авг-13 13:43 
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 command

pppoe:
   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, но ничего не меняется.
Какие ещё есть нормальные варианты решения?

Содержание

Сообщения в этом обсуждении
"ppp + ipfw + kernel nat в 9.1"
Отправлено mr_gfd , 14-Авг-13 14:42 
a) показать /etc/my-firewall и вывод ipfw show до и после поднятия tun
b) man syslog.conf на предмет "|"
c) читать таки больше, чем писать, желательно документацию
Уже который год по всем углам ру- и уанета skeletor задает уйму вопросов сомнительной полезности, уровень которых ничуть не растет со временем, что не радует.

"ppp + ipfw + kernel nat в 9.1"
Отправлено Miha , 14-Авг-13 17:34 
Смотрите, когда стартует сервер, то при загрузке правил ipfw интерфейса tynX еще нет, т.к. небыло запуска ppp, поэтому правило NAT не загружается.
Как можно рещить:
- указать в конфиге NAT статический адрес, а не имя интерфейса;
- использовать вместо штатного ppp mpd и использовать up-script для загрузки правил ната.

Ваш вариант загрузки по крону плох тем, что вы точно не знаете поднят у вас туннель через 60 с после статрта сервера или нет.


"ppp + ipfw + kernel nat в 9.1"
Отправлено skeletor , 14-Авг-13 18:36 
> Смотрите, когда стартует сервер, то при загрузке правил ipfw интерфейса tynX еще
> нет, т.к. небыло запуска ppp, поэтому правило NAT не загружается.
> Как можно рещить:
> - указать в конфиге NAT статический адрес, а не имя интерфейса;
> - использовать вместо штатного ppp mpd и использовать up-script для загрузки правил
> ната.
> Ваш вариант загрузки по крону плох тем, что вы точно не знаете
> поднят у вас туннель через 60 с после статрта сервера или
> нет.

Нашёл вариант с ppp.linkup. Работает.


"ppp + ipfw + kernel nat в 9.1"
Отправлено oleg_skat , 16-Мрт-15 12:08 
>> Смотрите, когда стартует сервер, то при загрузке правил 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 секунды.