Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    DHCP + PPTP on WAN

    Scheduled Pinned Locked Moved Russian
    402 Posts 58 Posters 477.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • X
      xogoc
      last edited by

      pfSense 2.0: пытаюсь поднять PPTP на WAN'е с DHCP
      Что мне изменить в /etc/inc/interfaces.inc если провайдер требует такие настройки:

      ?
      Лог:

      Jan 9 15:21:20 ppp: [opt2_link0] Link: reconnection attempt 1209
      Jan 9 15:21:20 ppp: [opt2_link0] PPTP call failed
      Jan 9 15:21:20 ppp: [opt2_link0] Link: DOWN event
      Jan 9 15:21:20 ppp: [opt2_link0] LCP: Down event
      Jan 9 15:21:20 ppp: [opt2_link0] Link: reconnection attempt 1210 in 3 seconds

      1 Reply Last reply Reply Quote 0
      • werterW
        werter
        last edited by

        @xogoc:

        pfSense 2.0: пытаюсь поднять PPTP на WAN'е с DHCP
        Что мне изменить в /etc/inc/interfaces.inc если провайдер требует такие настройки:

        ?
        Лог:

        Jan 9 15:21:20 ppp: [opt2_link0] Link: reconnection attempt 1209
        Jan 9 15:21:20 ppp: [opt2_link0] PPTP call failed
        Jan 9 15:21:20 ppp: [opt2_link0] Link: DOWN event
        Jan 9 15:21:20 ppp: [opt2_link0] LCP: Down event
        Jan 9 15:21:20 ppp: [opt2_link0] Link: reconnection attempt 1210 in 3 seconds

        У вас привязка по МАСу идет ? Тогда сперва МАС смените на ВАН, чтоб ИП локальный получить, а только затем проверяйте ППТП.

        П.с. Как вариант, при загрузке pf-а задать первым поднимать ВАН , а только потом ППТП.
        Команды можно вставить в Shellcmd, предварительно установив этот пакет.

        1 Reply Last reply Reply Quote 0
        • X
          xogoc
          last edited by

          @werter:

          У вас привязка по МАСу идет ? Тогда сперва МАС смените на ВАН, чтоб ИП локальный получить, а только затем проверяйте ППТП.

          П.с. Как вариант, при загрузке pf-а задать первым поднимать ВАН , а только потом ППТП.
          Команды можно вставить в Shellcmd, предварительно установив этот пакет.

          Привязки по маку вроде нет, локальный ИП получаю, а вот ППТП перестал работать после "модернизации оборудования" где-то там у провайдера… :( Провайдер конечно же ничем помочь мне не смог в настройке :)

          1 Reply Last reply Reply Quote 0
          • X
            xaoc
            last edited by

            "Если вдруг, вы увидите, что default gateway не поменялся на "белый", а остался от модема, его можно переназначить в System->Routes. (выбираем default gateway для OPT1)" а кто подскажет как зделать чтобы он менялся сам ?

            1 Reply Last reply Reply Quote 0
            • T
              TheRaven
              last edited by

              Прошу прощения если пропустил, но судя из последних страниц на последнем стабле pFsense так и не удалось реализовать стабильные DHCP+PPTP(L2TP) из коробки, это так ?

              1 Reply Last reply Reply Quote 0
              • N
                ncat
                last edited by

                я бы сказал что он работает, но с оговоркой что IP l2tp сервера надо указывать только цифрами.

                1 Reply Last reply Reply Quote 0
                • N
                  ncat
                  last edited by

                  ну раз никто не стал возиться, буду придумывать костыли сам.
                  прошивки на новый Asus n66u еще будут пилить и пилить, так нормальной скорости интернета никогда не дождусь

                  Наконец-то мне подсказали на интернациональном форуме, большое спасибо stephenw10.
                  Пока что, по идее, вот этот скрипт надо запихнуть в крон

                  #!/bin/sh
                  
                  if [ -f /var/run/l2tp_opt1.pid ]
                      then
                  #   echo "mpd5 is running" | logger
                      else
                      /etc/rc.linkup l2tp0 start
                  fi
                  # l2tp0 - имя, отображаемое на страничке Interfaces для вашего l2tp интерфейса.
                  
                  

                  Таким образом вроде бы можно решить проблему отказывающегося стартовать l2tp с модифицированным interfaces.inc
                  а модифицировали для того, чтобы получать IP по имени l2tp сервера, как нам велит Билайн. Так как однажды выбранный единственный l2tp сервер может стать недоступным

                  1 Reply Last reply Reply Quote 0
                  • N
                    ncat
                    last edited by

                    Итак, похоже на то что проблема получения l2tp сервер по имени и его автоматического старта решена.
                    pfSense 2.0.1 nanobsd
                    Опишу все по порядку.
                    Понадобится вот что:

                    • mc (с ним удобнее) или текстовый редактор
                    • установленный cron (System -> Packages -> cron)

                    **Что получилось:

                    • L2TP сервер получаем по имени
                    • добавляем маршрут (l2tp сервер становится виден из внутренней сети [актуально для интернета билайн])
                    • L2TP стартует сам и даже обновляет IP сервера при падении**

                    [Решение]
                    Для всех модификаций советую сделать копии
                    1) модифицируем /etc/inc/interfaces.inc
                    1.1 - function interface_ppps_configure($interface)
                    1.1.1 - раскомменчиваем строку $gateways[$pid] = gethostbyname ($gateways[$pid]);
                    1.1.2 - а также добавляем код помеченный /* ADDED -start- / - / ADDED -end- */
                    пункт 1.1.2 позволяет при получении IP l2tp сервера писать маршрут l2tp server - wan gateway. Так как l2tp сервер находится во внешней сети, без маршрута соединение с ним не будет подниматься (это очень любит интернет от билайна).
                    маршруты у него передаются, по ходу, 249 опцией

                    вот как должно выглядеть:

                    
                                                    if(!is_ipaddr($localips[$pid])){
                                                            log_error("Could not get a Local IP address for PPTP/L2TP link on {$port} in interfaces_ppps_configure. Using 0.0.0.0 ip!");
                                                            $localips[$pid] = "0.0.0.0";
                                                    }
                                                    /* XXX: This needs to go away soon! [It's commented out!] */
                                                    /* Configure the gateway (remote IP ) */
                                                    if (!$g['booting'] && !is_ipaddr($gateways[$pid]) && is_hostname($gateways[$pid])) {
                                                            /* XXX: Fix later  */
                                                            $gateways[$pid] = gethostbyname($gateways[$pid]);
                                                            if(!is_ipaddr($gateways[$pid])) {
                                                                    log_error("Could not get a valid Gateway IP from {$port} via DNS in interfaces_ppps_configure.");
                                                                    return 0;
                                                            }
                    
                                                    }
                                                    if(!is_ipaddr($gateways[$pid])){
                                                            log_error("Could not get a PPTP/L2TP Remote IP address from {$dhcp_gateway} for {$gway} in interfaces_ppps_configure.");
                                                            return 0;
                                                    }
                    
                    /* ADDED -start- */
                                                    //$parent_gw = get_interface_gateway($port);
                    
                                                    $wanif = get_real_wan_interface();
                                                    $parent_gw = file_get_contents("/tmp/{$wanif}_router");
                                                    mwexec("route add -host {$gateways[$pid]} {$parent_gw}");
                    /* ADDED -end- */
                    
                                                    pfSense_ngctl_attach(".", $port);
                                                    break;
                                            case "ppp":
                    
                    

                    i: По поводу пунктов 1.2 и 1.3 не уверен, приносят ли они пользу, но на всякий случай. Эти изменения предложены Micky на 4-й странице http://forum.pfsense.org/index.php/topic,25465.15.html
                    к слову, и 1.1.2 предложено им, хотя в том виде не работало…

                    1.2 - function interface_bring_down($interface = "wan", $destroy = false)

                    
                            $int_list = get_configured_interface_list_by_realif();
                            if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
                                    foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
                                            if ($ppp['type'] == 'pptp' || $ppp['type'] == 'l2tp') {
                                                    $ports = explode(',',$ppp['ports']);
                                                    foreach($ports as $pid => $port){
                                                            if ($port == $interface) {
                                                                    interface_bring_down($int_list[$ppp['if']]);
                                                            }
                                                    }
                                            }
                    
                                    }
                            }
                    
                    

                    местоположение:

                    function interface_bring_down($interface = "wan", $destroy = false) {
                            global $config, $g;
                    
                            if (!isset($config['interfaces'][$interface]))
                                    return;
                    
                            $ifcfg = $config['interfaces'][$interface];
                    
                            $realif = get_real_interface($interface);
                    
                    /* ADDED -start- */
                            $int_list = get_configured_interface_list_by_realif();
                            if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
                                    foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
                                            if ($ppp['type'] == 'pptp' || $ppp['type'] == 'l2tp') {
                                                    $ports = explode(',',$ppp['ports']);
                                                    foreach($ports as $pid => $port){
                                                            if ($port == $interface) {
                                                                    interface_bring_down($int_list[$ppp['if']]);
                                                            }
                                                    }
                                            }
                    
                                    }
                            }
                    
                    /* ADDED -end- */
                    
                            switch ($ifcfg['ipaddr']) {
                            case "ppp":
                            case "pppoe":
                            case "pptp":
                            case "l2tp":
                                    if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
                    
                    

                    1.3 - function interface_dhcp_configure($interface = "wan")

                            $int_list = get_configured_interface_list_by_realif();
                            if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
                                    foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
                                            if ($ppp['type'] == 'pptp' || $ppp['type'] == 'l2tp') {
                                                    $ports = explode(',',$ppp['ports']);
                                                    foreach($ports as $pid => $port){
                                                            if ($port == $interface) {
                                                                    interface_ppps_configure($int_list[$ppp['if']]);
                                                            }
                                                    }
                                            }
                    
                                    }
                            }
                    
                    

                    местоположение (в конце):

                            fwrite($fd, $dhclientconf);
                            fclose($fd);
                    
                            /* bring wan interface up before starting dhclient */
                            if($wanif)
                                    interfaces_bring_up($wanif);
                            else
                                    log_error("Could not bring up {$wanif} interface in interface_dhcp_configure()");
                    
                            /* fire up dhclient */
                            mwexec("/sbin/dhclient -c {$g['varetc_path']}/dhclient_{$interface}.conf {$wanif} > {$g['tmp_path']}/{$wanif}_output > {$g['tmp_path']}/{$wanif}_error_output");
                    
                    /* ADDED -start- */
                            $int_list = get_configured_interface_list_by_realif();
                            if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
                                    foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
                                            if ($ppp['type'] == 'pptp' || $ppp['type'] == 'l2tp') {
                                                    $ports = explode(',',$ppp['ports']);
                                                    foreach($ports as $pid => $port){
                                                            if ($port == $interface) {
                                                                    interface_ppps_configure($int_list[$ppp['if']]);
                                                            }
                                                    }
                                            }
                    
                                    }
                            }
                    /* ADDED -end- */
                    
                            return 0;
                    }
                    
                    

                    i: теперь перед стартом мы получаем l2tp адрес сервера по имени (полученный через DNS IP записывается в конфигурацию mpd5.
                    Получили две проблемы:

                    • сам интерфейс не стартует
                    • надо переконфигурировать l2tp соединение, если, например, l2tp сервер стал недоступным. Пример: оборвался WAN и L2TP, через некоторое время WAN поднимается, а L2TP продолжает стучаться на старый IP, хотя можно было бы получить и новый.
                      Эти проблемы и будем решать ниже

                    2) создаем два файла в /usr/scripts/ (папку scripts придется создать)
                    2.1 - файл start-keeper.sh

                    
                    #! /bin/sh
                    
                    #########################################################################################
                    #                                                                                       #
                    #       This file starts mpd-keeper unless it is not already started.                   #
                    #       Before using make sure you put your variables at /usr/sctipts/mpd-keeper        #
                    #                                                                                       #
                    #########################################################################################
                    
                    res=$(ps -A | grep -w '[m]pd-keeper')
                    
                    if [ ! "$res" ]
                        then
                        echo "Starting mpd-keeper" | logger
                        /usr/bin/nice -n20 /usr/scripts/mpd-keeper
                    fi
                    
                    

                    2.2 - файл mpd-keeper

                    ##### VARIABLES #####
                    
                    # wan is your WAN interface network port name. Can be viewed at pfsense welcome screen.
                    wan='re0'
                    
                    # l2tp is your l2tp network port name (also can be viewed in Webconfigurator -> Status -> Interfaces -> l2tp interface header
                    l2tp='l2tp0'
                    
                    # pid can be found in /var/run should looks same. This file creates when your l2tp is up.
                    pid='l2tp_opt1.pid'
                    
                    # repeat time for this script (in seconds)
                    repeat_time='5'
                    
                    # time to wait for bringing l2tp connection up (in seconds)
                    l2tpup_time='60'
                    
                    ##### CODE #####
                    
                    while [ 1 -eq 1 ]
                    do
                        if [ ! -f /tmp/${l2tp}up ]
                        then
                            if [ -f /var/run/$pid ]
                            then
                                    # If l2tp connection is down (no IP) and mpd5 for this connection is running we kill mpd
                                    # to be able to change connection settings, specifically l2tp peer.
                                    # Because if (for example) l2tp peer is down we can get different l2tp peer IP using hostname.
                                    res2=$(cat /var/run/$pid)
                                    echo "l2tp is down - killing mpd5" | logger
                                    kill $res2
                            fi
                        fi
                    
                        sleep 1
                        res1=$(ifconfig $wan | grep status | cut -d : -f 2)
                    
                        if [ ! -f /var/run/$pid ]
                        then
                            if [ "$res1" = " active" ]
                            then
                                # If wan connection is active and there is no l2tp over it, we start l2tp connection.
                                echo "wan is active - starting l2tp connection" | logger
                                /etc/rc.linkup $l2tp start
                                # L2TP connection needs some time to come up.
                                # Without sleep it seems that mpd5 will be killed before it has a chance
                                # to connect to l2tp server (if repeat_time is less than ~30)
                                sleep $l2tpup_time
                            else
                                #echo "wan is not active. l2tp cannot start" | logger
                            fi
                        fi
                    
                        sleep $repeat_time
                    done
                    
                    

                    опишу переменные, которые надо установить в соответствии с Вашей системой

                    wan - название вашего интерфейса WAN, которые показывается при приветственном окне в pfsense

                    wan='re0'

                    l2tp - имя вашего интерфейса L2TP (показывается в Webconfigurator -> Status -> Interfaces -> l2tp interface header)

                    l2tp='l2tp0'

                    pid может быть найден /var/run выглядеть должен примерно также. Файл создается когда соединение l2tp поднято.

                    pid='l2tp_opt1.pid'

                    интервал повтора скрипта (в секундах)

                    repeat_time='5'

                    время в течении которого ожидаем поднятия интерфейса (в секундах) (за короткое время mpd может не успеть дозвониться и установить связь - он будет выключен этим же скриптом)

                    l2tpup_time='60'

                    2.3 - делаем созданные файлы исполняемыми командой chmod 755 filename (я вот не помнил наизусть как)

                    3) настраиваем cron (Services -> cron)
                    minute */1
                    hour *
                    mday *
                    month *
                    wday *
                    who root
                    command /bin/sh /usr/scripts/start-keeper.sh

                    Вроде все  :)

                    Спасибо: Steve (stephenw10), Micky, Evgeny.

                    P.S.: мой первый "общественный" скрипт набор скриптов; в FreeBSD новичок, то же самое относится к сетевым технологиям. Если есть какие-либо ошибки или дополенения - с удовольствием исправлю\дополню.

                    1 Reply Last reply Reply Quote 0
                    • L
                      lsd25
                      last edited by

                      @ncat:

                      Итак, похоже на то что проблема получения l2tp сервер по имени и его автоматического старта решена.

                      Хм. Аналогично имею провайдера, именуемого АИСТ. Получаю ip по dhcp на wan внутренней сети, некоторой, из 10.0.0.0/8. Для коннекта с инетом - впн, pptp.
                      Юзаю pfsense 2.1. На данный момент сервер впн забил по ип, но надо по имени fqdn. Инет пашет, все ок вроде. Но есть косяк с тем, что почему-то шлюз не резолвит с днс провайдера хосты внутресетевые.
                      т.е. даже в гуглевском днс они имеют записи. если на сетевом интерфейсе в винде прописать днс гугля или от провайдера, то все резолвит. Если использовать dns forwarder шлюза - не резолвит (в general dns прописаны).
                      Ну и странно, что у меня оба шлюза от провайдера являются дефолтовыми. Т.е. шлюз полученный из внутренней сети, и шлюз полученный при соединении впн.
                      С другим провайдером все работало окей, правда там pppoe было )

                      p.s. из сообщения выше костыли не юзал, пака что

                      1 Reply Last reply Reply Quote 0
                      • G
                        gr0mW
                        last edited by

                        У прова скорее всего split DNS. Попробуйте решить записью в Services: DNS forwarder-Advanced  _–->  rebind-domain-ok=/site1/site2/site3/

                        1 Reply Last reply Reply Quote 0
                        • K
                          KanyT
                          last edited by

                          Огромный респект ncat за модификацию !

                          Попробовал настроить у себя - получилось, но в логах постоянно маячит такая строчка:

                          php: : The command 'route change -host 10.172.40.1' returned exit code '1', the output was 'route: writing to routing socket: No such process route: writing to routing socket: Invalid argument change host 10.172.40.1: Invalid argument'
                          

                          И еще почему-то не прописывается default gateway в System->Routing, и у клиентов интернета нет, пока руками не прописать что opt1 это default
                          Но в целом прогресс огромный - оно даже переподымается после падения wan :))

                          1 Reply Last reply Reply Quote 0
                          • L
                            lsd25
                            last edited by

                            gr0mW, Спасибо, помогло) Оказалось, что поиском по форуму находит похожую ситуацию с таким же решением проблемы.. почему-то не нашел я сразу.

                            UPD: Увидел в опциях, в Advanced, пункт "Disable DNS Rebinding Checks". Так вот при активации данной опции, так же начинают резолвиться внутренние адреса. Но интересно, чревато ли это чем-либо?)

                            1 Reply Last reply Reply Quote 0
                            • B
                              Bishounen
                              last edited by

                              ncat

                              Такой вопрос, на сколько я понимаю при такой настройке  на Wan мы получаем ip по DHCP?
                              Вопрос в следующем, при провешивании портов с помощью UPNP у нас они будут не в Интернет же провешиваться? Или я что-то не понимаю?

                              1 Reply Last reply Reply Quote 0
                              • N
                                ncat
                                last edited by

                                @KanyT:

                                Огромный респект

                                Рад что кому-то пригодилось

                                @KanyT:

                                Попробовал настроить у себя - получилось, но в логах постоянно маячит такая строчка:

                                php: : The command 'route change -host 10.172.40.1' returned exit code '1', the output was 'route: writing to routing socket: No such process route: writing to routing socket: Invalid argument change host 10.172.40.1: Invalid argument'
                                

                                Такая же штука была (не знаю есть сейчас или нет) не обращал внимания на нее.
                                Тут стоит пояснить про пункт 1.1.2 из решения:
                                Конфигурирование L2TP:

                                
                                $gateways[$pid] = gethostbyname($gateways[$pid]); //(из решения 1.1.1) - получаем IP по имени
                                $wanif = get_real_wan_interface(); // судя по всему, получаем WAN
                                $parent_gw = file_get_contents("/tmp/{$wanif}_router"); // узнаем gateway у него (пишется в файл; у меня например в /tmp/re0_router)
                                mwexec("route add -host {$gateways[$pid]} {$parent_gw}"); // прописываем маршрут. 
                                
                                

                                Такая схема работает у меня, но у других провайдеров она может отличаться. Возможно кому-то и не надо писать маршрут…

                                @KanyT:

                                И еще почему-то не прописывается default gateway в System->Routing, и у клиентов интернета нет, пока руками не прописать что opt1 это default

                                Я через это же меню поставил OPT1 как default галочкой, все сохраняется вроде.

                                @KanyT:

                                Но в целом прогресс огромный - оно даже переподымается после падения wan :))

                                пишите о результатах


                                @Bishounen:

                                Такой вопрос, на сколько я понимаю при такой настройке  на Wan мы получаем ip по DHCP?

                                вроде да  :)

                                @Bishounen:

                                Вопрос в следующем, при провешивании портов с помощью UPNP у нас они будут не в Интернет же провешиваться? Или я что-то не понимаю?

                                не занимался этим. Тока бросал порт для торрентов (NAT). Там надо было в interfaces выбрать L2TP (ну или как там называется интерфейс с интернетом)


                                И вообще позволю себе себя же процитировать:
                                @ncat:

                                в FreeBSD новичок, то же самое относится к сетевым технологиям.

                                так что проверяйте и относитесь с недоверием  ::)

                                надеюсь нету оверквотинга?

                                Ах да! следите за тем что написали в скрипте и как он работает (mpd-keeper); он в бесконечном цикле  ;D. Так что проверяйте процессы при первых запусках, а то мало ли что  :-\

                                1 Reply Last reply Reply Quote 0
                                • K
                                  KanyT
                                  last edited by

                                  Почти неделю полёт нормальный. Наконец-то один из самых сочных фаерволов нормально заработал с билайном!
                                  Осуществил то что давно хотел: "МОНСТРОУТЕР"  8) - 5015A-EHF-D525 на нём esxi а в нём pfsense + файлопомойка/торрент на винде. Лёгко держит 60 мегабит по l2tp.
                                  Теперь всё самостоятельно переподключается при падениях wan и отрубе/восстановлении электричества. Проводил стресс-тесты - работает блин!
                                  Я счастлив  ;D
                                  Ещё раз спасибо ncat!!!

                                  1 Reply Last reply Reply Quote 0
                                  • N
                                    ncat
                                    last edited by

                                    хыхы) очень помог stephenw10 кстати, я его достал в личке  :D
                                    еще бы подключить принтер, сделать failover, настроить QoS и дождаться WiFi-N и можно будет не мечтать об Asus rt-n66u )))

                                    p.s. еще не смог настроить IPTV через igmp

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      mikhe
                                      last edited by

                                      ncat
                                      Принципиально именно igmp (для приставки?). Я смотрел ЧЕ 2012 на билайновском IPTV Спорт 1 HD (к которому они почти на месяц свободный доступ дали) через udpxy.

                                      1 Reply Last reply Reply Quote 0
                                      • T
                                        TheRaven
                                        last edited by

                                        В качестве теста сделал WAN(static) + PPTP(dynamic) на pFsense 2.0.1 по инструкции ncat http://forum.pfsense.org/index.php/topic,24734.msg215185.html#msg215185

                                        Провайдер Билайн. VPN-сервер IP-адресом. Работает, после перезагрузки поднимается. Наблюдаю.

                                        =======================

                                        Вопрос вдогонку - реально ли поднять еще "комплект WAN-ов" в том же духе, если у них совпадает подсеть и GW ? Т.е.

                                        LAN 192.168.1.1/24

                                        WAN1_STATIC_LOCAL 10.1.1.2/24 GW 10.1.1.1
                                        WAN1_DYNAMIC_INET 1.2.3.5/32 GW 1.2.3.4

                                        WAN2_STATIC_LOCAL 10.1.1.3/24 GW 10.1.1.1
                                        WAN1_DYNAMIC_INET 1.2.3.6/32 GW 1.2.3.4

                                        при этом хочется возможности роутинга одних клиентов из LAN в один гейт, других - в другой. Или я слишком много хочу ? :)

                                        1 Reply Last reply Reply Quote 0
                                        • A
                                          AlexS
                                          last edited by

                                          Здравствуйте!

                                          У меня интернет приходит по выделенной линии, соответственно я настроил wan на получение ip по dhcp, и добавил интерфейс opt1(pptp), который должен подниматься последним.
                                          При загрузке я вижу что сначала поднимается WAN потом LAN  и последним OPT1, однако по факту интерфейс не поднимается. Если после включения нажжать кнопку подключения или в консоле команду  /etc/rc.linkup pptp0 start все подключается и работает.
                                          Я установил пакет shellcmd написал туда эту команду, однако она все равно не срабатывает, после перезагрузки интерфейс не поднимается.
                                          Как побороть эту проблему?
                                          upd
                                          вобщем написал скрипт, который дергается по cron. Всем спасибо

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            Dealaxer
                                            last edited by

                                            ncat, оргомное псасибо за скрипты, все офигенно классно работает.

                                            В данном коде убрал только два апострофа перед $parent_gw = get_interface_gateway($port); и все заработало)))

                                            
                                                                            if(!is_ipaddr($localips[$pid])){
                                                                                    log_error("Could not get a Local IP address for PPTP/L2TP link on {$port} in interfaces_ppps_configure. Using 0.0.0.0 ip!");
                                                                                    $localips[$pid] = "0.0.0.0";
                                                                            }
                                                                            /* XXX: This needs to go away soon! [It's commented out!] */
                                                                            /* Configure the gateway (remote IP ) */
                                                                            if (!$g['booting'] && !is_ipaddr($gateways[$pid]) && is_hostname($gateways[$pid])) {
                                                                                    /* XXX: Fix later  */
                                                                                    $gateways[$pid] = gethostbyname($gateways[$pid]);
                                                                                    if(!is_ipaddr($gateways[$pid])) {
                                                                                            log_error("Could not get a valid Gateway IP from {$port} via DNS in interfaces_ppps_configure.");
                                                                                            return 0;
                                                                                    }
                                            
                                                                            }
                                                                            if(!is_ipaddr($gateways[$pid])){
                                                                                    log_error("Could not get a PPTP/L2TP Remote IP address from {$dhcp_gateway} for {$gway} in interfaces_ppps_configure.");
                                                                                    return 0;
                                                                            }
                                            
                                            /* ADDED -start- */
                                                                            //$parent_gw = get_interface_gateway($port);
                                            
                                                                            $wanif = get_real_wan_interface();
                                                                            $parent_gw = file_get_contents("/tmp/{$wanif}_router");
                                                                            mwexec("route add -host {$gateways[$pid]} {$parent_gw}");
                                            /* ADDED -end- */
                                            
                                                                            pfSense_ngctl_attach(".", $port);
                                                                            break;
                                                                    case "ppp":
                                            
                                            

                                            На данном сайте не понятно что в коде написано цифра 1 или буква l, поэтому ни сразу вбил правильно код из примера ниже.
                                            2.2 - файл mpd-keeper

                                            ##### VARIABLES #####
                                            
                                            # wan is your WAN interface network port name. Can be viewed at pfsense welcome screen.
                                            wan='re0'
                                            
                                            # l2tp is your l2tp network port name (also can be viewed in Webconfigurator -> Status -> Interfaces -> l2tp interface header
                                            l2tp='l2tp0'
                                            
                                            # pid can be found in /var/run should looks same. This file creates when your l2tp is up.
                                            pid='l2tp_opt1.pid'
                                            
                                            # repeat time for this script (in seconds)
                                            repeat_time='5'
                                            
                                            # time to wait for bringing l2tp connection up (in seconds)
                                            l2tpup_time='60'
                                            
                                            ##### CODE #####
                                            
                                            while [ 1 -eq 1 ]
                                            do
                                                if [ ! -f /tmp/${l2tp}up ]
                                                then
                                                    if [ -f /var/run/$pid ]
                                                    then
                                                            # If l2tp connection is down (no IP) and mpd5 for this connection is running we kill mpd
                                                            # to be able to change connection settings, specifically l2tp peer.
                                                            # Because if (for example) l2tp peer is down we can get different l2tp peer IP using hostname.
                                                            res2=$(cat /var/run/$pid)
                                                            echo "l2tp is down - killing mpd5" | logger
                                                            kill $res2
                                                    fi
                                                fi
                                            
                                                sleep 1
                                                res1=$(ifconfig $wan | grep status | cut -d : -f 2)
                                            
                                                if [ ! -f /var/run/$pid ]
                                                then
                                                    if [ "$res1" = " active" ]
                                                    then
                                                        # If wan connection is active and there is no l2tp over it, we start l2tp connection.
                                                        echo "wan is active - starting l2tp connection" | logger
                                                        /etc/rc.linkup $l2tp start
                                                        # L2TP connection needs some time to come up.
                                                        # Without sleep it seems that mpd5 will be killed before it has a chance
                                                        # to connect to l2tp server (if repeat_time is less than ~30)
                                                        sleep $l2tpup_time
                                                    else
                                                        #echo "wan is not active. l2tp cannot start" | logger
                                                    fi
                                                fi
                                            
                                                sleep $repeat_time
                                            done
                                            
                                            

                                            Скрипты актуальны и работают, переподключение у скрипта занимает 3-4 минуты, долговато, но все равно супер. В начале без скриптов интернет вообще не врубался.
                                            Теперь только непонятно почему pfsense режет скорость, из за скриптов или настроек, может кто-нить подсказать?
                                            Скорость должна быть 80 мбит/с а на деле 50-60 мбит/с.

                                            Народ также подскажите как настроить wifi карточку чтобы она также раздавала инет?
                                            И самое главное как настроить раздачу интернета для всех одинаково?, чтобы не получилось как на билайновском роутере один качает и все, все остальные сидят курят.

                                            За ранее благодарен.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.