Главная
Главная Руководства FreeBSD › FreeBSD - подключаемся к домру



Автор:

Статья опубликована: 2015-03-12 16:36:34
Последние правки: 2018-11-19 17:29:01

Из всех провайдеров, к которым я подключался на FreeBSD, этот самый простой. Подключаем через ppp.

Немного лирики: провайдер - самый надежный (во время отключения электричества из их коробки в подъезде был слышен писк ИБП, а это что-то да значит), но абонентов своим вниманием достают хуже свидетелей иеговых. Используют прокси, который периодически в принудительном порядке пристает со всяческими опросами (отключать которые не хотят), моему вопросу "Зачем вы меня постоянно достаёте по телефону?" искренне удивляются и отвечают "Вы же наш клиент" )
  • Исходные данные
    # uname -sr
    FreeBSD 10.0-RELEASE-p18
    
  • Настраиваем:
    /etc/ppp/ppp.conf
    default:
     set log Phase Chat LCP IPCP CCP tun command
     ident user-ppp VERSION
     enable dns
    
    domru:
     set device PPPoE:ale0
     set authname USER
     set authkey PASS
     set dial
     set login
    
    ale0 - название интерфейса, к которому подключен сетевой кабель домру;
    USER - имя пользователя, которое выдал домру;
    PASS - пароль, который выдал домру;


    /etc/ppp/ppp.linkup
    domru:
     ! sh -c "route add default HISADDR"
    

    /etc/ppp/ppp.linkdown
    domru:
     ! sh -c "route del default"
    

  • Подключаемся:
    # ppp -ddial domru
    

  • Автозапуск:
    /etc/rc.conf
    ppp_enable="YES"
    ppp_mode="ddial"
    ppp_profile="domru"
    
    Запуск:
    # /etc/rc.d/ppp start
    

  • Если у вас FreeBSD собрана с поддержкой ipv6, то могут выскочить подводные камни в виде ошибки "Warning: Add! route failed: ff02::: errno: Value too large to be stored in data type". При этом даже ipv4 маршрут по умолчанию на провайдера не пропишется. Как это побороть штатными средствами я не нашел, маршрут по умолчанию при подключении периодически менялся, поэтому я написал простенький скрипт для подключения/переподключения.
    #!/bin/sh
    # ppp интерфейс
    drif='tun0'
    # провайдер как метка в /etc/ppp/ppp.conf
    provider='domru'
    gate=''
    iface=`ifconfig $drif | grep 'Opened by'`
    
    # смотрим, поднят ли ppp интерфейс, если поднят, то грохаем
    while [ "$iface" ]
    do
        iface=`ifconfig $drif | grep 'Opened by'`
        if [ "$iface" ]
        then
            killall ppp
            sleep 5
        fi
    done
    
    ppp -ddial $provider
    
    # ждем пока поднимется интерфейс, вытаскиваем gateway и прописываем
    # по умолчанию
    until [ "$gate" ]
    do
        gate=`ifconfig $drif | grep inet | awk '{print $4}'`
        if [ "$gate" ]
        then
            route change default $gate
            exit 0
        fi
    done
    
  • при использовании домру в качестве провайдера, можно использовать приведенный выше скрипт как часть системы для проверки работоспособности канала. Алгоритм проверки такой: одним скриптом пингуем наш default gateway, например 10 пакетами, если не прошло ни одного, то запускаем скрипт на переподключение. Скрипт проверки запихиваем в cron с интервалом в 10 минут.