KARTz.RU
кушаешь морковь – встанет вновь и вновь

Настройка VPN без Network Manager

Февраль 17th, 2010

Рассмотрен классический способ создания pptp-туннелей в операционных системах на базе ядра linux версии 2.4 и свежее. Предлагается для использования в ubuntu для соединения с интернетом в домовых сетях. Это чуть более затратно по времени, по сравнению с нетворкманагером, но избавляет от его глючности и не зависит от иксов. Предлагается механизм автоподключения.

1.
sudo pptpsetup --create ratelcom --server --username

2. в файл /etc/ppp/peers/ratelcom добавить строки

defaultroute
replacedefaultroute
usepeerdns
maxfail 0
holdoff 10
ipparam ratelcom
persist

3. в /etc/network/interfaces добавить

auto eth0
iface eth0 inet dhcp
post-up pon ratelcom
pre-down poff ratelcom

если replacedefaultroute не будет работать, написать скриптик в /etc/ppp/ip-up.d/, который делал бы это, проверяя ipparam, например

#!/bin/sh
if [ "$6" = "ratelcom" ]; then
route del default
route add default gw $4
fi

если у вас запускается vpn из post-up скрипта для локалки, то нужно исправить файл /etc/ppp/ip-up.d/0000usepeerdns

[email protected]:/etc/ppp/ip-up.d# cat 0000usepeerdns.diff
21c21
< } > "$REALRESOLVCONF.tmp"
---
> } > "$REALRESOLVCONF"
24,25c24,25
< cp -a "$REALRESOLVCONF" "$REALRESOLVCONF.pppd-backup"
< mv -f "$REALRESOLVCONF.tmp" "$REALRESOLVCONF"
---
> #cp -a "$REALRESOLVCONF" "$REALRESOLVCONF.pppd-backup"
> #mv -f "$REALRESOLVCONF.tmp" "$REALRESOLVCONF"

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

#!/bin/bash
if ping -c 1 ya.ru $2>1
then
echo "all ok" > /dev/null
else
/etc/init.d/networking restart
echo "Restart networking around for inactivity " >> /home/user/netstat.txt
date +%H:%M:%S" "%d.%m.%Y >> /home/user/netstat.txt
echo -e "\n" >> /home/ferym/netstat.txt
fi

сделал исполняемым и записал в рутовский крон запуск каждую минуту
0-59 * * * * /bin/bash /home/ferym/netstat.sh

ubuntu 9.04

написал в /etc/ppp/peers/ratelcom адрес VPN-сервера
vpn3.ratelcom.ru, вот что получилось:
Код:

# written by pptpsetup
pty "pptp vpn3.ratelcom.ru --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name 10.0.2.115
remotename ratelcom
ipparam ratelcom
usepeerdns

в /etc/resolv.conf добавил строки
Код:
# Generated by NetworkManager
nameserver 80.64.107.14

и заменил содержимое в файле /etc/network/interfaces на:
Код:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
post-up pon ratelcom
pre-down poff ratelcom

воткнул кабеля, инет запахал

нужно содержимое файла /etc/ppp/peers/ratelcom. Если коротко, то он должен содержать строки:
Код:
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
auth
Причём замечено, что даже если вначале есть auth, то после require-mschap-v2 он требуется повторно (замечено на 9.04). Так же убедитесь, что запись в /etc/ppp/chap-secrets составлена правильно.

касательно установки vpn в слаке:
скачать,собрать и установить ppp и pppd
скачать и установить .tgz пакет с pptpsetup
выполнить:
pptpsetup --create ratelcom --server vpn.ratelcom.ru --username
ввести пароль
//создание файла подключения "ratelcom" в /etc/ppp/peers/
vim /etc/ppp/peers/ratelcom
добавить в начале строки:
debug
nodetach
не умеете пользоваться вимом сделайте в другом редакторе.
//debug - опция необязательная, отвечает за вывод инфы.
route add 10..0.1 dev eth0
//вместо eth0 - ваше сетевое устройство
//прописываем маршрут к шлюзу
route add 10.0.0.0 gw 10..0.1
//прописываем маршрут к сети
route add default gw 10..0.1
//прописываем маршрут по умолчанию (в том числе и к впн серверу)
pppd call ratelcom &
//подключаемся
route add default ppp0
//прописывем маршрут по умолчанию через созданный pptp тунель
соединение готово.
P.S. На осознание данных действий ушёл месяц.

добавление маршрутов надо делать в скрипте ip-up. например
Код:
$ cat /etc/ppp/ip-up.d/miee.sh
echo $* > /tmp/pppparams.log
if [ "$6" = "miee" ]; then
route add -host proxy2.miet.ru gw $4
route add -host skylab.sipc.miet.ru gw $4
route add -host 82.179.184.122 gw $4
route add -host www.vc.miet.ru gw $4
fi

создай файл /etc/ppp/ip-up/ratelcom.sh
сделай его исполняемым (chmod +x /etc/ppp/ip-up/ratelcom.sh)
напиши туда
Код:
if [ "$6" = "ratelcom" ]; then
route add default gw $4
fi

чтобы pppd сам перезванивал при разрыве добавьте в файл /etc/ppp/peers/ratelcom строки
persist
maxfail 0
holdoff 10
маршруты для локалки нужно добавить строкой up для нужного интерфейса в файле /etc/network/interfaces (если у вас есть такой), а вообще они не нужны, они все назначаются по DHCP

Так что у меня ошибка в описании, к среде попробую исправить. network-manager-pptp не встанет из файла. Дело обстояло так.

Некий человек (назовём его Владимир Владимирович) подключил интернет, заплатив за подключение $500. Некий оператор связи (назовём его ЗАО Рателком) по договору обязался не только подключить ему интернет, но и настроить (пункт 15.3.1). Однако, приехавшие монтажники отказались это делать, а вежливо представившаяся девушка в службе поддержки весьма грубо заявила, что не знает никаких договоров, и ничего настраивать они не будут. Она же, кстати, заявила, что не знает никаких законов о рекламе, и что исчезновение удвоения скорости в speed-тарифах «произошло уже давно, и это ваша проблема, что вы об этом не знаете.» А чтоб узнать, отмечу, надо заплатить не только абонентскую плату, но и «налог на уши» за переход на этот тариф. Реклама же тарифов имеет слабое отношение к их сущности, такой неутешительный вывод.

Однако, Владимир Владимирович не такой человек, который будет сидеть сложа руки. Да и мало кто стал бы сидеть на попе ровно, заплатив 15 тысяч рублей и не получив результат. Сейчас даже если весы в магазине сбиты, уже можно оштрафовать продавца на 30 тысяч рублей. Но цель состояла не в том, чтобы добиться какой-то там абстрактной справедливости. Просто нужен был интернет. Погоревав несколько дней, Владимир Владимирович обратился к профессионалам.

Для начала мы позвонили admin, который не смог выложить нужные пакеты в локальную сеть. Чтобы поднять апач и выложить пару пакетов, нужно время, а его не хватает даже на настройку оборудования, в целый город пакеты не идут. Тут не до проблемы отдельного пользователя. Времени нет. Должен же кто-то банить пользователей в DC++, чтобы не расслаблялись.

Тут стоит отметить, что с появлением доступных безлимитных тарифных планов интерес пользователей к локальным ресурсам постепенно падает. Сейчас локальный файлообмен нужен уже не столько пользователям, сколько провайдеру для минимизации внешнего трафика. Хотя зачем, если можно обойтись (цитирую) «особенностями шейпа трафика».

Так вот, для доставки пакетов на целевую машину был использован проверенный резервный канал со скоростью 15 км/ч. На физическом уровне модели OSI он представлял собой добера на велосипеде. Простите, почтовых голубей не было.

Теперь содержательная часть. Поставили pptp-linux, настроили pptpsetup, и только после этого обносились и поставили network-manager-pptp со всеми зависимостями, с нужными версиями пакетов и без падений кальсонного гнома. Теперь у Владимира Владимировича интернет включается двумя щелчками мышки. Профит.

Стоит ли говорить, что пользователь не получил никакой компенсации за необходимость пользоваться услугами сторонних специалистов («спасибо», сказанное Владимиром Владимировичем, дорого стоит), ему не продлили учётный период, хотя он некоторое время просидел без интернета по вине провайдера, хотя и оплатил его. Не было даже элементарных извинений. А зачем? Пипл хавает.

Хавайте дальше…

PS.: о способе решения многих проблем, рассказанным мне знакомым лейтенантом ВС РФ, расскажу, как только исправлю руководство по настройке интернета. Хочу сделать его максимально простым, чтобы поняли даже монтажники.


sudo apt-get install pptp-linux
sudo pptpsetup --create tunnel01 --server vpn.server.ru --username ??МЯ_ПОЛЬЗОВАТЕЛЯ --password ПАРОЛЬ --start

Рутинг.
в /etc/sysctl.conf должен быть включён форвардинг, я на своём впн-сервере делаю это так:
Код:
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding = 1
текущий статус можно проверить по содержимому файла /proc/sys/net/ipv4/ip_forward
в правилах iptables должно работать правило не ПРОДВ??ЖЕН??Е(FORWARD), а МАСКАРАД (MASQUERADE), например
Код:
iptables -I POSTROUTING -t nat -s 192.168.1.0/24 -j MASQUERADE

man pppd
в последнем заострить внимание на параметрах persist, maxfail, defaultroute, replacedefaultroute, holdoff

echo «nameserver 8.8.8.8″ >> /etc/resolv.conf

у нас cеть управляется через /etc/network/interfaces


Filed under: Без рубрики | Метки: , ,
Февраль 17th, 2010 21:51:24

Похожие посты:
1 comment

Arsen
24/02/2011

что-ниб изменилось в 10.10? ато ман нашёл такой… обидно будет)

Leave a Reply