johny87

FreeBSD ng0 loopback

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

uname -a :

FreeBSD 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255898: Thu Sep 26 22:50:31 UTC 2013 root@bake.isc.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64

mpd5 -v

Version 5.7

 

 

подключаю mpd5 :

ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1400

inet 89.179.74.77 --> 78.107.38.7 netmask 0xffffffff

nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

 

 

Лог mpd5 :

Multi-link PPP daemon for FreeBSD

 

process 56174 started, version 5.7 (******* 01:29 19-Oct-2013)

Label 'startup' not found

[L2TP] Bundle: Interface ng0 created

[L2] [L2] Link: OPEN event

[L2] LCP: Open event

[L2] LCP: state change Initial --> Starting

[L2] LCP: LayerStart

L2TP: Initiating control connection 0x802bf6910 0.0.0.0 0 <-> 78.107.38.7 1701

L2TP: Control connection 0x802bf6910 10.165.96.106 65124 <-> 78.107.38.7 1701 connected

[L2] L2TP: Incoming call #6240000 via control connection 0x802bf6910 initiated

[L2] L2TP: Call #6240000 connected

[L2] Link: UP event

[L2] LCP: Up event

[L2] LCP: state change Starting --> Req-Sent

[L2] LCP: SendConfigReq #1

[L2] ACFCOMP

[L2] PROTOCOMP

[L2] MRU 1500

[L2] MAGICNUM 0c4849bc

[L2] LCP: rec'd Configure Request #157 (Req-Sent)

[L2] MRU 1456

[L2] AUTHPROTO CHAP MD5

[L2] MAGICNUM 580805ad

[L2] LCP: SendConfigAck #157

[L2] MRU 1456

[L2] AUTHPROTO CHAP MD5

[L2] MAGICNUM 580805ad

[L2] LCP: state change Req-Sent --> Ack-Sent

[L2] LCP: rec'd Configure Reject #1 (Ack-Sent)

[L2] ACFCOMP

[L2] PROTOCOMP

[L2] LCP: SendConfigReq #2

[L2] MRU 1500

[L2] MAGICNUM 0c4849bc

[L2] LCP: rec'd Configure Ack #2 (Ack-Sent)

[L2] MRU 1500

[L2] MAGICNUM 0c4849bc

[L2] LCP: state change Ack-Sent --> Opened

[L2] LCP: auth: peer wants CHAP, I want nothing

[L2] LCP: LayerUp

[L2] CHAP: rec'd CHALLENGE #1 len: 33

[L2] Name: "bras255.perm"

[L2] CHAP: Using authname "*********"

[L2] CHAP: sending RESPONSE #1 len: 31

[L2] CHAP: rec'd SUCCESS #1 len: 42

[L2] MESG: CHAP authentication success, unit 1400

[L2] LCP: authorization successful

[L2] Link: Matched action 'bundle "L2TP" ""'

[L2] Link: Join bundle "L2TP"

[L2TP] Bundle: Status update: up 1 link, total bandwidth 64000 bps

[L2TP] IPCP: Open event

[L2TP] IPCP: state change Initial --> Starting

[L2TP] IPCP: LayerStart

[L2TP] IPCP: Up event

[L2TP] IPCP: state change Starting --> Req-Sent

[L2TP] IPCP: SendConfigReq #1

[L2TP] IPADDR 192.168.10.1

[L2TP] IPCP: rec'd Configure Request #155 (Req-Sent)

[L2TP] IPADDR 78.107.38.7

[L2TP] 78.107.38.7 is OK

[L2TP] IPCP: SendConfigAck #155

[L2TP] IPADDR 78.107.38.7

[L2TP] IPCP: state change Req-Sent --> Ack-Sent

[L2TP] IPCP: rec'd Configure Nak #1 (Ack-Sent)

[L2TP] IPADDR 89.179.74.77

[L2TP] 89.179.74.77 is OK

[L2TP] IPCP: SendConfigReq #2

[L2TP] IPADDR 89.179.74.77

[L2TP] IPCP: rec'd Configure Ack #2 (Ack-Sent)

[L2TP] IPADDR 89.179.74.77

[L2TP] IPCP: state change Ack-Sent --> Opened

[L2TP] IPCP: LayerUp

[L2TP] 89.179.74.77 -> 78.107.38.7

[L2TP] IFACE: Up event

 

startup:

log +ALL -EVENTS -FRAME

 

default:

load l2tp_corbina

 

l2tp_corbina:

create bundle static L2TP

set ipcp no vjcomp

set iface idle 0

set iface enable nat

set iface enable tcpmssfix

set iface up-script /usr/local/etc/mpd5/up.sh

set iface down-script /usr/local/etc/mpd5/down.sh

create link static L2 l2tp

set link action bundle L2TP

set link mtu 1400

set link latency 0

set link max-redial 0

set link redial-delay 60

set link accept chap

set link keep-alive 10 75

set l2tp peer tp.internet.beeline.ru

set auth authname

set auth password

open

 

up.sh

#!/bin/sh

gw=`netstat -rn | awk '$1=="default"{print $2}'`

route delete $4

route add $4 $gw

route delete default

route add $8 $gw

route add default $4

echo $4 > /tmp/mpd_dr

echo $gw > /tmp/mpd_gw

sleep 20

 

down.sh

#!/bin/sh

dr=`cat /tmp/mpd_dr`

gw=`cat /tmp/mpd_gw`

route delete $dr

route delete default

route add default $gw

rm -f /tmp/mpd_dr

rm -f /tmp/mpd_gw

 

Пишет loop on ng0 и интернет не работает.

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

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


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

Логично, что шлюзом для vpn-тоннеля будет именно vpn-сервер...

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


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

Почему тогда постоянно пишет ng0 loop detected и интернет не работает даже со включенными скриптами ?

 

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

Oct 19 16:18:00 server kernel: Loop detected on ng0

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


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

Почему тогда постоянно пишет ng0 loop detected и интернет не работает даже со включенными скриптами ?

 

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

Oct 19 16:18:00 server kernel: Loop detected on ng0

Это давно известная проблема с "намертво пришитыми пуговицами".

 

FreeLSD'ешники пишут что что назначение одного и того же адреса

для внутренностей и внешностей туннеля напрочь неправильно.

См. pr во FreeLSD

 

А пчеловоды в ус не дуют, так как "в форточках всё работает".

  • Upvote 1

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


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

У других ведь работает на FreeBSD. Почему у меня нет ?

Судя по отсутствию ответов на ваше сообщение это, наверное, не так.

 

Я вижу такие варианты решения (без особых приоритетов)

 

-- плюнуть в улей и уйти к другому провайдеру

 

-- плюнуть во FreeLSD и уйти в другую ось

 

-- хакнуть FreeLSD

 

-- злобно сделать адрес дальнего конеца туннеля не равным адресу браса (запросить у пчеловодов (через mpd.conf))

 

set ipcp ranges 0.0.0.0/0 xx.xx.xx.xx/32

 

где xx.xx.xx.xx некий ipv4 адрес не равный адресу bras сервера, но воспринимаемый им

как подходящий.

Изменено пользователем nms42
  • Upvote 1

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


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

У других ведь работает на FreeBSD. Почему у меня нет ?

Судя по отсутствию ответов на ваше сообщение это, наверное, не так.

 

Я вижу такие варианты решения (без особых приоритетов)

 

-- плюнуть в улей и уйти к другому провайдеру

 

-- плюнуть во FreeLSD и уйти в другую ось

 

-- хакнуть FreeLSD

 

-- злобно сделать адрес дальнего конеца туннеля не равным адресу браса (запросить у пчеловодов (через mpd.conf))

 

set ipcp ranges 0.0.0.0/0 xx.xx.xx.xx/24

 

где xx.xx.xx.xx некий ipv4 адрес не равный адресу bras сервера, но воспринимаемый им

как подходящий.

Огромное спасибо. Поставил "set ipcp ranges 0.0.0.0/0 1.1.1.1/32". Все заработало !

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

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


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

Это проблема FreeBSD 9.2, как и CURRENT с r248070

http://lists.freebsd.org/pipermail/svn-src-head/2013-March/045550.html

Нельзя удалить маршрут к ng0, он защищён, проверить можно:

# route -n get АДРЕС_VPN_СЕРВЕРА

Если увидим flags: <UP,HOST,DONE,PINNED> то это оно

Изменено пользователем MrStalker
  • Upvote 1

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


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

Это проблема FreeBSD 9.2, как и CURRENT с r248070

http://lists.freebsd.org/pipermail/svn-src-head/2013-March/045550.html

Нельхя удалить маршрут к ng0, он защищён, проверить можно:

# route -n get АДРЕС_VPN_СЕРВЕРА

Если увидим flags: <UP,HOST,DONE,PINNED> то это оно

Спасибо ! Именно так и пишет ! А решения там нету случаем ? А то писать всякие левые ip в качестве шлюза не по фен-шую.

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


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

Пока решение только одно, откатываться к 9.1

Сейчас веду разговор на фряшном форуме.

Только сутки назад понял в чём конкретно проблема. Как только будет найдено решение этой проблемы - сообщу.

Изменено пользователем MrStalker
  • Upvote 1

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


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

Спасибо ! Именно так и пишет ! А решения там нету случаем ? А то писать всякие левые ip в качестве шлюза не по фен-шую.

Это что считается "левым ip"?

И по какому "фен-шую"?

 

Это проблема FreeBSD 9.2, как и CURRENT с r248070

http://lists.freebsd.org/pipermail/svn-src-head/2013-March/045550.html

Нельхя удалить маршрут к ng0, он защищён, проверить можно:

# route -n get АДРЕС_VPN_СЕРВЕРА

Если увидим flags: <UP,HOST,DONE,PINNED> то это оно

А почему у меня этого нет?

  route to: 85.21.0.170
destination: 85.21.0.170
   gateway: 10.60.88.1
       fib: 0
 interface: corb0
     flags: <UP,GATEWAY,HOST,DONE,STATIC>
recvpipe  sendpipe  ssthresh  rtt,msec    mtu        weight    expire
      0         0         0         0      1500         1         0

FreeBSD NetFaker 9.2-STABLE FreeBSD 9.2-STABLE #111: Wed Oct 16 21:39:11 MSK 2013     nms@NetFaker:/usr/obj/usr/src/sys/NETFAKER  i386

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


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

Это проблема FreeBSD 9.2, как и CURRENT с r248070

http://lists.freebsd.org/pipermail/svn-src-head/2013-March/045550.html

Нельхя удалить маршрут к ng0, он защищён, проверить можно:

# route -n get АДРЕС_VPN_СЕРВЕРА

Если увидим flags: <UP,HOST,DONE,PINNED> то это оно

А почему у меня этого нет?

  route to: 85.21.0.170
destination: 85.21.0.170
   gateway: 10.60.88.1
       fib: 0
 interface: corb0
     flags: <UP,GATEWAY,HOST,DONE,STATIC>
recvpipe  sendpipe  ssthresh  rtt,msec    mtu        weight    expire
      0         0         0         0      1500         1         0

FreeBSD NetFaker 9.2-STABLE FreeBSD 9.2-STABLE #111: Wed Oct 16 21:39:11 MSK 2013     nms@NetFaker:/usr/obj/usr/src/sys/NETFAKER  i386

"Мир" с какой SVN ревизии собран? До r248895 или после?

 

К тому же на такой конструкции не проявится (где remote-ip != peer-address):

root@Eviko:/home/mrstalker # ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1456
       inet 37.147.147.48 --> 37.147.128.1 netmask 0xffffffff
       nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
root@Eviko:/home/mrstalker # netstat -nrf inet
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            37.147.128.1       UGS         0 66940328    ng0
37.147.128.1       link#7             UH          0        0    ng0
85.21.230.201      10.165.32.1        UGHS        0 14325929    re0

Проявляется только на таких (где remote-ip == peer-address):

root@Eviko:/home/mrstalker # ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460                                                                             0
       inet 2.92.203.93 --> 85.21.230.206 netmask 0xffffffff
       nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
root@Eviko:/home/mrstalker # netstat -nrf inet
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            85.21.230.206      UGS         0      133    ng0
85.21.230.206      10.165.32.1        UGHS        0        0    re0

 

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

А у нас в Туле так повелось, что одни VPN серверы провайдера настроены так, другие иначе... Какой достанется.

Изменено пользователем MrStalker
  • Upvote 1

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


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

Интересно данный баг касается только x64 версии ?

Это не баг FreeLSD. Это особенность сети пчеловодов (назначение ip дальнего конца линка равным ip браса). И как следствие танцы с бубном всех поклонников *nix религии. :D

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


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

Я про "баг" в FreeBSD версии 9.2. В 9.1 можно удалить маршрут, а в 9.2 стало нельзя. Про Билайн уже речи и нету.

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


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

Интересно данный баг касается только x64 версии ?

Нет, так как изменения затрагивались общих исходников.

  • Upvote 1

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


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

Как временное решение, написал патч route-fix.patch.zip

 

Применять так:

# unzip route-fix.patch.zip
# cd /usr/src
# patch < /PATH/TO/route-fix.patch

 

Далее пересобираем мир и ядро, всё должно работать как и раньше.

  • Upvote 3

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


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

Спасибо большое !

Пока в квартире ремонт, не могу протестировать. Где-то в понедельник-вторник только.

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


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

Спасибо еще раз ! Патч отлично работает.

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

Изменено пользователем MrStalker
  • Upvote 1

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


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

Что хочу сказать... FreeBSD 10.0, патч работает.

Похоже надеяться на исправление пока что не стоит...

Как я уже говорил, для разработчиков это "не баг, а фича". А то что у кого-то так настроена сеть, мало кого волнует.

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

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


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

Я же чуть не год назад писал, как это обойти конфигом mpd5 без всяких костылей в виде скриптов подъема и опускания тоннеля.

  • Upvote 1

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


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

Ну это дело вкуса конечно...

 

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

Скрипты для изменения маршрутов при поднятии/опускании интерфейса скорее привычка, чем костыль. Костыль у меня разве что правка исходников...

 

set iface addrs 0.0.0.0 !1.2.3.4

Вот это как раз на мой взгляд костыль...

 

Ещё раз повторюсь, дело вкуса...

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


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

Скрипты для изменения маршрутов при поднятии/опускании интерфейса скорее привычка, чем костыль.

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

А форсировать внутренние адреса туннеля на частные точно не костыль, а вынужденный workaround. Кстати, на микротике тоже пришлось адрес перебивать, иначе не пахало.

У меня в Билайн смотрят циски и фря (начиная еще с 6.0), настрадался в обоих случаях предостаточно.

На фре десятке сейчас так:

vpn-l2tp:
create bundle static B2
set bundle disable compression
set bundle disable round-robin
set bundle disable encryption
set bundle disable crypt-reqd
set bundle disable bw-manage
set bundle disable ipv6cp
set bundle enable ipcp
set ipcp no vjcomp
set iface mtu 1460
set iface idle 0
set iface addrs 192.168.254.1 !192.168.254.2
set iface enable tcpmssfix
set iface route default
create link static L2 l2tp
set link action bundle B2
set link latency 0
set link max-redial 0
set link disable incoming acfcomp protocomp magicnum check-magic shortseq
set link deny chap-msv2 chap-msv1 pap eap acfcomp protocomp shortseq
set link accept chap-md5
set link accept chap
set link keep-alive 60 180
set l2tp self bee0 1701
set l2tp disable resolve-once
set l2tp peer tp.internet.beeline.ru
set auth authname "login"
set auth password "password"
open

работает как часы

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


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

Можно довольно долго ее избегать, но периодически всплывать будет.

Ни разу не всплывало...

 

А форсировать внутренние адреса туннеля на частные точно не костыль, а вынужденный workaround. Кстати, на микротике тоже пришлось адрес перебивать, иначе не пахало.

У меня такой надобности не было и нет.

 

Вот мои конфиги. Основа взята ещё со старой инструкции для FreeBSD с http://help.corbina.net года так 2008-2009. С тех пор притерпела некоторые изменения.

Всё это стабильно работало с 7 ветки FreeBSD. Проблема появилась только в 10. И то решается патчем, что я приложил в начале темы.

Итак, собственно конфиги:

 

mpd.conf

default:
       load l2tp_client
l2tp_client:
       create bundle static B1
       set iface up-script /usr/local/etc/mpd5/up.sh
       set iface down-script /usr/local/etc/mpd5/down.sh
       create link static L1 l2tp
       set link action bundle B1
       set auth authname USER
       set auth password PASS
       set link max-redial 0
       set l2tp peer tp.internet.beeline.ru
       open

 

up.sh

#!/bin/sh

route delete $8
route add $8 ЛОКАЛЬНЫЙ_ШЛЮЗ
route delete default
route add default $4

 

down,sh

#!/bin/sh

route delete default
route delete $6
route add default ЛОКАЛЬНЫЙ_ШЛЮЗ

 

Проблем никаких вобще.

Работает как часы :rolleyes:

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


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

set iface addrs 0.0.0.0 !n.n.n.n

ничуть не костыль, а обычная настройка.

Адрес серверного конца туннеля просто нигде не нужен.

 

у меня в mpd.conf

...

set iface name ext1

set iface description "Beeline Internet"

set iface addrs 0.0.0.0 !127.143.81.14

...

 

ifconfig ext1

ext1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460

description: Beeline Internet

inet 95.1.1.1 --> 127.143.81.14 netmask 0xffffffff

 

route add default -interface ext1

 

netstat -nrW | grep ext1

default ext1 US 0 15663769 1460 ext1

127.143.81.14 link#6 UH 0 0 1460 ext1

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


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

Как временное решение, написал патч route-fix.patch.zip

 

Применять так:

# unzip route-fix.patch.zip
# cd /usr/src
# patch < /PATH/TO/route-fix.patch

 

Далее пересобираем мир и ядро, всё должно работать как и раньше.

 

Спасибо за патч, пока не пропатчил и не пересобрал ядро не хотело заводиться ни в какую, хотя на 8.2 с этими же конфигами все пашет, патч крайне нужный :thanx:

uname -a

FreeBSD server 10.1-RELEASE FreeBSD 10.1-RELEASE #2: Fri Jan 9 00:14:26 MSK 2015

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


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

Всем привет!

А кто про бывал поднять l2tp на FreeBSD 10.1? Если про бывал поделитесь опытом!

За ранее спасибо!

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


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

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

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

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

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

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

Войти

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

Войти сейчас