[Решено] Ubuntu 10.04 + Network Manager + PPTP (Направление трафика через ВПН туннель)

Kubuntu, Xubuntu и другие

Модератор: Модераторы разделов

putin
Сообщения: 20
ОС: XP+FreeBSD

[Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение putin »

Привет всем. Даная тема уже не раз обсуждалась и поднималась на даном форуме, вот только она связана только с ВПН без Менеджера сетейю
Проблема заключается в следующем: провайдер выдает по ДХСП все настройки кроме шлюза, соответственно требуется настройка маршрутизации, ну тут особых проблем нету, но вот после подключению к серверу по ВПН, Убунта не знает какой-трафик куда ей направлять, а точнее трафик интернета, так как после поднятия сессии шлюз для интернет-трафика - является айпишник, который получает впн клиент от провайдера в принципе ручками тоже не составляет проблем его дописать, но после отключения ВПН данный маршурут автоматом удалетса и его приходиться каждый раз по новой добавлять.
Да забыл сказать, что интересует подключение именно через Нетворк-менеджер, так как в консоли все эти маршруты я прописываю в /etc/ppp/ip-up и тогда через консоль даный шлюз без проблем подымается и все работает. Вопрос, как можно упростить даную процедуру, а точнее полностью сделать автоматическую маршрутизацию, что-бы она сама добавлялась при загрузке, а по возможности, чтобы она вообще забирала все нужные маршруты от провайдера через апаче( для виндоувса на сервере провайдера есть файлик маршрутизации, который при каждой загурке считываетса и автоматом пишет:
-"route add 194.44.*.* mask 255.255.255.255 10.18.79.253 metric 1 -p" , хотелось бы что бы это можно было делать и в убунту) Да еще в более ранней версии убунту в нетворк-менеджере стоило поставить галочку: "перенаправлять весь трафик через ВПН туннель" и тогда не нужно было добавлять маршрут для ВПН и добавлялса сам, сейчас такой галочки нету, а она нужна! Расскажите плиз и помагите, как мне организовать данную галочку, даже с возможностью перезборки пакета НЕТВОРК-менеджера и вообще ваши мысли!

Заранее благодарен!
Спасибо сказали:
shotdownsystem
Сообщения: 423
ОС: Basic command interpreter

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение shotdownsystem »

putin писал(а):
13.12.2010 10:18
который получает впн клиент от провайдера в принципе ручками тоже не составляет проблем его дописать, но после отключения ВПН данный маршурут автоматом удалетса и его приходиться каждый раз по новой добавлять.

/etc/ppp/ip-down (run_down) дописать route...

putin писал(а):
13.12.2010 10:18
Вопрос, как можно упростить даную процедуру, а точнее полностью сделать автоматическую маршрутизацию, что-бы она сама добавлялась при загрузке, а по возможности, чтобы она вообще забирала все нужные маршруты от провайдера через апаче( для виндоувса на сервере провайдера есть файлик маршрутизации, который при каждой загурке считываетса и автоматом пишет:
-"route add 194.44.*.* mask 255.255.255.255 10.18.79.253 metric 1 -p" ,

wget |grep|awk|bash

putin писал(а):
13.12.2010 10:18
вообще ваши мысли!

чегобы пожрать...
puts ("Working, please wait...");while(1);
Спасибо сказали:
Аватара пользователя
taaroa
Сообщения: 1319

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение taaroa »

putin писал(а):
13.12.2010 10:18
и вообще ваши мысли!

маршрутизацией должен заниматься маршрутизатор (провайдер), а не клиент.
wget+awk+ip+sh

Код: Выделить всё

SOURCE=http://
NET=`/usr/bin/wget -O - -o /dev/null $SOURCE`
for n in $NET
do
echo $n
done | awk 'BEGIN { FS="|"} {print "/sbin/route add -net "$2" gateway gw eth0"}' > $OUT
blahblah


:wq
Спасибо сказали:
putin
Сообщения: 20
ОС: XP+FreeBSD

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение putin »

taaroa писал(а):
13.12.2010 12:29
putin писал(а):
13.12.2010 10:18
и вообще ваши мысли!

маршрутизацией должен заниматься маршрутизатор (провайдер), а не клиент.
wget+awk+ip+sh

Код: Выделить всё

SOURCE=http://
NET=`/usr/bin/wget -O - -o /dev/null $SOURCE`
for n in $NET
do
echo $n
done | awk 'BEGIN { FS="|"} {print "/sbin/route add -net "$2" gateway gw eth0"}' > $OUT
blahblah


Спасибо за скриптик-сегодня буду пробывать, если-чё ждите со слезами :cray:
По поводу провайдера он как-бы занимаетса, но вот для юникс-бодобных никак не может, а у нас в сетке много сидят на Убунте, по этому вот и упрощаю всем жизнь, а как по поводу VPN? Как сделать чтобы подключаясь через нетворк-менеджер он автоматом делал себя шлюзом, куда, что писать? Извините если повторюсь.

iУведомление от модератора blackdevil
Просьба не коверкать язык. Если правильно писать не получается - используйте спеллчекер.
Спасибо сказали:
putin
Сообщения: 20
ОС: XP+FreeBSD

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение putin »

Не получаться, вот что пишет:
/home/fobos/route.sh: строка 6: $OUT: неоднозначное перенаправление
/home/fobos/route.sh: строка 7: blahblah: команда не найдена
Помогите плиз.

Код: Выделить всё

SOURCE=http://10.18.31.253/kpi1-route/kpi1_route.srv
NET=`/usr/bin/wget -O - -o /dev/null $SOURCE`
for n in $NET
do
echo $n
done | awk 'BEGIN { FS="|"} {print "/sbin/route add -net "$2" gateway gw eth0"}' > $OUT
blahblah


Пару строк с файла pi1_route.srv:

Код: Выделить всё

-"route add 10.18.0.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.1.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.8.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.12.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.18.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.20.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.22.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.24.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.36.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.40.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.44.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.48.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.52.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.92.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.148.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.152.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.156.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.157.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.158.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.255.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"


Я так понимаю это не правильный вариант, а правильный должен быть так:
"route add -net 10.18.255.0 netmask 255.255.255.0 gw 10.18.31.254" ?
Спасибо сказали:
shotdownsystem
Сообщения: 423
ОС: Basic command interpreter

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение shotdownsystem »

putin писал(а):
13.12.2010 16:52
/home/fobos/route.sh: строка 7: blahblah: команда не найдена

blahblah - проприетарная программа автора, попросите лично, может даст.

OUT = "~/.route" или вместо "> OUT" write "|bash"
puts ("Working, please wait...");while(1);
Спасибо сказали:
putin
Сообщения: 20
ОС: XP+FreeBSD

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение putin »

не получается, вот что пишет:
awk: cannot open write (No such file or directory)
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение Rootlexx »

putin
Попробуйте:

Код: Выделить всё

#!/bin/bash
declare -r SOURCE=http://10.18.31.253/kpi1-route/kpi1_route.srv;
function get_mask()
{
  : ${1:?Mask expected};
  IFS=.;
  declare -a IP_addr=($1);
  unset IFS;
  declare -i iterator result=0;
  for iterator in {0..3}; do
    let result+=$((8-$(bc -l <<< "result=l($((256-${IP_addr[$iterator]})))/l(2); scale=0; result/1;")));
  done
  printf %i $result;
}
declare -a route_data;
declare route_line;
while read route_line; do
  route_data=($(cut -d " " -f 3,5,6 <<< "$route_line"));
  ip route add ${route_data[0]}/$(get_mask ${route_data[1]}) via ${route_data[2]};
done < <(wget -O - -q $SOURCE | grep -v ^$);
Спасибо сказали:
putin
Сообщения: 20
ОС: XP+FreeBSD

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение putin »

Нет не получается, вот что пишет:

Код: Выделить всё

Error: an inet prefix is expected rather than "/".
/home/fobos/route.sh: строка 5: 1: Mask expected
Error: an inet prefix is expected rather than "/".
/home/fobos/route.sh: строка 5: 1: Mask expected
Error: an inet prefix is expected rather than "/".
/home/fobos/route.sh: строка 5: 1: Mask expected
Error: an inet prefix is expected rather than "/".

Это при виде файла kpi1_route.srv:

Код: Выделить всё

-"route add 10.18.0.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.1.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.8.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.12.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.18.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.20.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.22.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.24.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.36.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.40.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.44.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.48.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.52.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.92.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.148.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.152.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.156.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.157.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.158.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.255.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"

И вот что пишет, когда я изменяю содержимое файла kpi1_route.srv:

Код: Выделить всё

/home/fobos/route.sh: строка 5: 1: Mask expected
Error: an inet prefix is expected rather than "/".
/home/fobos/route.sh: строка 11: 256-: ошибка синтаксиса: ожидается операнд (error token is "-")
/home/fobos/route.sh: строка 11: 8-: ошибка синтаксиса: ожидается операнд (error token is "-")
Error: an inet prefix is expected rather than "-net/".
/home/fobos/route.sh: строка 11: 256-: ошибка синтаксиса: ожидается операнд (error token is "-")
/home/fobos/route.sh: строка 11: 8-: ошибка синтаксиса: ожидается операнд (error token is "-")
Error: an inet prefix is expected rather than "-net/"


Содержимое файла kpi1_route.srv такое:

Код: Выделить всё

route add -net 10.18.255.0 netmask 255.255.255.0 gw 10.18.31.254
route add -net 10.18.18.0 netmask 255.255.0.0 gw 10.18.31.254

Какой вариант kpi1_route.srv правильный, и что делать дальше-не получается, буду очень благодарен.
Спасибо сказали:
putin
Сообщения: 20
ОС: XP+FreeBSD

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение putin »

Ребята, я извиняюсь. Маршрутизация добавилась при первом варианте файла "kpi1_route.srv"

Код: Выделить всё

-"route add 10.18.0.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.1.0 mask 255.255.255.0 10.18.31.254 metric 1 -p"
-"route add 10.18.8.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.12.0 mask 255.255.252.0 10.18.31.254 metric 1 -p"
-"route add 10.18.18.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"
-"route add 10.18.20.0 mask 255.255.254.0 10.18.31.254 metric 1 -p"

Но ошибки те которые я писал все-равно есть, что делать?
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение Rootlexx »

Видимо, в файле источника обилие пустых строк. Немного изменил скрипт в своём сообщении - пробуйте.
Спасибо сказали:
putin
Сообщения: 20
ОС: XP+FreeBSD

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение putin »

Rootlexx писал(а):
14.12.2010 11:41
Видимо, в файле источника обилие пустых строк. Немного изменил скрипт в своём сообщении - пробуйте.

Да действительно-все работает теперь без проблем, я даже уже сделал скрипт для автоматической установки в систему и запуска при каждой загрузке. Спасибо-выручили!
Теперь вот вопрос за малым, как сделать чтобы VPN автоматом делал себя дефолтным шлюзом?
Я копировал файл /etc/ppp/ip-up в /etc/ppp/ip-up.d/ добавив туда несколько строк:

Код: Выделить всё

route  del default
route add 0.0.0.0 netmask 0.0.0.0 gw $PPP_LOCAL

И тогда вроде все нормально начинало работать все как нужно, но вот при отключении VPN - система начинает жутко тормозить (машина не сильная), подскажите, пожалуйста, как здесь быть?

Код: Выделить всё

root@fobos:/home/fobos# cat /etc/ppp/ip-up.d/ip-up
#!/bin/sh
#
# This script is run by the pppd after the link is established.
# It uses run-parts to run scripts in /etc/ppp/ip-up.d, so to add routes,
# set IP address, run the mailq etc. you should create script(s) there.
#
# Be aware that other packages may include /etc/ppp/ip-up.d scripts (named
# after that package), so choose local script names with that in mind.
#
# This script is called with the following arguments:
#    Arg  Name                          Example
#    $1   Interface name                ppp0
#    $2   The tty                       ttyS1
#    $3   The link speed                38400
#    $4   Local IP number               12.34.56.78
#    $5   Peer  IP number               12.34.56.99
#    $6   Optional ``ipparam'' value    foo

# The  environment is cleared before executing this script
# so the path must be reset
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
export PATH

# These variables are for the use of the scripts run by run-parts
PPP_IFACE="$1"
PPP_TTY="$2"
PPP_SPEED="$3"
PPP_LOCAL="$4"
PPP_REMOTE="$5"
PPP_IPPARAM="$6"
export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM

route  del default
route add -net 0.0.0.0 netmask 0.0.0.0 gw $PPP_LOCAL
# as an additional convenience, $PPP_TTYNAME is set to the tty name,
# stripped of /dev/ (if present) for easier matching.
PPP_TTYNAME=`/usr/bin/basename "$2"`
export PPP_TTYNAME

# If /var/log/ppp-ipupdown.log exists use it for logging.
if [ -e /var/log/ppp-ipupdown.log ]; then
  exec > /var/log/ppp-ipupdown.log 2>&1
  echo $0 $*
  echo
fi

# This script can be used to override the .d files supplied by other packages.
if [ -x /etc/ppp/ip-up.local ]; then
  exec /etc/ppp/ip-up.local "$*"
fi

run-parts /etc/ppp/ip-up.d \
  --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5" --arg="$6"

# if pon was called with the "quick" argument, stop pppd
if [ -e /var/run/ppp-quick ]; then
  rm /var/run/ppp-quick
  wait
  kill $PPPD_PID
fi
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение Rootlexx »

putin писал(а):
14.12.2010 13:17
Я копировал файл /etc/ppp/ip-up в /etc/ppp/ip-up.d/

Зачем? Почитайте комментарий в этом скрипте.
Достаточно было создать исполняемый файл, скажем, /etc/ppp/ip-up.d/route со следующим содержимым:

Код: Выделить всё

ip route delete default
ip route add default via $4

putin писал(а):
14.12.2010 13:17
система начинает жутко тормозить

Неудивительно.
После поднятия интерфейса выполняется /etc/ppp/ip-up, который с помощью run-parts запускает все скрипты в /etc/ppp/ip-up.d. Если вы в данный каталог поместили копию /etc/ppp/ip-up с косметическими изменениями, то эта копия снова запускает все скрипты в /etc/ppp/ip-up.d, включая саму себя, - в результате происходит рекурсивный запуск всё новых и новых копий данного скрипта, что быстро истощает доступные ресурсы системы.
Спасибо сказали:
putin
Сообщения: 20
ОС: XP+FreeBSD

Re: [Решено] Ubuntu 10.04 + Network Manager + PPTP

Сообщение putin »

Rootlexx писал(а):
14.12.2010 18:20
putin писал(а):
14.12.2010 13:17
Я копировал файл /etc/ppp/ip-up в /etc/ppp/ip-up.d/

Зачем? Почитайте комментарий в этом скрипте.
Достаточно было создать исполняемый файл, скажем, /etc/ppp/ip-up.d/route со следующим содержимым:

Код: Выделить всё

ip route delete default
ip route add default via $4

putin писал(а):
14.12.2010 13:17
система начинает жутко тормозить

Неудивительно.
После поднятия интерфейса выполняется /etc/ppp/ip-up, который с помощью run-parts запускает все скрипты в /etc/ppp/ip-up.d. Если вы в данный каталог поместили копию /etc/ppp/ip-up с косметическими изменениями, то эта копия снова запускает все скрипты в /etc/ppp/ip-up.d, включая саму себя, - в результате происходит рекурсивный запуск всё новых и новых копий данного скрипта, что быстро истощает доступные ресурсы системы.

Спасибо всем! простите за мое нубство, но если бы не Вы ничего не работало, а так все хорошо!
Все отлично, у меня слов просто не хватает, как я доволен и признателен.
Спасибо сказали: