nE0sIghT

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

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

Принципы этого howto:

Подходит для систем инициализации openrc и systemd.

Используются xl2tpd (openrc/systemd) или openl2tpd (только openrc, настройка openl2tpd здесь не рассматривается).

Берем всю необходимую информацию от провайдера - по dhcp. Никаких ручных указаний шлюзов, dns серверов, маршрутов etc

 

Интернет поднимается по «/etc/init.d/ppp0 start» в openrc или «systemctl start xl2tpd» в systemd и убирается по «/etc/init.d/ppp0 stop» в openrc или «systemctl stop xl2tpd» - стандартно. При старте/остановке системы или вручную.

 

Необходимые пакеты:

net-dialup/xl2tpd

net-dialup/ppp

net-misc/dhcp +client или net-misc/dhcpcd

sys-apps/iproute2 или sys-apps/net-tools -old-output

sys-apps/which

 

Необходимые пакеты для systemd:

net-misc/netctl

sys-apps/ifplugd

>=net-dialup/xl2tpd-1.3.1-r3

 

 

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

CONFIG_PPP_FILTER=y

CONFIG_PPP_ASYNC=y

CONFIG_PPP_SYNC_TTY=y

CONFIG_PPPOL2TP=y

 

 

Общие настройки для openrc и systemd:

 

Если используете dhclient:

 

/etc/dhcp/dhclient.conf:

 

 

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
option ms-classless-static-routes code 249 = array of unsigned integer 8;

supersede dhcp-server-identifier 255.255.255.255;
request subnet-mask, broadcast-address, time-offset,
routers, static-routes, domain-name, domain-name-servers,
domain-search, interface-mtu,
rfc3442-classless-static-routes, ms-classless-static-routes;

timeout 40;
retry 30;

 

 

 

/etc/dhcp/dhclient-exit-hooks:

 

 

#!/bin/sh

if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then
   if [ x"$reason" == x"BOUND" -o x"$reason" == x"REBOOT" ]; then
	rfc_routes=($new_rfc3442_classless_static_routes)

	for(( i=0; i < ${#rfc_routes[@]}; )); do
		net_length=${rfc_routes[$i]}
		((i++))

		net_address=(0 0 0 0)
		for(( j=0; j < $[$net_length / 8 + ($net_length % 8 ? 1 : 0)]; j++, i++)); do
		    net_address[$j]=${rfc_routes[$i]}
		done

		gateway=(0 0 0 0)
		for (( j=0; j < 4; j++, i++ )); do
		    gateway[$j]=${rfc_routes[$i]}
		done

		old_IFS="$IFS"
		IFS='.'

		if [[ -n "$(which ip 2>/dev/null)" ]]; then
		    ip route replace "${net_address[*]}/$net_length" via "${gateway[*]}"
		else
		    if [[ -n "$(which route 2>/dev/null)" ]]; then
			if [ x"$net_length" == x"32" ]; then
			    route add -host "${net_address[*]}" gw "${gateway[*]}"
			else
			    route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
			fi
		    fi
		fi

		IFS="$old_IFS"
	done
   fi
fi


if [ x"$new_ms_classless_static_routes" != x"" ]; then
   if [ x"$reason" == x"BOUND" -o x"$reason" == x"REBOOT" ]; then
	ms_routes=($new_ms_classless_static_routes)

	for(( i=0; i < ${#ms_routes[@]}; )); do
		net_length=${ms_routes[$i]}
		((i++))

		net_address=(0 0 0 0)
		for(( j=0; j < $[$net_length / 8 + ($net_length % 8 ? 1 : 0)]; j++, i++)); do
		    net_address[$j]=${ms_routes[$i]}
		done

		gateway=(0 0 0 0)
		for (( j=0; j < 4; j++, i++ )); do
		    gateway[$j]=${ms_routes[$i]}
		done

		old_IFS="$IFS"
		IFS='.'

		if [[ -n "$(which ip 2>/dev/null)" ]]; then
		    ip route replace "${net_address[*]}/$net_length" via "${gateway[*]}"
		else
		    if [[ -n "$(which route 2>/dev/null)" ]]; then
			if [ x"$net_length" == x"32" ]; then
			    route add -host "${net_address[*]}" gw "${gateway[*]}"
			else
			    route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
			fi
		    fi
		fi

		IFS="$old_IFS"
	done
   fi
fi

 

 

 

Если используете dhcpcd:

 

/etc/dhcpcd.conf:

 

 

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
#clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option subnet_mask, routers, time_offset
option domain_name_servers, domain_name, domain_search
option static_routes, classless_static_routes, ms_classless_static_routes
# Most distributions have NTP support.
#option ntp_servers
# Respect the network MTU.
# Some interface drivers reset when changing the MTU so disabled by default.
option interface_mtu

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# A hook script is provided to lookup the hostname if not set by the DHCP
# server, but it should not be run by default.
nohook lookup-hostname

ipv4only

 

 

 

/etc/dhcpcd.enter-hook:

 

 

if [ "$reason" = "BOUND" -o "$reason" = "REBOOT" ]; then
if [ -n "$new_ms_classless_static_routes" -o -n "$new_classless_static_routes" ]; then
	if [ -n "$new_routers" ]; then
		if [ -n "$old_routers" ]; then
			routers=($old_routers)
			for router in "${routers[@]}"; do
				if [[ -n "$(which ip 2>/dev/null)" ]]; then
					ip route del to default via $router
				else
					route del default gw $router
				fi
                	done
		fi

		routers=($new_routers)
		for router in "${routers[@]}"; do
			if [[ -n "$(which ip 2>/dev/null)" ]]; then
				ip route add to default via $router
			else
				route add default gw $router
			fi
            	done
        fi
fi
fi

 

 

 

Дальше - для всех

 

/etc/ppp/ip-up.d/45-ppp0.sh:

 

 

#!/bin/sh

export PATH="$PATH"

# Указываете интерфейс, через который будет подниматься vpn
DEPEND="beeline"
# Указываете интерфейс туннеля
L2TP="ppp0"

# Дополнительные статические маршруты для локалки
ROUTES="
   195.14.50.0/27
   78.106.0.0/15
"
vpn="${5}"

[[ "${1}" != "${L2TP}" ]] && return 0

if [[ -n "$(which ip 2>/dev/null)" ]]; then
   gw=`ip route | awk "{ if(\\$1 == \"default\" && \\$5 == \"${DEPEND}\") print \\$3 }"`
   if [ -n "${gw}" ]; then
       ip route replace ${vpn} via ${gw}
       ip route replace 224.0.0.0/4 dev ${DEPEND}

       ip route replace default dev ${1} metric 0
       ip route replace default via ${gw}  metric 1

       for i in ${ROUTES}; do
           ip route replace ${i} via ${gw}
       done
   fi
else
   if [[ -n "$(which route 2>/dev/null)" ]]; then
gw=`route -n | awk "{ if (\\$1 == \"0.0.0.0\" && \\$8 == \"${DEPEND}\") print \\$2 }"`
if [ -n "${gw}" ]; then
    route add ${vpn} gw ${gw}
    route add -net 224.0.0.0/4 ${DEPEND}

    route del default
    route add default dev ${1} metric 0
    route add default gw ${gw} metric 1

    for i in ${ROUTES}; do
        route add -net ${i} gw ${gw}
    done
fi
   fi
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

 

 

lcp-echo-failure 10
lcp-echo-adaptive
lcp-echo-interval 60

 

 

 

/etc/ppp/options.xl2tp:

 

 

name логин_интернета
remotename beeline
mru 1460
mtu 1460
noaccomp
nopcomp
novj
novjccomp
nobsdcomp
nodeflate
noipx
nomp
defaultroute
unit 0

 

 

 

Если используете интерфейс туннеля НЕ ppp0, то меняете в настройке "unit 0" номер интерфейса

 

 

/etc/ppp/chap-secrets

 

 

# Secrets for authentication using CHAP
# client	server	secret			IP addresses
логин_интернета * пароль_интернета *

 

 

 

ВНИМАНИЕ! В файле выше ЧЕТЫРЕ параметра. Звездочка в конце - не лишняя!

 

 

Настройки для openrc

 

/etc/conf.d/net

 

 

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

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

# Меняете на dhcpcd если нужно
config_beeline="dhclient"
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
}

checkconfig() {
   if [ "${L2TP_BACKEND}" = "xl2tpd" ]; then
       if [[ ! -f /etc/xl2tpd/xl2tpd.conf ]] ; then
           eerror "Missing /etc/xl2tpd/xl2tpd.conf configuration file!"
           eerror "Example configuration file could be found in doc directory."
           return 1
       fi

       if [ ! -d /var/run/xl2tpd ] ; then
           checkpath -d -m 755 /var/run/xl2tpd
       fi
   fi

   return 0
}

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

   checkconfig || return 1

   if [ x"${IFACE}" = x"${L2TP}" ]; then
       if [ "${L2TP_BACKEND}" = "xl2tpd" ]; then
           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
}       

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

   if [ x"${IFACE}" = x"${L2TP}" ]; then
       cleanup_l2tp
   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
}

 

 

 

Для автозапуска инета вместе с системой:

rc-update add net.beeline default

rc-update add net.ppp0 default

 

xl2tpd НЕ добавляем в ранлевелы.

 

 

Настройки для systemd

 

/etc/netctl/beeline:

 

 

Description='Beeline'
# Указываете интерфейс, через который будет подниматься vpn
# Если отличается от указанного - меняете здесь, меняете название файла и далее - при выполнении команд используйте свой интерфейс
Interface=beeline
Connection=ethernet
IP=dhcp
# Меняете на dhcpcd если нужно
DHCPClient=dhclient

 

 

 

 

Пакет xl2tpd в Gentoo пока не содержит unit файл для systemd.

Все необходимые файлы я приложил к багрепорту.

Берите unit и патч оттуда, ставьте пропатченную версию xl2tpd

 

/etc/systemd/system/xl2tpd.service:

 

 

.include /usr/lib/systemd/system/xl2tpd.service

[service]
RestartSec=3
Restart=on-failure

 

 

 

Для автозапуска инета вместе с системой:

systemctl enable netctl-ifplugd@beeline

systemctl enable xl2tpd

 

 

В решении:

net-dialup/xl2tpd на текущий момент не содержит unit файла для systemd. Создан багрепорт: https://bugs.gentoo.org/show_bug.cgi?id=477800

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

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


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

Принципы этого howto:

Используется xl2tpd. ...

на каком тарифе это работает и в каком городе? это важно - на новых тарифах какие-то проблемы

зы маршруты - вторично.

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

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


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

Ускоряйся, Балаково

 

Добавил возможность добавления кастомных маршрутов - в дополнение к получаемым по DHCP

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


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

Добавил диапазоны для просмотра IPTV при поднятом l2tp

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


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

Ускоряйся, Балаково

...

 

Это значит что подключение работает на новых тарифах (которые 50Мбит L2TP) или нет? Какой у Вас тариф?

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


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

В Балаково Ускоряйся - это 8 Мбит, http://internet.beeline.ru/provod/balakovo/tarif/tarif.wbp?id=3802dd00-34e8-4487-944d-bca68d3c4e85

50 МБит тарифов у нас нет, т. е. проверить не могу.

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


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

По крайней мере на обычных тарифах работает, а на новых проверю когда придёт время.

 

Кстати может знаете - периодически логи наполняются такими мессагами:

xl2tpd: write_packet: Resource temporarily unavailable(11)

По этой теме много всего пишут, но как-то ничего внятного.

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


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

Я использую git версию. Ебилды 1.2.8 и 9999 версий - в аттаче.

Таких сообщений нет.

 

Есть сообщения вида "udp_xmit failed to х.х.х.х:1701 with err=-1:Resource temporarily unavailable". Последний раз было 2 дня назад - страницы 3-4 сообщений.

 

Здесь есть патч для тех, `кого раздражает в "syslog" "write_packet: Resource temporarily unavailable(11)"`

Не проверял

xl2tpd.zip

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


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

Поставил git версию, патч не помог, но и хуже не стало. Видимо из-за торрентокачалки такое.

Изменено пользователем FreeM@N DiggerS

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


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

Не думаю, что это связано с конкретным ПО.

Насколько помню, в багтрекере xl2tpd создан багрепорт на эту тему

 

З.Ы.: по поводу моего ебилда для версии 9999: в нем добавлен use флаг kernel. При включении - xl2tpd собирается с поддержкой модуля ядра pppol2tp, но этот модуль не поддерживается xl2tpd для новых версия ядра.

Если собираете с +kernel, то модуль pppol2tp в ядре должен быть отключен. Иначе, xl2tpd не будет создавать туннель

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

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


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

Всё сделал по мануалу, однако 2 вопроса (ибо мало опыта с linux):

  1. В какой момент создаётся /etc/init.d/ppp0 и xl2tpd из зависимости? Сделал всё по инструкции, но вот таких скриптов нет.
  2. Что значит dhcp + client ? dhcp установил. В качестве клиента использую dhcpcd. Если ограничиться установкой только dhcp, то согласно настойкам net, система не получает ip...

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

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


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

В какой момент создаётся /etc/init.d/ppp0

net.ppp0 (и любые другие net.x скрипты в /etc/init.d) - это симлинк на net.lo

Этот момент описан в хэндбуке - настройка сети при установке

 

... и xl2tpd из зависимости?

Сделай emerge net-dialup/xl2tpd

 

equery f net-dialup/xl2tpd | grep init.d
/etc/init.d
/etc/init.d/xl2tpd

 

Пакет указан в первом сообщении

 

Что значит dhcp + client ?

 

Это значит, что пакет net-misc/dhcp должен быть собран с USE флагом client

Актуально только для версии 4+

В dhcp-3 клиент ставится всегда

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


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

equery f net-dialup/xl2tpd | grep init.d
/etc/init.d
/etc/init.d/xl2tpd

equery f net-dialup/xl2tpd
[ Searching for packages matching net-dialup/xl2tpd... ]
* Contents of net-dialup/xl2tpd-1.2.8:
/etc
/etc/xl2tpd
/etc/xl2tpd/l2tp-secrets
/usr
/usr/bin
/usr/bin/pfc
/usr/sbin
/usr/sbin/xl2tpd
/usr/share
/usr/share/doc
/usr/share/doc/xl2tpd-1.2.8
/usr/share/doc/xl2tpd-1.2.8/CREDITS.bz2
/usr/share/doc/xl2tpd-1.2.8/README.patents.bz2
/usr/share/doc/xl2tpd-1.2.8/README.xl2tpd.bz2
/usr/share/doc/xl2tpd-1.2.8/l2tp-secrets.sample.bz2
/usr/share/doc/xl2tpd-1.2.8/l2tpd.conf.sample.bz2
/usr/share/doc/xl2tpd-1.2.8/rfc2661.txt.bz2
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/pfc.1.bz2
/usr/share/man/man5
/usr/share/man/man5/l2tp-secrets.5.bz2
/usr/share/man/man5/xl2tpd.conf.5.bz2
/usr/share/man/man8
/usr/share/man/man8/xl2tpd.8.bz2
/var
/var/run
/var/run/xl2tpd
/var/run/xl2tpd/.keep_net-dialup_xl2tpd-0

grep init.d - пустой

 

Использовал net-dialup/xl2tpd-1.2.8.ebuild из шапки.

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


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

Видимо, ты не скопировал директорию files к ебилду

 

Если положил ебилд 1.2.8 версии в /usr/local/portage/net-dialup/xl2tpd, то скопируй /usr/portage/net-dialup/xl2tpd/files -> /usr/local/portage/net-dialup/xl2tpd/files

И сделай еще раз ebuild xl2tpd-1.2.8.ebuild digest и emerge net-dialup/xl2tpd

 

Это обычное правило, если берешь ебилды новой версии с багзиллы

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


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

Опция lcp-echo-adaptive, в моём случае, неизвестна и не даёт подключиться. Без неё не вылетает с ошибкой.

 

Где посмотреть логи демона? Согласно /var/log/syslog успешно всё поднялось, но трафик не идёт...

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

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


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

Опция lcp-echo-adaptive, в моём случае, неизвестна и не даёт подключиться

Какая версия net-dialup/ppp?

 

 

Где посмотреть логи демона? Согласно /var/log/syslog успешно всё поднялось, но трафик не идёт...

/var/log/messages

 

Покажи выводы

route -n

ifconfig

rc-status

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

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


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

net-dialup/ppp-2.4.4-r25

 

Jun  2 08:20:31 vGentoo xl2tpd[1753]: This binary does not support kernel L2TP.
Jun  2 08:20:31 vGentoo xl2tpd[1754]: xl2tpd version xl2tpd-1.2.8 started on vGentoo PID:1754
Jun  2 08:20:31 vGentoo xl2tpd[1754]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
Jun  2 08:20:31 vGentoo xl2tpd[1754]: Forked by Scott Balmos and David Stipp, (C) 2001
Jun  2 08:20:31 vGentoo xl2tpd[1754]: Inherited by Jeff McAdams, (C) 2002
Jun  2 08:20:31 vGentoo xl2tpd[1754]: Forked again by Xelerance (www.xelerance.com) (C) 2006
Jun  2 08:20:31 vGentoo xl2tpd[1754]: Listening on IP address 0.0.0.0, port 1701
Jun  2 08:20:31 vGentoo xl2tpd[1754]: Connecting to host croc-dv.ru, port 1701
Jun  2 08:20:31 vGentoo xl2tpd[1754]: Connection established to 46.38.0.202, 1701.  Local: 47702, Remote: 43156 (ref=0/0).
Jun  2 08:20:31 vGentoo xl2tpd[1754]: Calling on tunnel 47702
Jun  2 08:20:32 vGentoo xl2tpd[1754]: Call established with 46.38.0.202, Local: 36278, Remote: 29456, Serial: 1 (ref=0/0)
Jun  2 08:20:32 vGentoo pppd[1792]: pppd 2.4.4 started by root, uid 0
Jun  2 08:20:32 vGentoo pppd[1792]: Using interface ppp0
Jun  2 08:20:32 vGentoo pppd[1792]: Connect: ppp0 <--> /dev/pts/2
Jun  2 08:20:32 vGentoo pppd[1792]: CHAP authentication succeeded
Jun  2 08:20:32 vGentoo pppd[1792]: local  IP address 10.25.0.99
Jun  2 08:20:32 vGentoo pppd[1792]: remote IP address 10.25.0.1

Тут тоже выглядит всё хорошо.

 

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.25.0.1       192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
10.25.0.1       0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.1.0     192.168.1.1     255.255.255.0   UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     2      0        0 eth0
192.168.137.0   192.168.1.1     255.255.255.0   UG    0      0        0 eth0
127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo
0.0.0.0         10.25.0.1       0.0.0.0         UG    0      0        0 ppp0
0.0.0.0         192.168.1.1     0.0.0.0         UG    2      0        0 eth0

eth0      Link encap:Ethernet  HWaddr 08:00:27:63:fb:53  
         inet addr:192.168.1.20  Bcast:192.168.1.255  Mask:255.255.255.0
         inet6 addr: fe80::a00:27ff:fe63:fb53/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:1005 errors:1 dropped:0 overruns:0 frame:0
         TX packets:342 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:92625 (90.4 KiB)  TX bytes:48685 (47.5 KiB)
         Interrupt:10 Base address:0xd000 

lo        Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:16436  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:0 (0.0   TX bytes:0 (0.0 

ppp0      Link encap:Point-to-Point Protocol  
         inet addr:10.25.0.99  P-t-P:10.25.0.1  Mask:255.255.255.255
         UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1460  Metric:1
         RX packets:7 errors:0 dropped:0 overruns:0 frame:0
         TX packets:3872060 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:3 
         RX bytes:64 (64.0   TX bytes:1692098716 (1.5 GiB)

Runlevel: default
net.eth0                                                          [  started  ]
syslog-ng                                                         [  started  ]
sshd                                                              [  started  ]
netmount                                                          [  started  ]
mysql                                                             [  started  ]
apache2                                                           [  started  ]
udev-postmount                                                    [  started  ]
vixie-cron                                                        [  started  ]
local                                                             [  started  ]
Dynamic Runlevel: hotplugged
net.eth0                                                          [  started  ]
Dynamic Runlevel: needed
sysfs                                                             [  started  ]
xl2tpd                                                            [  started  ]
Dynamic Runlevel: manual
net.ppp0                                                          [  started  ]

net.ppp0 запускаю пока вручную, чтобы с логами меньше возиться.

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


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

комп куда подключен? если на прямую то :blink:

inet addr:192.168.1.20
Изменено пользователем VladimirSS

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


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

комп куда подключен?

Угу, странный ип

 

StalkerNOVA

Все вполне хорошо выглядит.

А что ты имеешь в виду под "не идет трафик"?

Трассировка к примеру до 8.8.8.8 проходит?

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


Ссылка на сообщение
Поделиться на других сайтах
Есть сообщения вида "udp_xmit failed to х.х.х.х:1701 with err=-1:Resource temporarily unavailable"

У меня тоже появились такие когда отключил модуль pppol2tp в ядре

 

А что у вас включено по части PPP? У меня вот так:

CONFIG_PPP=y
# CONFIG_PPP_MULTILINK is not set
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=y
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_MPPE=m
CONFIG_PPPOE=m
CONFIG_PPPOATM=m
CONFIG_PPPOL2TP=m

Изменено пользователем FreeM@N DiggerS

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


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

А что у вас включено по части PPP?

 

zcat /proc/config.gz | grep -i ppp
CONFIG_PPP=y
# CONFIG_PPP_MULTILINK is not set
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=y
CONFIG_PPP_SYNC_TTY=y
# CONFIG_PPP_DEFLATE is not set
# CONFIG_PPP_BSDCOMP is not set
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
# CONFIG_PPPOL2TP is not set

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


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

Опция lcp-echo-adaptive, в моём случае, неизвестна и не даёт подключиться. Без неё не вылетает с ошибкой.

Патч, добавляющий эту опцию, есть только в 2.4.5-r1

Эта версия c 31 мая стабильна на x86/amd64 - обновись

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


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

Всем привет!

 

Прошу помощи и поддержки! :)

 

Все сконфигурировал, как в первом посте.

При попытке /etc/init.d/net.ppp0 start пишет CHAP AUTHENTICATION FAILED в messages .

 

Прям не знаю что делать, и гуглил, и яндексил, решений не нашел(

Могу выложить, если надо, кусок messages, но я сам там никаких трехзначных кодов ошибки не обнаружил.

 

С чем это может быть связано? В какую сторону копать?

 

P.S. Скажу сразу, что пароль введен без ошибок и интернет не заблокирован :)

 

P.P.S. Подозреваю, что, может быть, ppp и xl2tpd надо с флагами иными собирать, нежели чем у меня? Или, может быть, надо

 

CONFIG_PPP_FILTER=y

CONFIG_PPP_ASYNC=y

CONFIG_PPP_SYNC_TTY=y

 

так собрать (у меня все модулями, которые подгружены на момент запуска ppp0)...

 

P.P.P.S. xl2tpd я собирал не через ебилд, что в ссылке в первом посте, а из portage, ибо там появился версии *.8, и я подумал, что имеет смысл в таком случае взять именно его, это могло иметь значения?

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

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


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

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

Если уверен, что все настройки по 1 посту верные - попробуй наложить патч на xl2tpd из той темы

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


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

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

Если уверен, что все настройки по 1 посту верные - попробуй наложить патч на xl2tpd из той темы

 

Зачитался той темой, оказывается можно попытаться авторизоваться под beeline/beeline :)

Попробовал, и у меня ЗАШЛО!!!

 

Правда, ничего не пингуется после этого совершенно, но это уже другая песня.

Получается, что у проблема не в моем xl2tpd, а на серверах Билайн?

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


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

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

 

Ченжлог.

/etc/conf.d/net:

- решена трабла с подвисанием остановки интерфейса ppp на 60 сек. из-за рекурсивной зависимости xl2tpd <-> net.ppp

- xl2tpd прибивается, если не умирает правильно сам

- кастомные маршруты теперь удаляются при остановке net.ppp

- конфиг теперь гибридный - поддерживает как openl2tpd, так и xl2tpd. И openl2tpd даже работает, если его правильно настроить. Рулится раскомментированием первой строчки, но настройку openl2tpd не выкладываю - оно не умеет нормально парсить свой же конфиг. Как дойдут руки сделать все грамотно - выложу

 

/etc/rc.conf:

- теперь нет нужны править rc_depend_strict и выставлять значение "NO". Если меняли - возвращайте как было. Хотя не суть важно - имеет смысл только в особых конфигурациях

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


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

Спасибо автору за большую работу.

Но том виде который здесь описано работать будет не у всех.

У меня не заработало.

 

Небольшие изменения:

xl2tpd с работающим кернер модулем. У меня собрался без проблем.

Сделан по материалам соседней ветки.

Собрать с USE флагом dnsretry.

Так как файл мне прицепить не дают кому надо берите на yandex. http://narod.ru/disk/40736951001/xl2tpd_ebuild.tar.bz2.html

 

Изменения в /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

 

Добавить tx bps = 1000000000 по сравнению с тем который в шапке.

 

Не знаю какая версия dhcp у nE0sIghT у меня net-misc/dhcp-4.2.3_p1 оказался хватать маршруты. Впрочем я пару до этого пытался то же самое провернуть со старыми версиями результат нулевой.

 

Как альтернативу предлагаю dhcpcd. Решение взято отсюда, немного переработано под ip route.

 

/etc/dhcpcd.conf

hostname
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option ms_classless_static_routes
option ntp_servers
require dhcp_server_identifier
nohook lookup-hostname

 

Конфиг в принципе стандартный добавлено option ms_classless_static_routes.

 

Второй файл надо создать.

/lib64/dhcpcd/dhcpcd-hooks/static_routes

if [ "$reason" = "BOUND" ] || [ "$reason" = "REBOOT" ]; then
   syslog info  "received routing options: `set|grep route`"
   new_static_routes=($new_static_routes)
   for(( i=0; i < ${#new_static_routes[@]}; i=i+2 )); do
               if /sbin/ip route add "${new_static_routes[$i]}" via "${new_static_routes[$i+1]}"; then
                       syslog info  "successfuly executed 'ip route add ${new_static_routes[$i]} via ${new_static_routes[$i + 1 ]}'"
               else
                       syslog error "failed to exec 'ip route add ${new_static_routes[$i]} via ${new_static_routes[$i + 1]}'"
               fi
   done

   if /sbin/ip route add default via "${new_routers}"; then
           syslog info  "successfuly executed 'ip route add default via ${new_routers}'"
   else
           syslog error "failed to exec 'ip route add default via ${new_routers}'"
   fi

fi

 

 

Последние версии sys-apps/net-tools имеют другую выводку ifconfig. Решение или собирайте sys-apps/net-tools с флагом old-output. Или меняйте в скрипте переменную

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

На что нибудь типа

vpn=`ifconfig  |grep destination | awk '{print $6}'`

или

vpn=`ip address show ppp0 |grep inet| awk '{print $4}'|awk -F/ '{print $1}'`

vpn=`ip address show ppp0 |grep inet| awk '{print $4}'|awk -F/ '{print $1}'`

С версией iproute2-3.5.0 работать не будет. Изменена выводка ip address show причем это скорее всего баг. Можно вот так

vpn=`ip -f inet address show ppp0 |grep inet| awk '{print $4}'|awk -F/ '{print $1}'`

 

 

Можно предложить решения красивей я с awk не очень сильно дружу. :lol:

 

В Связи с тем что l2tp периодически отваливается и поднимается хочет не всегда, держу пару скриптов в cron.

crontab -e

*/3  *  *  *  *                /root/scripts/l2tp_restart_ping
*/5  *  *  *  *                /root/scripts/l2tp_restart_cron

 

/root/scripts/l2tp_restart_cron

#!/bin/sh

#Ваш email в переменной
EMAILID="example@example.com"

if [ `ifconfig | grep ppp0 | wc -l` = 0 ]; then
 sleep 30
 if [ `ifconfig | grep ppp0 | wc -l` = 0 ]; then
   /etc/init.d/net.ppp0 stop
   /etc/init.d/net.ppp0 start
   #date >> /root/l2tp_restart
   echo "L2TP restarting. No ppp0 interfece" |  mail -s "L2TP restarting at $(date)"  $EMAILID
 fi
fi

 

/root/scripts/l2tp_restart_ping

HOSTS="www.ya.ru www.bing.com www.google.com"

# no ping request
COUNT=1
GLOBALCOUNT=3

#Ваш email в переменной
EMAILID="example@example.com"
for myHost in $HOSTS
   do
   count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
   if [ $count -eq 0 ]; then
       # 100% failed
       let GLOBALCOUNT-=1
       #echo "Host : $myHost ping failed at $(date)" | mail -s "Control host ping failed" $EMAILID
   fi
done

#echo $GLOBALCOUNT
if [ $GLOBALCOUNT -eq 0 ]; then
   /etc/init.d/net.ppp0 restart
   echo "No ping at all. L2TP restarting..." | echo "Because of no ping to control hosts $HOSTS" | mail -s "L2TP restarting at $(date)" $EMAILID
fi

 

Чтобы рестарт l2tp не вызывал перезагрузку кучи сервисов зависимых от сети. В файле /etc/rc.conf правим переименую.

/etc/rc.conf

rc_depend_strict="NO"

Тем самым говорим что нам нужен только один поставщик сети.

 

Мой конфиг на всякий случай может кому то пригодится. Пока не до конца в идеале переписывал на ip плюс кое что для себя.

 

/etc/conf.d/net

 

 

#dns_servers_lo="127.0.0.1"

config_eth2="172.16.77.7/24"
config_eth1="null"
config_eth3="null"

config_wlan0="172.17.77.7/24"
modules_wlan0="iwconfig"
channel_wlan0="11"
essid_wlan0="Werebear77"
mode_wlan0="master"


dns_domain_lo="home"

# Раскомментировать нужный бэкэнд
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
}

 

 

В заключение дайте кто нибудь заведомо рабочий конфиг от openl2tp. То что у меня раньше работало теперь соединяется с 10 попытки в нужной фазе луны. xl2tpd конечно неплохо но хотелось бы иметь запас.

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

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


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

Не знаю какая версия dhcp у nE0sIghT у меня net-misc/dhcp-4.2.3_p1 оказался хватать маршруты.

Installed versions: 4.2.3_p1(23:55:53 12.12.2011)(client ipv6 kernel_linux server ssl -ldap -selinux -vim-syntax)

 

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

 

Как руки дойдут, смержу в 1ый пост

 

В заключение дайте кто нибудь заведомо рабочий конфиг от openl2tp. То что у меня раньше работало теперь соединяется с 10 попытки в нужной фазе луны. xl2tpd конечно неплохо но хотелось бы иметь запас.

 

Тут где-то затык будет толи с кавычками, толи с доменным именем. Нужно будет убрать кавычки/прописать ип

 

cat ./openl2tpd.conf 
system modify deny_remote_tunnel_creates=yes \
tunnel_establish_timeout=60 \
session_establish_timeout=30 \
tunnel_persist_pend_timeout=15 \
session_persist_pend_timeout=15

peer profile modify profile_name=default \
lac_lns=lac

ppp profile modify profile_name=default \
	mtu=1460 \
	mru=1460 \
	auth_pap=no \
	auth_mschapv1=no \
	auth_mschapv2=yes \
	auth_eap=no \
	auth_none=no \
	idle_timeout=0 \
	max_connect_time=0 \
	lcp_echo_interval=60 \
	default_route=yes \
	local_name="ЛОГИН" \
	remote_name=beeline

tunnel create tunnel_name=beeline \
	persist=yes \
	dest_ipaddr=tp.internet.beeline.ru \
	mtu=1460 \
	retry_timeout=5 \

session create session_name=beeline \
	tunnel_name=beeline \
	user_name="ЛОГИН"

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


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

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

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

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

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

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

Войти

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

Войти сейчас