Архивировано

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

feo

Делаем роутер из сервера на FreeBSD

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

Пропиши отдельный роут на 85.21.0.0/24

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


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

Пропиши отдельный роут на 85.21.0.0/24

 

странно как то ...

 

в rc.conf внесена эта строчка, но впн заработал только когда ручками прописал ...

 

Спасибо, буду дальше ковырять.

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


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

в rc.conf внесена эта строчка, но впн заработал только когда ручками прописал ...

 

ip по dhcp получаешь? Если да, то он все роуты сбросит.

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


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

ip по dhcp получаешь? Если да, то он все роуты сбросит.

 

 

уже понял, переделал всё в скриптину corbina_vpn_up.sh

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


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

Так вот, пересобрал ядро, mpd перестал зависать. Также я добавил маршруты на vpn сервер и днс сервера (странно но с твоими маршрутами почему то их не видно).

 

Скажи, пожалста, а что именно ты изменил в ядре, после чего оно перестало зависать? :-)

Я борюсь с мпд уже вторую неделю - на работу оно у меня коннектится нормально, а в корбину - виснет через несколько секунд после коннекта насмерть...

 

upd: попробовал прикрутить mpd5 - та же фигня - получает адрес, поднимает интерфейс и виснет насмерть...

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


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

Скажи, пожалста, а что именно ты изменил в ядре, после чего оно перестало зависать? :-)

Я борюсь с мпд уже вторую неделю - на работу оно у меня коннектится нормально, а в корбину - виснет через несколько секунд после коннекта насмерть...

 

upd: попробовал прикрутить mpd5 - та же фигня - получает адрес, поднимает интерфейс и виснет насмерть...

 

У меня вешалась пока я не убрал "incoming outcall" из строки "set pptp enable originate incoming"outcall" в mpd.links

 

Судя по ману - set pptp enable originate - вполне достаточно.

 

=====

 

Я попробовал пойти немного дальше, и поставил FreeBSD 6.3 и mpd-4.3. В этом варианте, по идее, должно работать l2tp.

 

Всё настроил для pptp - всё работает замечательно. Даже маршруты прописываются из dhcp автоматом.

Единственное отличие - я пересобрал ядро без ip6 и с поддержкой pf, altq, netgraf, и ipfirewall (я использую pf).

 

Однако при попытке соединиться по l2tp (тупая замена "pptp" в mpd.links на "l2tp" и подключение к l2tp.corbina.net) вешает машину намертво. Точно так же как когда стояло "incoming outcall" для pptp. Соединение проходит, получаем адрес, авторизуемся успешно, получаем "IFACE: Up event" - и всё. Мёртвый висяк. Даже в лог не успевает записать. Меняю всё обратно на pptp - работает лучше всех.

 

Есть идеи куда копать?

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


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

Однако при попытке соединиться по l2tp (тупая замена "pptp" в mpd.links на "l2tp" и подключение к l2tp.corbina.net) вешает машину намертво. Точно так же как когда стояло "incoming outcall" для pptp. Соединение проходит, получаем адрес, авторизуемся успешно, получаем "IFACE: Up event" - и всё. Мёртвый висяк. Даже в лог не успевает записать. Меняю всё обратно на pptp - работает лучше всех.

 

Есть идеи куда копать?

 

Та же фигня! pptp нормально соединяется, а l2tp вроде соединяется... маршрутизация вроде правильная, но виснет насмерть =(

 

Как лечить?

 

mpd.conf

default:
	load corbina-pptp

corbina-l2tp:
	new -i ng0 corbina-l2tp corbina-l2tp
	set auth authname NAME
	set iface mtu 1460
	set iface idle 0
	set iface enable tcpmssfix
	set iface down-script "/usr/local/etc/corbina/vpn-down.sh"
	set iface up-script "/usr/local/etc/corbina/vpn-up.sh"
	set link keep-alive 60 180
	set link accept chap
	set link no pap
	set link max-redial 0
	set ipcp no vjcomp
	set bundle disable noretry
	set bundle disable multilink
	set bundle disable crypt-reqd
	open

 

mpd.links

corbina-l2tp:
	set link type l2tp
	set l2tp peer l2tp.corbina.net
	set l2tp enable originate
	set l2tp disable incoming

 

vpn-up.sh

#!/bin/sh

ROUTE="/sbin/route"
DEF_ROUTE_STORE="/var/tmp/def_route.var"
DEF_ROUTE=`$ROUTE -n get default 2>&1 | grep gateway | awk '{print $2}'`

# replace default gateway
$ROUTE delete $4

if [ ${DEF_ROUTE} ]; then
 echo ${DEF_ROUTE} > ${DEF_ROUTE_STORE}
 $ROUTE delete default
else
 echo "Default route not found!" > ${DEF_ROUTE_STORE}
fi

$ROUTE add default $4
$ROUTE delete $4 $3
$ROUTE add $4 ${DEF_ROUTE}

 

Консоль:

[root@~]# ifconfig
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=9<RXCSUM,VLAN_MTU>
	inet 192.168.1.7 netmask 0xffffff00 broadcast 192.168.1.255
	ether 00:04:76:a0:96:4f
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
xl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=9<RXCSUM,VLAN_MTU>
	inet 10.119.14.244 netmask 0xfffff800 broadcast 10.119.15.255
	ether 00:04:76:a0:96:8b
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	inet 127.0.0.1 netmask 0xff000000
pfsync0: flags=0<> mtu 2020
	syncpeer: 224.0.0.240 maxupd: 128
pflog0: flags=0<> mtu 33208


[root@~]# netstat -rn
Routing tables

Internet:
Destination		Gateway			Flags	Refs	  Use  Netif Expire
default			10.119.8.1		 UGS		 0		7	xl1
10				 10.119.8.1		 UGS		 0		0	xl1
10.119.8/21		link#2			 UC		  0		0	xl1
10.119.8.1		 00:15:e9:95:73:02  UHLW	   20		0	xl1   1137
10.119.14.244	  00:04:76:a0:96:8b  UHLW		2		0	lo0
78.107.23/24	   10.119.8.1		 UGS		 0		0	xl1
78.107.69.98/32	10.119.8.1		 UGS		 0		0	xl1
83.102.146.96/27   10.119.8.1		 UGS		 0		0	xl1
83.102.231.32/28   10.119.8.1		 UGS		 0		0	xl1
85.21.52.254	   10.119.8.1		 UGHS		0		0	xl1
85.21.72.80/28	 10.119.8.1		 UGS		 0		0	xl1
85.21.79/24		10.119.8.1		 UGS		 0		0	xl1
85.21.88.130	   10.119.8.1		 UGHS		0		0	xl1
85.21.90/24		10.119.8.1		 UGS		 0		0	xl1
85.21.108.16/28	10.119.8.1		 UGS		 0		0	xl1
85.21.138.208/28   10.119.8.1		 UGS		 0		0	xl1
89.179.135.67	  10.119.8.1		 UGHS		0		0	xl1
127.0.0.1		  127.0.0.1		  UH		  0		0	lo0
172.16.16/24	   10.119.8.1		 UGS		 0		0	xl1
192.168.1		  link#1			 UC		  0		0	xl0
192.168.1.20	   00:00:5a:9e:ba:3c  UHLW		1	   61	xl0   1143
195.14.50.16	   10.119.8.1		 UGHS		0		0	xl1
195.14.50.21	   10.119.8.1		 UGHS		0		0	xl1
195.14.50.26	   10.119.8.1		 UGHS		0		0	xl1
195.14.50.93	   10.119.8.1		 UGHS		0		0	xl1
233.32.240		 10.119.14.244	  UGS		 0		0	xl1

[root@~]# mpd4 & ---- запускает MPD4, сразу просле поднятия VPNа удается выполнить что-нить одно (далее примеры ifconfig'a и netstat -rn)

[root@~]# ifconfig
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=9<RXCSUM,VLAN_MTU>
	inet 192.168.1.7 netmask 0xffffff00 broadcast 192.168.1.255
	ether 00:04:76:a0:96:4f
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
xl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=9<RXCSUM,VLAN_MTU>
	inet 10.119.14.244 netmask 0xfffff800 broadcast 10.119.15.255
	ether 00:04:76:a0:96:8b
	media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	inet 127.0.0.1 netmask 0xff000000
pfsync0: flags=0<> mtu 2020
	syncpeer: 224.0.0.240 maxupd: 128
pflog0: flags=0<> mtu 33208
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1460
	inet 93.80.179.17 --> 85.21.0.254 netmask 0xffffffff

[root@~]# netstat -rn
Routing tables

Internet:
Destination		Gateway			Flags	Refs	  Use  Netif Expire
default			85.21.0.254		UGS		 0		0	ng0
10				 10.119.8.1		 UGS		 0		0	xl1
10.119.8/21		link#2			 UC		  0		0	xl1
10.119.8.1		 00:15:e9:95:73:02  UHLW	   20		0	xl1   1022
10.119.14.244	  00:04:76:a0:96:8b  UHLW		2		0	lo0
78.107.23/24	   10.119.8.1		 UGS		 0		0	xl1
78.107.69.98/32	10.119.8.1		 UGS		 0		0	xl1
83.102.146.96/27   10.119.8.1		 UGS		 0		0	xl1
83.102.231.32/28   10.119.8.1		 UGS		 0		0	xl1
85.21.0.254		10.119.8.1		 UGHS		1		0	xl1
85.21.52.254	   10.119.8.1		 UGHS		0		0	xl1
85.21.72.80/28	 10.119.8.1		 UGS		 0		0	xl1
85.21.79/24		10.119.8.1		 UGS		 0		0	xl1
85.21.88.130	   10.119.8.1		 UGHS		0		0	xl1
85.21.90/24		10.119.8.1		 UGS		 0		0	xl1
85.21.108.16/28	10.119.8.1		 UGS		 0		0	xl1
85.21.138.208/28   10.119.8.1		 UGS		 0		0	xl1
89.179.135.67	  10.119.8.1		 UGHS		0		0	xl1
127.0.0.1		  127.0.0.1		  UH		  0		0	lo0
172.16.16/24	   10.119.8.1		 UGS		 0		0	xl1
192.168.1		  link#1			 UC		  0		0	xl0
192.168.1.20	   00:00:5a:9e:ba:3c  UHLW		1	   52	xl0   1042
195.14.50.16	   10.119.8.1		 UGHS		0		0	xl1
195.14.50.21	   10.119.8.1		 UGHS		0		0	xl1
195.14.50.26	   10.119.8.1		 UGHS		0		0	xl1
195.14.50.93	   10.119.8.1		 UGHS		0		0	xl1
233.32.240		 10.119.14.244	  UGS		 0		0	xl1

 

FreeBSD 6.3, MPD 4.3

Ядро пересобрано с таким вот NETGRAPH'ом:

 

# NETGRAPH

options NETGRAPH

options NETGRAPH_ETHER

options NETGRAPH_NETFLOW

options NETGRAPH_SOCKET

options NETGRAPH_TEE

options NETGRAPH_MPPC_ENCRYPTION

options NETGRAPH_BPF

options NETGRAPH_IFACE

options NETGRAPH_KSOCKET

options NETGRAPH_PPP

options NETGRAPH_PPTPGRE

options NETGRAPH_TCPMSS

options NETGRAPH_VJC

options NETGRAPH_ONE2MANY

options NETGRAPH_RFC1490

options NETGRAPH_TTY

options NETGRAPH_UI

options NETGRAPH_ASYNC

options NETGRAPH_BRIDGE

options NETGRAPH_CISCO

options NETGRAPH_DEFLATE

options NETGRAPH_ECHO

options NETGRAPH_FRAME_RELAY

options NETGRAPH_GIF

options NETGRAPH_GIF_DEMUX

options NETGRAPH_HOLE

options NETGRAPH_IP_INPUT

options NETGRAPH_LMI

options NETGRAPH_L2TP

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


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

vecna

Как я выяснил, собака порылась в неправильной последовательности добавления и удаления роутов.

Должно быть так:

route delete $4
route add $4 $LocalGW
route delete default
route add default $4 

 

Весь свой опыт по построению роутера на FreeBSD я свёл в статью - Полный роутер для корбины на FreeBSD для Чайников.

 

P.S. Коннектится по l2tp сейчас лучше на vpn.corbina.net. До выдаваемого тебе по dns сервака, как правило меньше хопов, и работают они вроде стабильнее.

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


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

При pptp все норм.

Если ставлю l2tp то соединяемся нормально.

route delete $4

route add $4 10.x.x.x

route delete default

-тоже отрабатывает

 

А вот после добавления маршрута:

route add default $4

Система через несколько секунд виснет напрочь.

 

Что делать?

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


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

скрипт у вас какой-то не дуракоупорный

 

Я делаю так (никому не навязываю)

 

#!/bin/sh
iface=$1
remoteip=$4

#get current gw
defgate=`netstat -rn | grep default | awk '{print $2}'`

## change routing tables
/sbin/route -q del $remoteip
/sbin/route -nq add $remoteip $defgate
/sbin/route change default $remoteip -ifp $iface
...

 

ну и дальше по вкусу.

 

route add default $4 сама по себе ненадежна, т.к. этот адрес тоже надо куда-то роутить и то что это внутренний адрес туннеля вовсе не факт для системы что роутить с него надо на интерфейс этого же туннеля ;) ну как-то так. Не знаю как по человечески объяснить.

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


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

 

Я делаю так (никому не навязываю)

 

#!/bin/sh
iface=$1
remoteip=$4

#get current gw
defgate=`netstat -rn | grep default | awk '{print $2}'`

## change routing tables
/sbin/route -q del $remoteip
/sbin/route -nq add $remoteip $defgate
/sbin/route change default $remoteip -ifp $iface
...

 

ну и дальше по вкусу.

 

route add default $4 сама по себе ненадежна, т.к. этот адрес тоже надо куда-то роутить и то что это внутренний адрес туннеля вовсе не факт для системы что роутить с него надо на интерфейс этого же туннеля :angry: ну как-то так. Не знаю как по человечески объяснить.

 

Скажите, а что значит ключ -ifp в строке:

/sbin/route change default $remoteip -ifp $iface

 

Удивляет что в случает pptp все норм, а с l2tp...

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


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

man route

...

In a change or add command where the destination and gateway are not suf-

ficient to specify the route (as in the ISO case where several interfaces

may have the same address), the -ifp or -ifa modifiers may be used to

determine the interface or interface address.

 

принудительное указание интерфейса для адреса маршрута.

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


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

...

In a change or add command where the destination and gateway are not suf-

ficient to specify the route (as in the ISO case where several interfaces

may have the same address), the -ifp or -ifa modifiers may be used to

determine the interface or interface address.

 

принудительное указание интерфейса для адреса маршрута.

 

я к тому, что на фряхе не пускается это

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


Ссылка на сообщение
Поделиться на других сайтах
я к тому, что на фряхе не пускается это

 

Хм... в смысле не пускается? У меня так работает и на pptp и l2tp.

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


Ссылка на сообщение
Поделиться на других сайтах
Хм... в смысле не пускается? У меня так работает и на pptp и l2tp.

 

при использовании приведеного вами скрипта система наглухо зависает.

как при pptp так и при l2tp

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


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

как при pptp так и при l2tp

 

Ну... давай подробности, система, версии, конфиги и т.п.

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
Ну... давай подробности, система, версии, конфиги и т.п.

 

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

 

freebsd 6.3 mpd4

mpd.conf

startup:
   set web ip 192.168.2.1
   set web port 5006
   set web user * *
   set web open

default:
   load vpn-pptp

vpn-pptp:
   new -i ng0 corbina_pptp vpn
   set iface mtu 1400
   set iface idle 0
   set iface enable tcpmssfix
   set iface up-script /usr/local/etc/mpd4/io-up.sh
   set iface down-script /usr/local/etc/mpd4/io-down.sh
   set auth authname *
   set auth password *
   set link keep-alive 60 180
   set link accept chap
   set link no pap
   set link max-redial 0
   set bundle disable multilink
   set bundle disable crypt-reqd
   set bundle disable noretry
   set ccp yes mpp-e40
   set ccp no mpp-e128
   set ccp no mpp-stateless
   set ipcp no vjcomp
   open

vpn-l2tp:
   new -i ng0 corbina_l2tp l2tp
   set iface mtu 1460
   set iface idle 0
   set iface enable tcpmssfix
   set iface up-script /usr/local/etc/mpd4/io-up.sh
   set iface down-script /usr/local/etc/mpd4/io-down.sh
   set auth authname *
   set auth password *
   set link keep-alive 60 180
   set link accept chap
   set link no pap
   set link max-redial 0
   set bundle disable multilink
   set bundle disable crypt-reqd
   set bundle disable noretry
   set ipcp no vjcomp
   open

 

mpd.links


vpn:
   set link type pptp
   set pptp peer vpn.corbina.net
   set pptp enable originate
   set pptp disable incoming windowing

l2tp:
   set link type l2tp
   set l2tp peer l2tp.corbina.net
   set l2tp enable originate
   set l2tp disable incoming


 

io-up.sh с которым пашет

 


#!/bin/sh

route delete $4
route add $4 10.111.96.1
route delete default
route add default $4

echo $4 > /tmp/dr

 

Вывод переменных и т.д. сделать не могу сейчас.

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

 

Вопрос... Какая разница как мы поднимаем тоннель?

Ведь io-up у меня 1. Для pptp и l2tp.

Что происходит?

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


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