Ученик (79)

Как настроить VPN в Линукс?

Стоит 9-я Убунта. Как настраивать? Ничего не пойму...
Регистрируйтесь, делитесь ссылками в соцсетях, получайте на WMR кошелек 20% с каждого денежного зачисления пользователей, пришедших на проект по Вашей ссылке. Подробнее
После регистрации Вы также сможете получать до 75 руб за каждую тысячу уникальных поисковых переходов на Ваш вопрос или ответ Подробнее
ЛУЧШИЙ ОТВЕТ
Советник (3696)
Скрипты - это все, конечно, хорошо. Предлагаю гуевый способ. :)

Жмем правой кнопкой на апплете сети (пиктограмма) ⇒ Edit Connections.
Там выбираем вкладку VPN.
Если кнопка Add неактивна, необходимо установить дополнительные пакеты типа PPP,PPTP,PPPD. Все это богатство ищете здесь ссылка - ищем там PPTP-Linux и Network-Manager-PPTP. После скачивания сначала ставим первый пакет, затем второй.

После установки пакетов и перезагрузки кнопка Add станет активной. Проделываем все вышеперечисленное и жмем кнопку Add.

Там выбираем протокол (обычно PPTP - Peer-to-Peer Transport Protocol). Выбираем и жмем Create.
Пишем шлюз (если есть), логин и пароль.

Жмем "Дополнительно". Там устанавливаем все настройки безопасности, рекомендованные провайдером VPN.

Жмем везде ОК. Затем левой кнопкой тыкаем по апплету сети ⇒ VPN Connections ⇒ выбираем наше соединение левой кнопкой. Все, процесс пошел. :)
ЕЩЕ ОТВЕТЫ
Магистр (1566)
Для того, чтобы настроить у себя инет через VPN, нам понадобятся: сам скрипт, разумеется, а также такие пакеты, как ppp, pptp, pppd – они должны быть установлены в системе. Итак, приступаем:

1. Берем скрипт и настраиваем его под себя, редактировать, в общем-то, надо только секцию network settings, что видно ниже:
#!/bin/sh

#
# fix broken path
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:.
export PATH

#
# network settings
#
USER=ВАШ_ЛОГИН_НА_VPN
NETWORK=192.168.0.0 // настроить на для своей сети
NETMASK=255.255.255.0 // обычно вроде такая и останется
VPNSERVER=192.168.0.253 // Смените на ваш адрес vpn-сервера
GATEWAY=192.168.55.253 // Указать свой
DEVICE=eth0 // если нужно, то тоже сменить

#
# vpn stuff
#
PPPD=/usr/sbin/pppd
PPTP=/usr/sbin/pptp

if [ ! -x $PPPD ]; then
echo «$0: $PPPD not found»
exit 1
fi

if [ ! -x $PPTP ]; then
echo «$0: $PPTP not found»
exit 1
fi

#
# here we go
#
case «$1» in
start)
if [ ! -d /var/run/pptp ]; then
mkdir /var/run/pptp
fi
if [ -f /var/run/pptp/remote ]; then
if ping -vc1 'cat /var/run/pptp/remote'; then
exit 1
fi
killall -HUP pptp
killall -TERM pppd
sleep 2
fi
rm -rf /var/run/pptp/* >/dev/null
route del default
route add -net $NETWORK netmask $NETMASK gw $GATEWAY dev $DEVICE
echo -n «===> Starting vpn: »
($PPTP $VPNSERVER defaultroute noauth user $USER && \
echo -n «done») || echo -n «failed»
echo
;;
stop)
echo -n «===> Stopping vpn: »
killall -HUP pptp
killall -TERM pppd
sleep 2
rm /var/run/pptp/* >/dev/null
route del -net $NETWORK netmask $NETMASK gw $GATEWAY dev $DEVICE
route add default gw $GATEWAY dev $DEVICE
echo «done»
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo «*** Usage: vpn {start|stop|restart}»
exit 1
;;
esac

exit 0

Затем берем этот скрипт и ставим его в /usr/bin/, делая его исполняемым. После чего остается только отредактировать файл /etc/ppp/chap-secrets, который должен иметь следующий вид:
ВАШ_ЛОГИН * ПАРОЛЬ

Вот и все – теперь вроде все должно работать. Следует заметить, что файл /etc/ppp/options не должен содержать ни каких записей. Так что запускаем подключение - от root'а набираем
$ /usr/bin/vpn start

после чего мы должны увидеть следующее:
===> Starting vpn: done

Теперь, собственно, можно работать в Интернете, ну а отключать следует так:
$ /usr/bin/vpn stop

после чего должно быть сказано:
===> Stopping vpn: done

Надеюсь, что мой скромный вклад окажется полезным, хотя вся заслуга, конечно, принадлежит автору скрипта



1) Для VPN-подключения требуются программы pptp-linux и iproute.
sudo apt-get install pptp-linux iproute - установка pptp-linux и iproute для Debian/Ubuntu

2) sudo nano /etc/ppp/options.pptp - правим файл до вида:

noauth

# отключаем ненужные проверки
refuse-eap
refuse-pap
refuse-chap
refuse-mschap

# отключаем компрессию
nobsdcomp
nodeflate

# восстановление связи при обрыве
persist

# десять попыток восстановления
maxfail 10

# подменяем дефолтный маршрут
defaultroute
replacedefaultroute

3) sudo nano /etc/ppp/peers/nsunet - создаем файл следующего содержания, подставляя вместо LOGIN и PASSWORD Ваши данные:
pty "pptp pptp.nsu.ru --nolaunchpppd"
connect /bin/true
name LOGIN
password "PASSWORD"
remotename nsunet
file /etc/ppp/options.pptp

5) sudo wget -O /etc/network/addroute.sh ссылка - скачиваем addroute.sh и кладем его в /etc/network/
sudo chmod +x /etc/network/addroute.sh - устанавливаем разрешение на запуск

6) sudo nano /etc/rc.local - перед строкой "exit 0" вписываем строку "/etc/network/addroute.sh"

7) включение vpn - sudo pon nsunet, выключение - sudo poff nsunet




Для использования VPN туннеля необходимо:

1. включить поддержку протокола PPP в ядре
2. установить программное обеспечение поддержки протокола PPP (ppp-ВЕРСИЯ.АРХИТЕКТУРА.rpm)
3. установить программное обеспечение поддержки PPTP (pptp-linux-ВЕРСИЯ.АРХИТЕКТУРА.rpm)

При установке могут возникнуть проблемы с зависимостями пакетов. Я решил
попробовать установить с ключом --nodeps (в последствии всё работало без
проблем).

Настройка VPN туннеля:

Наберите в командной строке: pptp-command setup. Появиться меню:

1.) Manage CHAP secrets
2.) Manage PAP secrets
3.) List PPTP Tunnels
4.) Add a NEW PPTP Tunnel
5.) Delete a PPTP Tunnel
6.) Configure resolv.conf
7.) Select a default tunnel
8.) Quit
?:


Выбираем пункт 1. Появится меню:

1.) List CHAP secrets
2.) Add a New CHAP secret
3.) Delete a CHAP secret
4.) Quit
?:


Выбираем пункт 2. Программа настройки попросит ввести вас следующие данные:

Local Name: ВАШ_ЛОГИН
Remote Name [PPTP]: <Enter>
Password: ВАШ_ПАРОЛЬ


Прекрасно. Теперь выходим в главное меню (пункт 4). В главном меню выбираем пункт 4.
Add a NEW PPTP Tunnel.

1.) Other
Which configuration would you like to use?:


Выбираем 1. Должно появиться что-то вроде этого:

Tunnel Name: ИМЯ_ТУННЕЛЯ
Server IP: 82.137.137.30
What route(s) would you like to add when the tunnel comes up?
This is usually a route to your internal network behind the PPTP server.
You can use TUNNEL_DEV and DEF_GW as in /etc/pptp.d/ config file
TUNNEL_DEV is replaced by the device of the tunnel interface.
DEF_GW is replaced by the existing default gateway.
The syntax to use is the same as the route(8) command.
Enter a blank line to stop.
route: add default gw ВАШ_ВНЕШНИЙ_IP
route: add -host 82.137.137.30/32 gw 192.168.224.1
route: add -host 0.0.0.0/0 gw ВАШ_ВНЕШНИЙ_IP
route: <Enter>
Local Name and Remote Name should match a configured CHAP or PAP secret.
Local Name is probably your NT domain\username.
NOTE: Any backslashes (\) must be doubled (\\).

Local Name: ВАШ_ЛОГИН
Remote Name [PPTP]: <Enter>


В /etc/ppp/options.pptp у меня прописан следующий текст
(default-конфигурация, мною ничего не менялось):

#
# Lock the port
#
lock

#
# We don't need the tunnel server to authenticate itself
#
noauth

#
# Turn off transmission protocols we know won't be used
#
nobsdcomp
nodeflate

#
# We want MPPE
# (option naming specific to ppp 2.4.0 with unofficial patch)
#
#mppe-40
#mppe-128
#mppe-stateless

#
# We want a sane mtu/mru
# (ppp 2.4.0 with unofficial patch)
#
#mtu 1000
#mru 1000


Можно проверять:

pptp-command start ИМЯ_ТУННЕЛЯ


ВСЁ!





На многих форумах уже отмечали любовь всех линуксоидов к VPN.
Попробуем разобраться:
Инструментарий который нам понадобиться: в принципе не так уж и много всего лишь 2 пакета: pptp и ppp. Второй пакет у вас должен быть уже установлен в системе. pptp придёться ставить самим:)

Итак пакеты мы поставили. Что дальше? Идём в каталог /etc/ppp/ и если там ещё не создан, то создаём каталог peers. В нём в свою очередь создаём текстовый файл (Именно этот файл и будет именем вашего соединения), ну назовём к примеру его Internet. Пример своего привожу ниже:
root@corbina:/etc/ppp/peers# cat Internet

name тут ваш логин
remotename PPTP
debug
lock
noauth
nobsdcomp
nodeflate
defaultroute
#updetach
nodetach
noproxyarp
pty "/usr/sbin/pptp адресс до VPN сервера --nolaunchpppd"

Теперь в каталоге /etc/peers/ изменим файлы: ip-up, ip-down и chap-secrets.
В первых 2-х нам будет необходимо прописать все маршруты.
В up для соединения, в down для разрыва. строки должны быть вида:

/sbin/route add -host 195.14.50.1 gw 10.220.0.17 eth0
/sbin/route add -host 195.14.50.3 gw 10.220.0.17 eth0

Ваши маршруты вам должен дать провайдер.
В chap-secets указываеться логи и пароль для соединения. Запись должна иметь аткой вид:
"логин" * "пароль" * (Внимание кавычки стоят не случайно).

Вот в принципе и всё. теперь запускаем pppd call Internet - и соедиение должно подняться. Но я столкнулся здесь с проблемой. Но она вроде бы связана только с моим провайдером. Выдвалась ошибка о том, что невозможно переписать маршрут default.
Перелазил кучу форумов, досканально изучил все мануалы лежажие на форуме моего провайдера. В пустую. Только потом мне ответили что совсем недавно мой провайдер начал экономить на адрессах. Решением проблемы стало банальное удаление default из таблицы маршрутизации и прописание дополнительного маршрута до VPN сервера. В итоге строка получила такой вид:
route add Здесь_пишем_ адресс_до_VPN gw Шлюз dev eth0.
После чего VPN всё таки поднялся:)
Что удивительно, что в Windows у меня частенько VPN просто отключался (Район то подключили но не руками), в Linux'е же всё просто великолепно:) Если что-то упустил или кому то есть что добавить, то милости просим:)