nE0sIghT

[Howto][L2TP][Gentoo]: Real Gentoo way

Рекомендованные сообщения

Может быть отдают по-разному в разных регионах?

 

Не знаю :rolleyes: Года 2 назад, на bugs.gentoo.org был небольшой флейм с просьбами включить в dhcp патч от ubuntu который это поддерживал. Насколько я помню к 3 версии. Это помоему единственное что работало на тот момент. Но майтейнеры сказали, что слишком немногим это надо. Сам переписывать ебилд я не решился.

 

Я честно говоря обрадовался когда твой пост нашол :-) Но... По крайней мере у меня результат нулевой.

 

За конфиг спасибо попробую на днях.

Изменено пользователем Werebear

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у меня на генте vpn подключался обычным pptp. (без l2tp и xl2tp)

а тут вдруг перестал.

log:

Feb 24 19:37:56 true pptp[6119]: anon log[main:pptp.c:310]: The synchronous pptp option is NOT activated

Feb 24 19:37:56 true pptp[6124]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'

Feb 24 19:37:56 true pptp[6124]: anon log[ctrlp_disp:pptp_ctrl.c:739]: Received Start Control Connection Reply

Feb 24 19:37:56 true pptp[6124]: anon log[ctrlp_disp:pptp_ctrl.c:757]: Negative reply received to our Start Control Connection Request

Feb 24 19:37:56 true pptp[6124]: anon log[ctrlp_error:pptp_ctrl.c:202]: Reply result code is 4 'Requester is not Authorized'. Error code is 0

Feb 24 19:37:56 true pptp[6124]: anon warn[ctrlp_disp:pptp_ctrl.c:967]: pptp_conn_close(2)

прочитал тему http://homenet.beeline.ru/index.php?showtopic=291060&st=120 про невозможность авторизации на некоторых тарифах с xl2tpd .

там нашли решение - добавили "tx bps = 100000000" в конфиг.

может есть решение для обычного pptp?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

может есть решение для обычного pptp?

 

Насколько я знаю нет. Это для патч наложенного на xl2tp.

 

А смысл вообще держатся за pptp? Вроде Beeline его активно убирает. Потом как у протокола PPtP у него нет никаких преимуществ над l2tp, а вот недостатки имеются и приличные.

Изменено пользователем Werebear

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ко всему сказанному хочется добавить следующее: можно добавить к команде start-stop-daemon опцию --nice 20 дабы повысить приоритет процеса, у меня в результате пинг до яндекса уменьшился с 39 до 35. Небольшое пояснение: у меня маршрутизатор на небольшом компе с процессором Intel Atom 330 и установленной системой Gentoo, но если используется современный мощный процессор, то польза данной опции сомнительна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Автор герой! Респект и уважуха от пацанов с Бутова.

А если серьезно, то все реально пашет на ура.

 

Есть ряд замечаний:

1) Если я добавляю net.ppp0 в ранлевлы, то происходит затык на стадии загрузки. Пишет что он пытается и тужится поднять l2tp и так долго висит. Каждый раз вручную запускать после загрузки системы - не вариант. Помогите разобраться с проблемой.

2) При разрыве не восстанавливается соединение. Выдрав кабель из eth0 и воткнув обратно ppp0 ни в какую не появляется в ifconfig.

 

Крайне хотелось бы чтоб эти моменты были проработаны.

Изменено пользователем zx410

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обновил первый пост.

Ченжлог:

- добавлен таймаут ожидания поднятия l2tp

- добавлена подгрузка модуля ядра для openl2tp

- исправлена чистка процессов xl2tp | openl2tp & pppd

- добавил отсылки к посту Werebear

 

Ну и немного мелочей

 

 

1) Если я добавляю net.ppp0 в ранлевлы, то происходит затык на стадии загрузки. Пишет что он пытается и тужится поднять l2tp и так долго висит. Каждый раз вручную запускать после загрузки системы - не вариант. Помогите разобраться с проблемой.

Сейчас таймаут добавлен.

Но трабл, может быть, в опции -nw для dhclient. Может не успевает получить адрес по dhcp?

 

2) При разрыве не восстанавливается соединение. Выдрав кабель из eth0 и воткнув обратно ppp0 ни в какую не появляется в ifconfig.

Эт к разрабам xl2tpd

Изменено пользователем nE0sIghT

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  • Изменил свой конфиг, чтобы был ближе к тому который в шапке.
  • В связи с выходом iproute2-3.5.0 добавил примечание.
  • Добавлена пара скриптов в cron для перезапуска l2tp
  • Добавлено как избавится от перезапуска кучи демонов из за рестарта net.ppp0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обновил первый пост. Добавил создание папки /var/run/xl2tpd без которой xl2tpd не запустится + проверку наличия конфига (из init скрипта)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В стабильную ветку попал новый net-tools с измененным выхлопом ifconfig

Поправил в первом посте /etc/conf.d/net

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

https://bugs.gentoo.org/show_bug.cgi?id=441828

 

Открыл багрепорт со всеми нужными файлами для сборки xl2tpd с поддержкой ядра

 

А откуда взялся xl2tpd-1.3.1-kernel_in6.patch если не секрет? :-)

Все собирается и работает но у fedora сейчас несколько другой набор патчей.

http://pkgs.fedoraproject.org/cgit/xl2tpd.git/tree/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А откуда взялся xl2tpd-1.3.1-kernel_in6.patch если не секрет? :-)

Украл у pppd - у него одно время была такая же трабла со сборкой

 

Все собирается и работает но у fedora сейчас несколько другой набор патчей.

http://pkgs.fedoraproject.org/cgit/xl2tpd.git/tree/

Нужно в багрепорт закинуть, если есть от них профит. Посмотрю, как время будет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот дифф патчей.

 

xelerance-xl2tpd-95445fc.1 - то, что я запостил в багрепорт

xelerance-xl2tpd-95445fc.2 - http://pkgs.fedoraproject.org/cgit/xl2tpd.git/tree/xl2tpd-1.3.1-kernelmode.patch

 

Я сборку .2 не пробовал, но имхо не соберется на последних ядрах. Хотя бы из-за отсутствия структур ipv6. + в .2 нет автоподгрузки модулей ядра

Т. е. имхо патч 1.3.0 - полнее

 

И еще момент - не юзайте ядра 3.6.x с ядреным xl2tpd - постоянно отваливается коннект. На 3.5.x проблем таких нет

 

З.Ы.: в первом посте изменил L2TP_TIMEOUT с 60 на 20. При 60 и проблемах с конектом загрузка может просто подвиснуть

 

 

diff -ur ./xelerance-xl2tpd-95445fc.1/linux/include/linux/if_pppol2tp.h ./xelerance-xl2tpd-95445fc.2/linux/include/linux/if_pppol2tp.h
--- ./xelerance-xl2tpd-95445fc.1/linux/include/linux/if_pppol2tp.h	2012-11-26 21:37:13.877589280 +0400
+++ ./xelerance-xl2tpd-95445fc.2/linux/include/linux/if_pppol2tp.h	2011-10-05 00:28:29.000000000 +0400
@@ -36,45 +36,6 @@
	__u16 d_tunnel, d_session;	/* For sending outgoing packets */
};

-/* Structure used to connect() the socket to a particular tunnel UDP
- * socket over IPv6.
- */
-struct pppol2tpin6_addr {
-       __kernel_pid_t  pid;            /* pid that owns the fd.
-                                        * 0 => current */
-       int     fd;                     /* FD of UDP socket to use */
-
-       __u16 s_tunnel, s_session;      /* For matching incoming packets */
-       __u16 d_tunnel, d_session;      /* For sending outgoing packets */
-
-       struct sockaddr_in6 addr;       /* IP address and port to send to */
-};
-
-/* The L2TPv3 protocol changes tunnel and session ids from 16 to 32
- * bits. So we need a different sockaddr structure.
- */
-struct pppol2tpv3_addr {
-	pid_t	pid;			/* pid that owns the fd.
-					 * 0 => current */
-	int	fd;			/* FD of UDP or IP socket to use */
-
-	struct sockaddr_in addr;	/* IP address and port to send to */
-
-	__u32 s_tunnel, s_session;	/* For matching incoming packets */
-	__u32 d_tunnel, d_session;	/* For sending outgoing packets */
-};
-
-struct pppol2tpv3in6_addr {
-       __kernel_pid_t  pid;            /* pid that owns the fd.
-                                        * 0 => current */
-       int     fd;                     /* FD of UDP or IP socket to use */
-
-       __u32 s_tunnel, s_session;      /* For matching incoming packets */
-       __u32 d_tunnel, d_session;      /* For sending outgoing packets */
-
-       struct sockaddr_in6 addr;       /* IP address and port to send to */
-};
-
/* Socket options:
 * DEBUG	- bitmask of debug message categories
 * SENDSEQ	- 0 => don't send packets with sequence numbers
diff -ur ./xelerance-xl2tpd-95445fc.1/network.c ./xelerance-xl2tpd-95445fc.2/network.c
--- ./xelerance-xl2tpd-95445fc.1/network.c	2012-11-26 21:36:57.622272965 +0400
+++ ./xelerance-xl2tpd-95445fc.2/network.c	2012-11-26 21:40:04.856161101 +0400
@@ -37,52 +37,6 @@
int kernel_support;             /* Kernel Support there or not? */
#endif

-#ifdef USE_KERNEL
-void modprobe() {
-    char * modules[] = { "l2tp_ppp", "pppol2tp", NULL };
-    char ** module;
-    char buf[256], *tok;
-    int pid, exit_status, fd;
-
-    FILE * fmod = fopen("/proc/modules", "r");
-
-    if (fmod == NULL)
-        return;
-
-    while (fgets(buf, 255, fmod) != NULL) {
-        if ((tok = strtok(buf, " ")) != NULL) {
-            for (module = modules; *module != NULL; ++module) {
-                if (!strcmp(*module, tok)) {
-                    fclose(fmod);
-                    return;
-                }
-            }
-        }
-    }
-
-    fclose(fmod);
-
-    for (module = modules; *module != NULL; ++module) {
-        if ((pid = fork()) >= 0) {
-            if (pid == 0) {
-                setenv("PATH", "/sbin:/usr/sbin:/bin:/usr/bin", 1);
-                if ((fd = open("/dev/null", O_RDWR)) > -1) {
-                    dup2(fd, 1);
-                    dup2(fd, 2);
-                }
-                execlp("modprobe", "modprobe", "-q", *module, (char *)NULL);
-                exit(1);
-            } else {
-                if ((pid = waitpid(pid, &exit_status, 0)) != -1 && WIFEXITED(exit_status)) {
-                    if (WEXITSTATUS(exit_status) == 0)
-                        return;
-                }
-            }
-        }
-    }
-}
-#endif
-
int init_network (void)
{
    long arg;
@@ -142,11 +96,10 @@
    }
    else
    {
-        modprobe();
        int kernel_fd = socket(AF_PPPOX, SOCK_DGRAM, PX_PROTO_OL2TP);
        if (kernel_fd < 0)
        {
-            l2tp_log (LOG_INFO, "L2TP kernel support not detected.\n");
+            l2tp_log (LOG_INFO, "L2TP kernel support not detected (try modprobing l2tp_ppp and pppol2tp)\n");
            kernel_support = 0;
        }
        else
Только в ./xelerance-xl2tpd-95445fc.2/: network.c.orig

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В стабильную ветку попал новый net-tools с измененным выхлопом ifconfig

Поправил в первом посте /etc/conf.d/net

Спасибо.

Изменено пользователем pascorp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И еще момент - не юзайте ядра 3.6.x с ядреным xl2tpd - постоянно отваливается коннект. На 3.5.x проблем таких нет

 

Не знаю

Linux werebear 3.6.6-gentoo #1 SMP Mon Nov 26 00:23:44 MSK 2012 x86_64 AMD A8-3870 APU with Radeon(tm) HD Graphics AuthenticAMD GNU/Linux

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обновился на ядро 3.7.1 и xl2tpd-1.3.1-r2 из портежей - проблем нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чего то не получается. Вот примеры используемых конфигураций:

 

/etc/conf.d/net, написанный Werebear для dhcpcd:

# Раскомментировать нужный бэкэнд
L2TP_BACKEND="xl2tpd"
#L2TP_BACKEND="openl2tpd"
# Таймаут ожидания поднятия l2tp
L2TP_TIMEOUT=60


# Указываете интерфейс, через который будет подниматься vpn
# Если отличается от указанного - меняете здесь и ниже в 3х строках _eth0 на свой
DEPEND="eth0"

# Указываете интерфейс туннеля
# Если отличается от указанного - меняете здесь и ниже в 2х строках _ppp0 на свой
L2TP="ppp0"

# Маршруты для локального интерфейса - в дополнение к получаемым по DHCP
# Обязательно указывать с маской. Разделять пробелом/новой строкой/табуляцией
#ROUTES="
#    195.14.50.0/27
#    78.106.0.0/15
#    224.0.0.0/4
#"

#Используем dhcpcd
config_eth0="dhcp"
modules_eth0="dhcpcd"

config_ppp0="null"

depend_ppp0() {
   need net.${DEPEND}
}


check_module () {
   if ! [[ -f /proc/net/pppol2tp ]]; then
       ebegin "Loading l2tp module"
       # try both new and old module names
       modprobe l2tp_ppp 2>/dev/null || modprobe pppol2tp 2>/dev/null
       eend $?.
   fi
}

preup() {
   if [ -z "${L2TP_BACKEND}" ]; then
       L2TP_BACKEND="xl2tpd"
   fi

   if [ x"${IFACE}" = x"${L2TP}" ]; then
       if [ "${L2TP_BACKEND}" = "xl2tpd" ]; then
           check_module
           start-stop-daemon --start --quiet --exec /usr/sbin/xl2tpd
       else
           check_module
           start-stop-daemon --start --quiet --exec /usr/sbin/openl2tpd
       fi

       iface_timer=0
       while [ $iface_timer -lt $L2TP_TIMEOUT ]; do
           if [ -n "$(ifconfig | grep ${IFACE})" ]; then
               eend 0
               return 0
           else
               if [ ${iface_timer} -eq 0 ]; then
                   einfo "Waiting for l2tp..."
               fi
               sleep 1
               ((iface_timer++))
           fi
       done

       cleanup_l2tp
       eend 1
       return 1
   fi

   return 0
}

postup() {
   if [ x"${IFACE}" = x"${L2TP}" ]; then
       #gw=`route -n | awk "{ if (\\$1 == \"0.0.0.0\" && \\$8 == \"${DEPEND}\") print \\$2 }"`
       #vpn=`ifconfig | grep -A1 ${IFACE} | grep -i p-t-p | awk '{ print $3 }' | sed  's/p-t-p://gi'`
       #vpn=`ip address show ${L2TP} |grep inet| awk '{print $4}'|awk -F/ '{print $1}'`

       gw=`ip route list |grep 10.0.0.0| grep ${DEPEND} | awk '{print $3}'`
       vpn=`ifconfig  |grep destination | awk '{print $6}'`

       ip route replace ${vpn} via ${gw} dev ${DEPEND}
       ip route replace default dev ${L2TP}


   fi

   if [ x"${IFACE}" = x"${DEPEND}" ]; then

       gw=`ip route list |grep 10.0.0.0| grep ${DEPEND} | awk '{print $3}'`

       einfo "Add beeline routes..."

       # Прописываем отсутствующие маршруты
       for i in ${ROUTES}; do
           ip route add ${i} via ${gw} dev ${DEPEND}
           einfo "ip route add ${i} via ${gw} dev ${DEPEND}"
       done

       #Маршрут для iptv
       #ip route add 233.33.220.0/24 via 10.161.78.132 dev ${DEPEND} 
       #einfo "ip route add 233.33.220.0/24 via 10.161.78.132 dev ${DEPEND}"

       # Прописываем DNS через сетевуху
       for dns in $(grep nameserver /etc/resolv.conf | awk '{ print $NF }'); do
           ip route replace $dns via ${gw} dev ${DEPEND}
           einfo "ip route replace $dns via ${gw} dev ${DEPEND}"
       done
   fi

   return 0
}

predown() {
   if [ -z "${L2TP_BACKEND}" ]; then
       L2TP_BACKEND="xl2tpd"
   fi

   if [ x"${IFACE}" = x"${L2TP}" ]; then
       #gw=`route -n | awk "{ if (\\$1 == \"0.0.0.0\" && \\$8 == \"${DEPEND}\") print \\$2 }"`
       #vpn=`ifconfig | grep -A1 ${IFACE} | grep -i p-t-p | awk '{ print $3 }' | sed  's/p-t-p://gi'`
       #vpn=`ip address show ${L2TP} |grep inet| awk '{print $4}'|awk -F/ '{print $1}'`

       gw=`ip route list |grep 10.0.0.0| grep ${DEPEND} | awk '{print $3}'`
       vpn=`ifconfig  |grep destination | awk '{print $6}'`

       cleanup_l2tp

       if [ -n ${gw} ]; then
           ip route del ${vpn} via ${gw} dev ${DEPEND}
       fi

   fi
   return 0
}

postdown() {
   #Замещаем default gw на локалку
       if [ x"${IFACE}" = x"${L2TP}" ]; then
          gw=`ip route list |grep 10.0.0.0| grep ${DEPEND} | awk '{print $3}'`
          ip route replace default via ${gw} dev eth0
       fi
  return 0
}



cleanup_l2tp() {
       if [ "${L2TP_BACKEND}" = "xl2tpd" ]; then
           start-stop-daemon --stop --quiet --pidfile /var/run/xl2tpd.pid

           if [ -n "$(pidof xl2tpd)" ]; then
               killall -9 xl2tpd > /dev/null 2>&1
           fi

           if [ -e /var/run/xl2tpd.pid ]; then
               rm -f /var/run/xl2tpd.pid
           fi
       else
           start-stop-daemon --stop --quiet --pidfile /var/run/openl2tpd.pid

           if [ -n "$(pidof openl2tpd)" ]; then
               killall -9 openl2tpd > /dev/null 2>&1
           fi

           if [ -e /var/run/openl2tpd.pid ]; then
               rm -f /var/run/openl2tpd.pid
           fi
       fi

       killall pppd > /dev/null 2>&1
       if [ -n "$(pidof pppd)" ]; then
           killall -9 pppd > /dev/null 2>&1
       fi
}

 

/etc/xl2tpd/xl2tpd.conf

 

[global]
access control = yes

[lac beeline]
lns = tp.internet.beeline.ru
name = ***** 
redial = yes
redial timeout = 5
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tp
autodial = yes
flow bit = no
require chap = yes
require pap = no
refuse chap = no
refuse pap = yes
tx bps = 1000000000

 

/etc/ppp/options.xl2tp

 

name *****
remotename beeline
ipparam beeline
noaccomp
nopcomp
novj
novjccomp
nobsdcomp
nodeflate
persist
noipx
nomp
maxfail 0

 

В итоге при запуске net.ppp0 вижу следующее

 

# tail -f --lines=10000 /var/log/messages | grep xl2tpd

 

Jan  6 23:58:33 AquaBlast xl2tpd[26145]: Calling on tunnel 11188
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: Call established with 213.234.199.165, Local: 53728, Remote: 26112, Serial: 11 (ref=0/0)
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: start_pppd: I'm running: 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "/usr/sbin/pppd" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "passive" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "nodetach" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: ":" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "refuse-pap" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "name" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "логин_убрал" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "debug" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "file" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "/etc/ppp/options.xl2tp" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "ipparam" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "213.234.199.165" 
Jan  6 23:58:33 AquaBlast xl2tpd[26145]: "/dev/pts/16" 
Jan  6 23:58:38 AquaBlast xl2tpd[26145]: death_handler: Fatal signal 15 received

 

# tail -f --lines=10000 /var/log/messages | grep pppd

 

Jan  6 23:58:37 AquaBlast pppd[26392]: Failed to open /dev/pts/10: No such file or directory
Jan  6 23:58:37 AquaBlast pppd[26392]: Failed to open /dev/pts/10: No such file or directory
Jan  6 23:58:37 AquaBlast pppd[26392]: Failed to open /dev/pts/10: No such file or directory
Jan  6 23:58:37 AquaBlast pppd[26392]: Failed to open /dev/pts/10: No such file or directory
Jan  6 23:58:37 AquaBlast pppd[26392]: Failed to open /dev/pts/10: No such file or directory
Jan  6 23:58:37 AquaBlast pppd[26392]: Failed to open /dev/pts/10: No such file or directory
Jan  6 23:58:38 AquaBlast pppd[26589]: Failed to open /dev/pts/14: No such file or directory
Jan  6 23:58:38 AquaBlast pppd[26589]: Failed to open /dev/pts/14: No such file or directory
Jan  6 23:58:38 AquaBlast pppd[26589]: Failed to open /dev/pts/14: No such file or directory
Jan  6 23:58:38 AquaBlast pppd[26589]: Failed to open /dev/pts/14: No such file or directory
Jan  6 23:58:38 AquaBlast pppd[26589]: Failed to open /dev/pts/14: No such file or directory
Jan  6 23:58:38 AquaBlast pppd[26589]: Failed to open /dev/pts/14: No such file or directory

 

Большое значение --lines для tail задавал по причине огромного количества спама от pppd вида

pppd: Failed to open /dev/pts/*: No such file or directory

Аналогичный вышенаписанному вывод /var/log/messages имеется при использовании dhclient и pump. Убирая записи маршрутов для dhcpcd из /etc/conf.d/net, большого количества спама не наблюдал, что и понятно, отсутствуют назначенные маршруты по умолчанию. Но соединения не было и нет. Может кто помочь?

 

P.S. Отличается ли форма записи логина для соединения по l2tp от стандартной? Например, гугля в поисках своей проблемы с l2tp, на одном из форумов (не помню, каком) наткнулся на запись в /etc/ppp/options.l2tp вида name = user@beeline.internet.ru. Правильно ли так записывать свой логин, или фиолетово, можно и просто "user"?

 

P.P.S Сейчас сижу на pptp, хочу перейти на l2tp по причине наличия в Билайне тарифов с большей скоростью за те же деньги, только условие одно -- обязательно наличие подключения l2tp.

Изменено пользователем AquaBlast

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Версии xl2tpd и pppd какие?

 

Про логины вида user@beeline.internet.ru не слышал

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

emerge -pv ppp xl2tpd

 

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] net-dialup/ppp-2.4.5-r3  USE="gtk pam -activefilter -atm -dhcp -eap-tls -ipv6 -radius" 0 kB
[ebuild   R    ] net-dialup/xl2tpd-1.3.0  USE="dnsretry" 0 kB

 

Щас вот сам глянул, и обратил внимание: может, ppp с флагом dhcp собрать надо?

Изменено пользователем AquaBlast

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как минимум обнови xl2tpd до 1.3.1-r2

 

У меня ppp собран с dhcp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так... Пересобрал ppp,обновил xl2tpd до 1.3.1-r2 (какой был для ~amd64 keywords), создал папку с файлом /var/run/xl2tpd/xl2tp-control, так как ругань в логах раздавалась на их отсутствие, в итоге получаем вот это:

 

Jan  7 01:55:08 AquaBlast xl2tpd[8852]: Calling on tunnel 9273
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: Call established with 213.234.199.165, Local: 7723, Remote: 38283, Serial: 12 (ref=0/0)
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: start_pppd: I'm running: 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "/usr/sbin/pppd" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "passive" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "nodetach" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: ":" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "refuse-pap" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "name" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "0894721001" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "debug" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "file" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "/etc/ppp/options.xl2tp" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "ipparam" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "213.234.199.165" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "plugin" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "pppol2tp.so" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "pppol2tp" 
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: "8" 
Jan  7 01:55:08 AquaBlast pppd[9395]: Plugin pppol2tp.so loaded.
Jan  7 01:55:08 AquaBlast pppd[9395]: pppd 2.4.5 started by root, uid 0
Jan  7 01:55:08 AquaBlast pppd[9395]: using channel 13
Jan  7 01:55:08 AquaBlast pppd[9395]: Using interface ppp1
Jan  7 01:55:08 AquaBlast pppd[9395]: Connect: ppp1 <--> 
Jan  7 01:55:08 AquaBlast pppd[9395]: PPPoL2TP options: debugmask 0
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x48815fc6>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x1 <mru 1460> <asyncmap 0xa0000> <auth pap> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x1 <auth pap>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x48815fc6>]
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: handle_avps:  don't know how to handle atribute 46.
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: handle_avps:  don't know how to handle atribute 104.
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: control_finish: Connection closed to 213.234.199.165, serial 12 (Locally generated disconnect)
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: Terminating pppd: sending TERM signal to pid 9395
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x2 <mru 1460> <asyncmap 0xa0000> <auth chap MD5> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x2 <auth chap MD5>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x3 <mru 1460> <asyncmap 0xa0000> <auth chap MS> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x3 <auth chap MS>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x4 <mru 1460> <asyncmap 0xa0000> <auth pap> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x4 <auth pap>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x5 <mru 1460> <asyncmap 0xa0000> <auth chap MD5> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x5 <auth chap MD5>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x6 <mru 1460> <asyncmap 0xa0000> <auth chap MS> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x6 <auth chap MS>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x7 <mru 1460> <asyncmap 0xa0000> <auth pap> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x7 <auth pap>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x8 <mru 1460> <asyncmap 0xa0000> <auth chap MD5> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x8 <auth chap MD5>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x9 <mru 1460> <asyncmap 0xa0000> <auth chap MS> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0x9 <auth chap MS>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0xa <mru 1460> <asyncmap 0xa0000> <auth pap> <magic 0x1ea962c4> <pcomp> <accomp>]
Jan  7 01:55:08 AquaBlast pppd[9395]: No auth is possible
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP ConfRej id=0xa <auth pap>]
Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP TermReq id=0xb]
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP TermAck id=0xb]
Jan  7 01:55:08 AquaBlast pppd[9395]: Terminating on signal 15
Jan  7 01:55:08 AquaBlast pppd[9395]: sent [LCP TermReq id=0x2 "User request"]
Jan  7 01:55:09 AquaBlast pppd[9347]: Connection terminated.
Jan  7 01:55:09 AquaBlast pppd[9347]: Modem hangup
Jan  7 01:55:09 AquaBlast pppd[9347]: Exit.
Jan  7 01:55:11 AquaBlast pppd[9395]: sent [LCP TermReq id=0x3 "User request"]
Jan  7 01:55:12 AquaBlast xl2tpd[8852]: death_handler: Fatal signal 15 received
Jan  7 01:55:12 AquaBlast xl2tpd[8852]: Connection 52014 closed to 213.234.199.165, port 1701 (Server closing)
Jan  7 01:55:12 AquaBlast pppd[9395]: Terminating on signal 15
Jan  7 01:55:12 AquaBlast /etc/init.d/net.ppp0[8522]: ERROR: net.ppp0 failed to start

 

Особенно меня смущают вот эти строки:

 

Jan  7 01:55:08 AquaBlast xl2tpd[8852]: handle_avps:  don't know how to handle atribute 46.
Jan  7 01:55:08 AquaBlast xl2tpd[8852]: handle_avps:  don't know how to handle atribute 104.

 

что это за атрибуты вообще и откуда берутся?

 

Хотя если копать по этому ответу сервера:

 

Jan  7 01:55:08 AquaBlast pppd[9395]: rcvd [LCP ConfReq id=0x1 <mru 1460> <asyncmap 0xa0000> <auth pap> <magic 0x1ea962c4> <pcomp> <accomp>]

 

то наверное следует подправить конфигурацию с указанием mru и mtu и для авторизации установить pap. Попробую, посмотрим, что получится.

_________________________________________________________________

 

Попробовал -- ни хрена в итоге. Вывод лога тот же, что выше. Сегодня спать, завтра ещё подумаю :)

Изменено пользователем AquaBlast

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то не сходится с интерфейсами

 

1) В твоем конфиге выше используется интерфейс "ppp0", а в логах - ppp1

2) В /etc/ppp/options.xl2tp у тебя не прописан параметр "unit x", где x - номер ppp интерфейса

 

+ Там же нет параметра defaultroute

 

По поводу /var/run/xl2tpd - фикс уже был добавлен в 1ый пост. Проверяй конфиги по 1ому сообщению - Werebear не вносил мои последние правки в свои конфиги

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"No auth is possible" обычно случается в том случае, если в /etc/ppp/chap-secrets нет подходящей учетной записи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

To nE0sIghT:

/etc/ppp/options.xl2tp полностью скопипасченный с 1-го поста в теме пробовал использовать, только с версией xl2tpd-1.3.0. Выходила та же фигня с "No auth is possible". Попробуем, что получится сейчас, тем более, что на сей раз.

Насчёт /var/run/xl2tpd -- отличия конфигов с Werebear всё-таки есть, у него в /etc/conf.d/net отсутствует опция checkconfig. Критично ли её наличие? Простое добавление ничего не дало, файл /var/run/xl2tpd/l2tp-control приходится создавать вручную вместе с каталогом, его содержащим. Без него вывод tail -f /var/log/messages | grep xl2tpd при попытке запуска net.ppp0 такой:

 

Jan  7 01:20:10 AquaBlast xl2tpd[27983]: setsockopt recvref[30]: Protocol not available
Jan  7 01:20:10 AquaBlast xl2tpd[27983]: Using l2tp kernel support.
Jan  7 01:20:10 AquaBlast xl2tpd[27984]: open_controlfd: Unable to open /var/run/xl2tpd/l2tp-control for reading.

 

To adjkerntz:

Но если я прописал в /etc/xl2tpd/l2tp-secrets учётную запись в формате user[tab]*[tab]password, разве этого не достаточно?

 

Пилять, недостаточно... Надо было внимательней читать первый пост...

________________________________________________________________________

/

Отлично, парни, запустил, благодарю за помощь! :)nE0sIghT, вопрос по /var/run/xl2tpd/l2tp-control остаётся пока открытым. Фикс для него в первом посте я не увидел, можешь ткнуть пальцем, плз?

Изменено пользователем AquaBlast

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Но если я прописал в /etc/xl2tpd/l2tp-secrets учётную запись в формате user[tab]*[tab]password, разве этого не достаточно?

 

Пилять, недостаточно... Надо было внимательней читать первый пост...

Угу. В этот файл писать вообще ничего не нужно. Логин/пароль - в chap-secrets. И параметра там 4.

 

Фикс для него в первом посте я не увидел, можешь ткнуть пальцем, плз?

 

Функция checkconfig + ее вызов в preup() - создает папку /var/run/xl2tpd + ставит на нее права

l2tp-control создается xl2tpd при запуске.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Функция checkconfig + ее вызов в preup() - создает папку /var/run/xl2tpd + ставит на нее права

l2tp-control создается xl2tpd при запуске.

 

Отлично, благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Стоит отметить, что использование параметра rc_net_ppp0_need="net.eth0" вместо функции depend_ppp0() не даёт ничего, даже наоборот, только вредит. Точный вывод messages, не приведу, уже далеко по времени весь спам убежал (и вытащить тяжело, сам файл весит более 29 гигабайт, почистить надо), но приблизительно могу описать, что происходило, когда читал лог: запрос на соединение ppp0 происходит без ожидания интерфейса eth0, в результате открывается несколько запросов на соединение с использованием xl2tpd. Соединение на интерфейсе ppp0 происходит на 5-м или 6-м запросе, когда соединяется eth0, причём для каждого запроса xl2tpd запускается как отдельный процесс (отличающийся ID процесса xl2tpd для каждого запроса). После корректного соединения поступает запрос на отключение интерфейса ppp0 от процесса xl2tpd с первого запроса, поскольку сам первый запрос ушёл в пустоту. Возникает конфликт между отдельными процессами xl2tpd, в результате чего (а может и не по этой причине, поскольку с ядра подгружаются только нужные модули) ядро падает в kernel_panic. Систему перегрузить получается только через Alt+SysRq+REISUB.

Изменено пользователем AquaBlast

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, натыкался по началу и на эти грабли.

 

Сейчас конфиг почти оптимален. Следующий шаг - переложить его в модуль openrc с использованием net-tools/iproute2 и отправить патчем разрабам.

Как руки дойдут - сделаю проект на гитхабе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конструкция функции postup() оказалась полезной и для апдейта конфигурации соединения домашних компьютеров с домашним же pptp-сервером. Автоматически назначаются маршруты к билайновским dns-серверам, прописанным в конфигах pptpd. В результате не пришлось поднимать dns-форвардинг. Если нужно, могу выложить здесь произведённые изменения в конструкции.

Изменено пользователем AquaBlast

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое спасибоо автору за рабочую подробную инструкцию по поднятию инета в Генту.

 

От себя хотел бы добавить, что всё сразу заработало кроме косяка с версиями пакета sys-apps/net-tools

 

В инструкции в конфиге /etc/conf.d/net в функции postup() { используется новый формат вывода ifconfig, а старый закоментирован. При этом в том же конфиге в функции predown() { используется старый формат выдачи данных ifconfig.

 

Лично я обновил пакет sys-apps/net-tools с опцией old-output после чего в postup() { закоментировал

 

#vpn=`ifconfig | grep -A1 ${IFACE} | grep -i p-t-p | awk '{ print $3 }' | sed  's/p-t-p://gi'`

 

и раскоментировал

 

vpn=`ifconfig | grep -A1 ${IFACE} | grep -i dest | awk '{ print $6 }'`

 

Будьте тут внимательны.

 

p.s. ещё раз спасибо!

Изменено пользователем ALEX.inf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас