Ученик (79)

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

Стоит 9-я Убунта. Как настраивать? Ничего не пойму...
Регистрируйтесь, делитесь ссылками в соцсетях, получайте на WMR кошелек 20% с каждого денежного зачисления пользователей, пришедших на проект по Вашей ссылке. Подробнее
ЛУЧШИЙ ОТВЕТ
__
Советник (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'е же всё просто великолепно:) Если что-то упустил или кому то есть что добавить, то милости просим:)