Разное

Pptp клиент linux: Настройка PPTP подключения в Ubuntu Server.

Содержание

Для Ubuntu Trusty Server настроить PPTP клиент

Прочитано:
934

Задача: Хочу применительно к Ubuntu Trusty Server настроить pptp клиент для связи с Mikrotik где поднят VPN PPTP.

Что-то я уже давно не публиковал на своем блоге, но я уже здесь и готов исправить текущую ситуацию. На этот раз я хочу показать, как настроить PPTP-клиент, но не на Desktop редакции системы Ubuntu, а на Server. Нужно это мне в первую очередь, если нужно иметь возможность копировать бекапы, как если бы я находился в локальной сети. Но одними резервными копиями все не ограничивается: — получается система которая посредством pptp подключилась к удаленному узлу (Mikrotik PPTP VPN) может иметь доступ, как внутри текущей сети, в удаленной и выход в интернет. Я хочу чтобы данная заметка имела место быть опубликованной на моем блоге — это же шпаргалка действий на основе поставленных задач с которыми я сталкиваюсь или буду сталкиваться в повседневности.

И так, обновляю систему в рамках текущего Ubuntu Trusty Server релиза:

[email protected]:~$ sudo rm -Rf /var/lib/apt/lists

[email protected]:~$ sudo apt-get update && sudo apt-get upgrade -y

Устанавливаю в систему клиент для организации подключения через pptp:

[email protected]:~$ apt-cache search pptp-linux

pptp-linux - Point-to-Point Tunneling Protocol (PPTP) Client

[email protected]:~$ sudo apt-get install pptp-linux -y

Создаю свою конфигурацию на подключение, а все другие не используемые удаляю:

[email protected]:~$ sudo rm /etc/ppp/peers/provider

[email protected]:~$ sudo vi /etc/ppp/peers/mikrotik

pty "pptp home.domain.ru --nolaunchpppd"

#имя соединения

remotename mikrotik

require-mschap-v2

require-mppe-128

#логин

user <user>

#пароль

password "<pass>"

nodeflate

nobsdcomp

noauth

#nodefaultroute  #отключаем маршрут по умолчанию,

#если он вам нужен - замените на defaultroute

defaultroute

#принудительно изменять маршрут по умолчанию

replacedefaultroute

#переподключаться при обрыве

persist

#количество попыток переподключения

maxfail 10

#интервал между переподключениями

holdoff 15

#номер ppp интерфейса

unit 1

Запускаю созданную конфигурацию:

[email protected]:~$ sudo pppd call mikrotik

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

[email protected]:~$ tail -f /var/log/syslog

Dec 7 20:38:37 srv-trusty pppd[23445]: CHAP authentication succeeded

Dec 7 20:38:37 srv-trusty kernel: [ 1690.046189] PPP MPPE Compression module registered

Dec 7 20:38:37 srv-trusty pppd[23445]: MPPE 128-bit stateless compression enabled

Dec 7 20:38:38 srv-trusty pppd[23445]: replacing old default route to eth0 [155.55.55.1]

Dec 7 20:38:38 srv-trusty pppd[23445]: local IP address 171.29.100.2

Dec 7 20:38:38 srv-trusty pppd[23445]: remote IP address 171.29.100.1

Смотрю текущий ip адрес у активированных интерфейсов в системе:

[email protected]:~$ ip r

default dev ppp1 scope link

<EXTERNAL_IP_VPN> via 155.55.55.1 dev eth0 src 155.55.55.6

171.29.100.1 dev ppp1 proto kernel scope link src 171.29.100.2

155.55.55.0/24 dev eth0 proto kernel scope link src 155.55.55.6

Проверяю, а вижу ли я ресурсы за Mikrotik:

[email protected]:~$ ping <INTERNAL_IP_ADDRESS>

PING <INTERNAL_IP_ADDRESS> (<INTERNAL_IP_ADDRESS>) 56(84) bytes of data.

64 bytes from <INTERNAL_IP_ADDRESS>: icmp_seq=1 ttl=64 time=9.98 ms

64 bytes from <INTERNAL_IP_ADDRESS>: icmp_seq=2 ttl=64 time=16.0 ms

ответ да вижу и локальные в своей сети я также вижу:

[email protected]:~$ ping <LOCAL_IP_IN_NETWORK>

PING <LOCAL_IP_IN_NETWORK> (<LOCAL_IP_IN_NETWORK>) 56(84) bytes of data.

64 bytes from <LOCAL_IP_IN_NETWORK>: icmp_seq=1 ttl=64 time=7.37 ms

64 bytes from <LOCAL_IP_IN_NETWORK>: icmp_seq=2 ttl=64 time=2.36 ms

Только не вижу интернет:

[email protected]:~$ ping ya.ru

^C

Для решения проблемы с доступом в интернет: — в процессе…

Либо подключать к PPTP—серверу через настроенный клиент и отключать можно так:

[email protected]:~$ sudo pon

The file /etc/ppp/peers/provider does not exist. Please create it or use

a command line argument to use another file in the /etc/ppp/peers/ directory.

[email protected]:~$ sudo pon mikrotik

[email protected]:~$ sudo plog

Dec 7 21:01:14 srv-trusty pppd[2013]: CHAP authentication succeeded

Dec 7 21:01:14 srv-trusty pppd[2013]: MPPE 128-bit stateless compression enabled

Dec 7 21:01:15 srv-trusty pppd[2013]: replacing old default route to eth0 [155.55.55.1]

Dec 7 21:01:15 srv-trusty pppd[2013]: local IP address 171.29.100.2

Dec 7 21:01:15 srv-trusty pppd[2013]: remote IP address 171.29.100.1

[email protected]:~$ ifconfig | grep P-t-P

inet addr:171.29.100.2 P-t-P:171.29.100.1 Mask:255.255.255.255

[email protected]:~$ sudo poff mikrotik

[email protected]:~$ sudo plog

Dec 7 21:01:35 srv-trusty pppd[2013]: Sent 0 bytes, received 0 bytes.

Dec 7 21:01:35 srv-trusty pppd[2013]: restoring old default route to eth0 [155.55.55.1]

Dec 7 21:01:35 srv-trusty pppd[2013]: MPPE disabled

Dec 7 21:01:35 srv-trusty pppd[2013]: Child process pptp host.domain.ru --nolaunchpppd (pid 2014) terminated with signal 15

Dec 7 21:01:35 srv-trusty pppd[2013]: Modem hangup

Dec 7 21:01:35 srv-trusty pppd[2013]: Connection terminated.

Dec 7 21:01:35 srv-trusty pppd[2013]: Exit.

Убить/завершить подключение через pptp—клиент:

[email protected]:~$ sudo killall pppd

[email protected]:~$ ip r

default via 155.55.55.1 dev eth0

<EXTERNAL_IP_VPN> via 155.55.55.1 dev eth0 src 155.55.55.6

155.55.55.0/24 dev eth0 proto kernel scope link src 155.55.55.6

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

Разобрал как с системы получить доступ в интернет и необходимые сети:

[email protected]:~$ sudo vi /etc/ppp/peers/mikrotik

pty "pptp host.domain.ru --nolaunchpppd"

#имя соединения

remotename mikrotik

require-mschap-v2

require-mppe-128

#логин

user <user>

#пароль

password "<password>"

nodeflate

nobsdcomp

noauth

#переподключаться при обрыве

persist

#количество попыток переподключения

maxfail 10

#интервал между переподключениями

holdoff 15

#номер ppp интерфейса

unit 1

[email protected]:~$ sudo vi /etc/ppp/ip-up.d/route-traffic

#!/bin/bash

NET1="<LAN_NETWORK_ZA_VPN_MIKROTIK>"

NET2="<LAN_NETWORK_ZA_VPN_MIKROTIK>"

NET3="<LAN_NETWORK_ZA_VPN_MIKROTIK>"

IFACE="ppp1"

route add -net ${NET1} dev ${IFACE}

route add -net ${NET2} dev ${IFACE}

route add -net ${NET3} dev ${IFACE}

[email protected]:~$ sudo pon mikrotik

Чтобы удалить данный клиент с системы:

[email protected]:~$ sudo apt-get remove pptp-linux --purge -y

[email protected]:~$ sudo rm -Rf /etc/ppp /usr/share/ppp /usr/share/doc/ppp

Итого, я сделал/рассмотрел в шагах, что и как нужно сделать дабы моя Server (серверная) редакция Ubuntu Trusty смогла подключиться к моей сети находящейся за VPN подключением.

Работает. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.

Подключение через VPN (pptp клиент) в GNU/Linux

01.02.2009

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

Все описанное проверено на дистрибутива Debain Squeeze. Впрочем наверняка будет работать и в прочих дистрибутивах GNU/Linux. Мне не очень нравятся графические утилиты для настройки сети и по этому описываю, как все настроить в консоли. Все команды, приведенные ниже, необходимо выполнять с привилегиями пользователя root, т.е. вы должны либо зайти в терминал под root’ом или воспользоваться в терминале командой «su» или перед каждой командой вводить «sudo». Конфигурационные файлы редактировать надо так же от root.

Итак имеем:

  • провайдер, предоставляющий интернет через VPN соединение.
  • <ip_prov_local> — ip адрес нашего компьютера в локальной сети провайдера
  • <ip_prov_mask> — маска подсети
  • <ip_gateway> — ip-адрес шлюза
  • <ip_dns_0> — ip-адрес предпочитаемого сервера DNS
  • <ip_dns_1> — ip-адрес альтернативного сервера DNS
  • <address_vpn> — адрес VPN сервера
  • <ip_vpn_server> — ip-адрес VPN сервера. Изначально провайдер дал только адрес vpn сервера в виде vpn.providername.ru. Если вы не знаете IP адреса, везде в настройках, где указан данный параметр, можете указать <address_vpn>. Узнать ip-адресс можно после настройки связи с локальной сетью провайдера и с указанными серверами DNS.
  • <user_name> — имя пользователя VPN соединения
  • <user_pass> — пароль пользователя VPN соединения
  • <vpn_name> — имя VPN соединения. Нужно придумать самостоятельно. Я задал по имени провайдера.
  • для правильной работы локальной сети провайдер предлагает добавить маршрут командой (синтаксис для ОС Windows !)

    route add -p <network_ip> mask <mask_ip> <ip_gateway>

Открываем в редакторе файл /etc/network/interfaces. И редактируем секцию интерфейса, к которому подключен провайдер (в качестве примера eth2).

iface eth2 inet static

# указываем адрес нашего компьютера в локальной сети провайдера
address <ip_prov_local>

# указываем маску подсети
netmask <ip_prov_mask>

# указываем адрес шлюза
gateway <ip_gateway>

# добавляем предложенное провайдером правило маршрутизации
up route add -net <network_ip> netmask <mask_ip> gw <ip_gateway>

# добавляем правило маршрутизации до VPN сервера
up route add -host <ip_vpn_server> gw <ip_gateway>

# следующая команда заставляет подключать VPN соединение (подключение к внешке)
# при подключении интерфейса т.е. соединение с внешним интернетом будет происходить
# автоматически при подключении интерфейса (в т.ч. и при загрузке ОС)
# если вам не нужно автоматическое подключение, закомментируйте или удалите эту строку
post-up pon <vpn_name>

# следующая команда заставляет отключать VPN соединение (подключение к внешке) при
# отключении интерфейса, если вам не нужно автоматическое подключение, закомментируйте
# или удалите эту строку
pre-down poff <vpn_name>

auto eth2

Теперь необходимо задать адрес серверов DNS. Для этого открываем файл /etc/resolv.conf и добавляем следующие строки:

nameserver <ip_dns_0>
nameserver <ip_dns_1>

Теперь при
перезагрузке сети (при
перезагрузке системы или по команде /etc/init.d/networking restart вам будет доступна локальная сеть провайдера. И вы можете узнать IP-адрес VPN-сервера при помощи команды ping <address_vpn>

Теперь необходимо настроить VPN соединение.

В систем должен быть установлен пакет pptp-linux. Для установки воспользуйтесь вашим пакетным менеджером или введите команду:

aptitude install pptp-linux

Приступаем к настройке. Создаем файл в каталоге /etc/ppp/peers/ с именем <vpn_name>. Настройки в данном файле прописаны по рекомендации моего провайдера. Однако с небольшим исправлением: на сайте провайдера указано, что имя пользователя необходимо вводить в кавычках. У меня работает и так и так. Кроме того, добавил строку noauth.

noauth
mtu 1492
mru 1492
maxfail 3
lcp-echo-interval 10
lcp-echo-failure 4
name <user_name>
#имя подключения можно задать и другое
nremotename vpn
pty "pptp <ip_vpn_server> --nolaunchpppd"
require-mppe-128
replacedefaultroute

Далее редактируем файл /etc/ppp/chap-secrets. В отличии от примера на сайте провайдера добавлена звездочка в конце строки.

# vpn - это имя подключения которое вы задали в конфигурационном файле подключения 
# (выше)
<user_name> vpn <user_pass> *

Теперь можно пробовать установить соединение командой. Если вы отключили автоматическое подключение, то именно данной командой вы можете его устанавливать в дальнейшем.

pon <vpn_name>

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

ifconfig

В выводе этой команды должен появиться интерфейс «ppp0». Впрочем на конце может быть другая цифра, если у вас уже существует иное ppp-подключение.

Если у вас есть необходимость отключить используйте команду

poff <vpn_name>

Please enable JavaScript to view the comments powered by Disqus.

Все записи

Linux PPTP Server — PPTP Client . Autorestart. Automatic add routes

Краткое описание настройки и установки pptp клиента и сервера с автоматическим добавлением маршрутом и рестартом соединения.

1. Устанавливаем сервер. (Linux Debian 8)
apt-get update && apt-get install pptpd

2. Конфигурируем автозагрузку сервиса

systemctl enable pptpd

Synchronizing state for pptpd.service with sysvinit using update-rc.d…

Executing /usr/sbin/update-rc.d pptpd defaults

Executing /usr/sbin/update-rc.d pptpd enable

3. Создаем файл для авторизации клиентов

cat /etc/ppp/chap-secrets

client1          *  «PassWord» 10.1.1.11

Здесь 10.1.1.11 — IP адрес который будет присвоен клиенту
            client1 — логин клиента
            PassWord — пароль клиента

4. Редактируем файл /etc/pptpd.conf

localip 10.1.1.1

remoteip 10.1.1.200-230

Здесь 10.1.1.1 — это адрес самого сервера
            remoteip — пул динамически выдаваемых адресов. Если в файле chap-secrets в последнем поле будет * — тогда IP будет назначен с этого пула

5. Редактируем  /etc/ppp/pptpd-options

lock

mtu 1490

mru 1490

deflate 0

auth

+chap

-pap

nobsdcomp

nodeflate

defaultroute

6. Добавляем правила в iptables если у нас будет hub-spoke (звезда)

iptables -t filter -A INPUT -p gre -j ACCEPT
iptables -t filter -A FORWARD -i ppp+ -j ACCEPT

iptables -t  nat -A POSTROUTING -o ppp+ -j MASQUERADE

Настройка сервера PPTP окончена. Переходим к клиенту

1. Устанавливаем клиента
apt-get update && apt-get install pptp-linux

Добавляем правила в iptables

iptables -t filter -A INPUT -p gre -j ACCEPT
iptables -t filter -A FORWARD -i ppp+ -j ACCEPT

iptables -t  nat -A POSTROUTING -o ppp+ -j MASQUERADE

2. Правим файл /etc/ppp/chap-secretsclient1          PPTP  «PassWord» *

Здесь — client1 — логин, который соответствует логину на удаленном сервере
            PPTP — идентификатор подключения

3. Правим файл /etc/ppp/optionslock noauth nobsdcomp nodeflate persist holdoff 60 maxfail

4. Создаем файл  cat /etc/ppp/peers/backup

pty «pptp IP_ADDRESS_SERVER(EXTERNAL) —nolaunchpppd»

name client1

remotename PPTP

ipparam PPTP
persistroot
Здесь IP_ADDRESS_SERVER(EXTERNAL) — внешний адрес сервера
          PPTP — идентификатор подключения = из chap-secrets

      client1 — логин из chap-secrets

5. Правим файл  /etc/network/interfaces. Добавляем туда

auto ppp0

iface ppp0 inet ppp

    provider backup

6. Добавляем скрипты для добавления маршрутов в сеть. Так как впн подключение в данном случае — одно, то скрипт простой.
  В случае нескольких подключений к разным серверам необходимо воспользоваться проверками исходя из

# 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

cat /etc/ppp/ip-up.d/route_to_mars

#!/bin/bash

/sbin/route add -net 10.1.1.0/24 gw 10.1.1.1

cat /etc/ppp/ip-down.d/route_from_mars

#!/bin/bash

/sbin/route del -net 10.1.1.0/24

/sbin/route del -host 10.1.1.1

то есть например добавить проверку наподобие этой

case "$5" in
  # Обработка маршрутизации для сервера Newman Campus
          202.12.126.1)
                  /sbin/route add -net 202.12.126.0 gw 202.12.126.1
  # and flush the mail queue to get their email there asap!
                  /usr/sbin/sendmail -q &
                  ;;
          139.130.177.2)
  # Наше Internet соединение
  # когда вязь будет установлена, запустить сервер времни и синхронизировать с
  # миром. Предполагается, что он еще не запущен 
                  if [ ! -f /var/lock/subsys/xntpd ]; then
                          /etc/rc.d/init.d/xntpd.init start &
                  fi
  # Запуск сервера новостей (если еще не запущен)
                  if [ ! -f /var/lock/subsys/news ]; then
                          /etc/rc.d/init.d/news start &
                  fi
                  ;;
          203.18.8.104)
  # Скачать почту на мою домашнюю машину при установлении связи
  # Маршрутизция не требуется, так как мой домашний Ethernet обрабатывается IP
  # masquerade и proxyarp маршрутизацией.
                  /usr/sbin/sendmail -q &
                  ;;
          *)
  esac
  exit 0

Проверка соединения
pon backup

При правильной настройке должны появиться
route -n

10.1.1.0        10.1.1.16       255.255.255.0   UG    0      0        0 ppp0

10.1.1.1        0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

и должны быть ping 10.1.1.1

Настройка PPTP-клиента. Сетевые средства Linux

Настройка PPTP-клиента

Если PPTP-клиент предназначен для выполнения в системе Windows, настроить его для работы с PoPToP несложно, так как в системе Windows предусмотрена поддержка PPTP. Для обеспечения работы PPTP-клиента в системе Linux требуется дополнительное программное обеспечение. В любом случае после установления VPN-соединения VPN-клиент работает так, как будто он является частью локальной сети. Отличие от реальной работы в локальной сети состоит в том, что скорость обмена оказывается гораздо меньшей.

Использование PPTP-клиента в системе Linux

PoPToP — это PPTP-сервер, выполняющийся в системе Linux. Для того, чтобы обеспечить взаимодействие компьютера, работающего под управлением Linux, с PoPToP или другим PPTP-сервером, необходим дополнительный программный пакет PPTP-Linux. Его можно поучить, обратившись по адресу http://cag.lcs.mit.edu/~cananian/Projects/PPTP/ или http://pptpclient.sourceforge.net. На узле http://pptpclient.sourceforge.net содержатся исходные коды PPTP-Linux в виде TAR-архивов и в формате RPM, а также двоичный код для процессоров x86 и Alpha. Вам следует скопировать пакет PPTP-Linux и, если необходимо, скомпилировать его и установить на свой компьютер.

Подобно PoPToP, для поддержки кодирования PPTP-Linux использует программу pppd и средства ядра. Поэтому, чтобы могли установить соединения с шифрованием передаваемых данных, вам надо внести изменения в состав pppd и ядра. Способ внесения необходимых изменений рассматривался в предыдущем разделе. Требуемые для этого инструментальные средства содержатся на узле PPTP-Linux.

В состав пакета PPTP-Linux входит сценарий инсталляции pptp-command. Для установки PPTP-Linux необходимо выполнить следующие действия.

1. Запустите сценарий по команде pptp-command.

2. Сценарий выведет список из четырех опций: start, stop, setup и quit. Для активизации процедуры установки введите число 3.

3. Сценарий отобразит список из девяти пунктов, соответствующих вариантам настройки. Введите 2, чтобы выбрать пункт Add a New CHAP secret.

4. Система запросит локальное имя вашей системы. Это имя будет присвоено системе при работе в VPN. Если VPN-маршрутизатор выполняется в системе Windows, вам надо задать имя домена NetBIOS. Например, вы можете указать arbor\maple, в результате чего ваша система получит имя maple в домене arbor.

5. Система запросит удаленное имя вашей системы. В большинстве случаев можно принять значение по умолчанию (пустую строку). Удаленное имя необходимо только тогда, когда в сети многократно используется одно локальное имя с различными паролями.

6. Система запросит пароль. Этот пароль должен совпадать с паролем, заданным при настройке PoPToP или другого VPN-сервера.

7. Сценарий снова отобразит список из девяти пунктов, позволяющий выбрать вариант настройки. На этот раз вам надо выбрать пункт 5 Add a NEW PPTP Tunnel.

8. Система отобразит список туннелей. Вероятнее всего, этот список будет пустым; в нем будет содержаться только пункт Other. Если вы увидите подходящий вам пункт, выберите его, но в большинстве случаев приходится выбирать Other.

9. Система запросит определение туннеля, в частности имя, IP-адрес VPN-сервера и атрибуты маршрутизации. Атрибуты маршрутизации совпадают с параметрами команды route. Например, выражение add -host 172.19.87.1 gw DEF_GW указывает на то, что система должна использовать адрес 172.19.87.1 в качестве шлюза по умолчанию.

10. Сценарий еще раз выведет список из девяти пунктов. Выберите пункт 7 Configure resolv.conf.

11. Выберите конфигурацию туннеля, созданную на шаге 9. Система запросит DNS-информацию, которая будет помещена в файл /etc/resolv.conf. Введите соответствующие данные.

12. Список из девяти пунктов появится на экране снова. Выберите пункт 8 Select a default tunnel.

13. Система запросит имя туннеля по умолчанию. Выберите туннель, созданный на шаге 9 (или любой другой).

14. При очередном появлении списка из девяти пунктов выберите пункт 9 Quit. Это приведет к завершению программы установки.

После выполнения описанных выше действий программа PPTP-Linux готова к взаимодействию с PPTP-сервером. Для подготовки РРТР VPN-соединения используется сценарий pptp-command. В списке, отображаемом на 3, надо выбрать пункт 1 (start). Программа запросит номер туннеля. После указания этого номера подготовка PPTP VPN-соединения завершится.

Проверить настройку VPN-соединения можно в таблице маршрутизации либо при подготовке к взаимодействию с сервером в системе VPN. Если VPN-сервер не доступен, проверьте VPN-маршрутизатор с помощью утилиты ping. Вы также можете использовать программу traceroute, чтобы выяснить, проходят ли пакеты через VPN-соединение. Если по обычному Internet-соединению пакеты проходят, это означает, что таблица маршрутизации составлена некорректно. Если путь к VPN-системам через VPN PPP-соединение отсутствует, Linux попытайтесь направить пакеты в сеть через обычное соединение.

Использование PPTP-клиента в системе Windows

Очень часто PPTP-клиенты устанавливаются на компьютерах под управлением Windows, которые используют сотрудники, вынужденные часто работать вне офиса. PPTP-клиенты входят в состав систем Windows 9x/Me и Windows NT/2000/XP, но по умолчанию они не инсталлируются. Программное обеспечение PPTP будет работать только при наличии действующего Internet-соединения. Ниже описана процедура запуска РРТР-клиента в системе Windows Me.

1. Дважды щелкните на пиктограмме Add/Remove Programs в окне Control Panel. В результате на экране отобразится диалоговое окно Add/Remove Programs Properties.

2. В окне Add/Remove Programs Properties щелкните на вкладке Windows Setup.

3. Дважды щелкните на пункте Communications списка типов компонентов. На экране появится диалоговое окно Communications.

4. В окне Communications выберите пункт Virtual Private Networking.

5. Щелкните на кнопке OK сначала в окне Communications, а затем в окне Add/Remove Programs Properties. В результате в системе Windows будет установлено программное обеспечение PPTP. Если вам будет предложено перезагрузить компьютер, сделайте это.

6. После перезагрузки системы откройте папку Dial-Up Networking в Control Panel.

7. Дважды щелкните на пиктограмме Make New Connection. Вы увидите окно Make New Connection Wizard, показанное на рис. 26.3.

Рис. 26.3. При создании VPN-соединения выбирайте Microsoft VPN Adapter, а не модем, через который устанавливается соединение

8. Введите имя, идентифицирующее соединение, и выберите устройство Microsoft VPN Adapter (см. рис. 26.3).

9. Щелкните на кнопке Next. В окне Make New Connection отобразится поле редактирования, в котором надо ввести имя или IP-адрес сервера VPN.

10. Щелкните на кнопке Next. Система оповестит вас о том, что новое устройство создано. Щелкните на кнопке Finish.

В результате выполненных действий в окне Dial-Up Networking появится новая пиктограмма. Если вы дважды щелкнете на ней, Windows отобразит диалоговое окно Connect То, показанное на рис. 26.4. Укажите в нем имя пользователя и пароль и, если необходимо, измените имя или IP-адрес сервера VPN. После щелчка на кнопке Connect система установит соединение (это может занять несколько секунд). После этого в вашей системе появится дополнительный IP-адрес, соответствующий сети сервера VPN. Вы можете обращаться к компьютерам этой сети как к узлам локальной сети, например, просматривать сетевое окружение, пользуясь средствами My Network Places (в ранних версиях Windows использовалось название Network Neighborhood). Ресурсы сети будут доступны вам как локальные ресурсы. Однако не забывайте, что физически сеть не является локальной, поэтому скорость обмена с узлами этой сети будет значительно меньше, чем у компьютеров, реально подключенных к ней.

Рис. 26.4. Диалоговое окно Connect To предоставляет контроль над VPN-соединением

Как показано на рис. 26.4, в диалоговом окне Connect To флажок опции сохранения пароля не установлен. Если вы установите его, то, установив флажок опции Connect Automatically, вы укажете Windows, что соединение надо инициировать при загрузке системы. После щелчка на кнопке Properties будут доступны дополнительные средства настройки. На экране отобразится диалоговое окно, показанное на рис. 26.5, имя которого совпадает с именем VPN-соединения. Чаще всего используются опции, представленные на вкладках Networking и Security. С помощью элементов, расположенных на вкладке Networking, вы можете выполнять сжатие данных и протоколировать ход сеанса, кроме того, можно указать, какие протоколы должны поддерживаться средствами VPN. Щелкнув на кнопке TCP/IP Settings, вы можете указать системе на необходимость получать IP-адрес и адреса серверов DNS у сервера PPTP. На вкладке Security укрываются имя пользователя, пароль и имя домена NetBIOS. С помощью элементов, расположенных на ней, вы можете разрешить или запретить кодирование пользовательского имени и пароля.

Рис. 26.5. С помощью средств настройки клиента задаются параметры VPN-взаимодействия, используемые по умолчанию

Поделитесь на страничке

Следующая глава >

Как в линуксе подключиться к корпоративному VPN с помощью openconnect и vpn-slice / Хабр

Хотите использовать линукс на работе, но корпоративный VPN не даёт? Тогда эта статья может помочь, хотя это не точно. Хочу заранее предупредить, что вопросы администрирования сетей я понимаю плохо, поэтому не исключено, что я всё сделал неправильно. С другой стороны не исключено, что я смогу написать руководство так, что оно будет понятно обычным людям, так что советую попробовать.

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

Большинство команд, используемых в руководстве нужно выполнять через sudo, который для краткости убран. Имейте в виду.

Большинство ip адресов подверглись жестокой обфускации, поэтому если видите адрес наподобие 435.435.435.435 — там должен быть какой-то нормальный ip, специфичный для вашего случая.

У меня Ubuntu 18.04, но думаю с небольшими правками руководство можно применять и к другим дистрибутивам. Однако в этом тексте линукс == Ubuntu.

Cisco Connect

Те, кто сидит на Windows или MacOS могут подключиться к нашему корпоративному VPN через Cisco Connect, которому нужно указать адрес гейтвея и при каждом подключении вводить пароль, состоящий из фиксированной части и кода, генерируемого Google Authenticator.

В случае с Линуксом, завести Cisco Connect не получилось, зато получилось нагуглить рекомендацию использовать openconnect, сделанный специально для того, чтобы заменить Cisco Connect.

Openconnect

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

В убунте openconnect ставится из пакетного менеджера.

apt install openconnect

Сразу после установки можно попробовать подключиться к VPN

openconnect --user poxvuibr vpn.evilcorp.com

vpn.evilcorp.com это адрес вымышленного VPN\

poxvuibr — имя вымышленного пользователя

openconnect попросит ввести пароль, который, напомню, состоит из фиксированной части и кода из Google Authenticator, а потом попробует подключиться к vpn. Если получилось, поздравляю, можете смело пропускать середину в которой много боли и переходить к пункту про работу openconnect в фоне. Если не заработало, то можно продолжать. Хотя если получилось при подключении например с гостевого вайфая на работе, то возможно радоваться и рановато, надо попробовать повторить процедуру из дома.

Cертификат

С высокой вероятностью ничего не запустится, а выхлоп openconnect будет выглядеть как-то вот так:

POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found

Certificate from VPN server "vpn.evilcorp.com" failed verification.
Reason: signer not found
To trust this server in future, perhaps add this to your command line:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress

С одной стороны это неприятно, потому что к VPN подключения не произошло, но с другой стороны как поправить эту проблему в принципе понятно.

Тут сервер отослал нам сертификат, по которому можно определить, что подключение происходит именно к серверу родной корпорации, а не к злобному мошеннику, а системе этот сертификат неизвестен. И поэтому она не может проверить, настоящий сервер или нет. И поэтому на всякий случай прекращает работу.

Для того, чтобы openconnect всё-таки подключился к серверу, нужно явным образом сказать ему, какой сертификат должен прийти от VPN сервера с помощью помощью ключа —servercert

А узнать какой сертификат нам отослал сервер можно прямо из того, что напечатал openconnect. Вот из этого куска:

To trust this server in future, perhaps add this to your command line:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress

Вот такой командой можно попробовать подключиться ещё раз

openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com

Возможно теперь заработало, тогда можно переходить к концу. Но лично мне Убунта показала фигу вот в такой форме

POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found
Connected to HTTPS on vpn.evilcorp.com
XML POST enabled
Please enter your username and password.
POST https://vpn.evilcorp.com/
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 300, Keepalive 30
Set up DTLS failed; using SSL instead
Connected as 192.168.333.222, using SSL
NOSSSSSHHHHHHHDDDDD
3
NOSSSSSHHHHHHHDDDDD
3
RTNETLINK answers: File exists
/etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf

/etc/resolv.conf

# Generated by NetworkManager
search gst.evilcorpguest.com
nameserver 127.0.0.53

/run/resolvconf/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 192.168.430.534
nameserver 127.0.0.53
search evilcorp.com gst.publicevilcorp.com

habr.com будет ресолвиться, но зайти туда будет нельзя. Адреса типа jira.evilcorp.com вообще не ресолвятся.

Что тут произошло, мне не понятно. Но эксперимент показывает, что если добавить в /etc/resolv.conf строку

nameserver 192.168.430.534

то адреса внутри VPN начнут магическим образом ресолвиться и по ним можно будет ходить, то есть то, что ищет какими DNS ресолвить адреса, смотрит именно в /etc/resolv.conf, а не куда-то ещё.

Что подключение к VPN есть и оно работает, можно убедиться и без правок в /etc/resolv.conf, для этого достаточно ввести в браузере не символьное имя ресурса из vpn, а его ip адрес

По итогу получается две проблемы

  • при подключении к VPN не подхватывается её dns
  • весь трафик идёт через vpn, который не позволяет ходить в интернет

Что делать я сейчас расскажу, но сначала немного автоматизации.

Автоматический ввод фиксированной части пароля

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

Окончательное решения проблемы в статью не вошло, но можно сделать так, чтобы фиксированную часть пароля не пришлось вводить по многу раз.

Положим, фиксированная часть пароля — fixedPassword, а часть из Google Authenticator 567 987. Весь пароль целиком openconnect можно передать через стандартный ввод с помощью аргумента —passwd-on-stdin .

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com --passwd-on-stdin

Теперь можно постоянно возвращаться к последней введённой команде и менять там только часть из Google Authenticator.

Корпоративный VPN не позволяет ходить в интернет.

Вообще не очень неудобно, когда для того, чтобы сходить на хабр приходится использовать отдельный компьютер. Отсутствие возможности копипастить со stackoverfow, вообще может парализовать работу, поэтому что надо что-то делать.

Нужно как-то организовать, чтобы когда надо зайти на ресурс из внутренней сети, линукс ходил в vpn, а когда надо зайти на хабр — ходил в интернет.

openconnect после запуска и установки соединения с vpn, выполняет специальный скрипт, который находится в /usr/share/vpnc-scripts/vpnc-script. В скрипт на вход передаются какие-то переменные, а он делает настройку vpn. К сожалению, я не смог разобраться, как разделить потоки трафика между корпоративным vpn и остальным интернетом с помощью родного скрипта.

Видимо специально для таких как я была разработана утилита vpn-slice, которая позволяет направлять трафик по двум каналам без танцев с бубном. Ну, то есть танцевать придётся, но шаманом при этом быть не обязательно.

Разделение трафика с помощью vpn-slice

Во-первых vpn-slice придётся поставить, с этим придётся разобраться самостоятельно. Если в комментариях будут вопросы, я напишу по этому поводу отдельный пост. Но это обычная программа на питоне, так что сложностей быть не должно. Я ставил с помощью virtualenv.

А дальше утилиту надо применить, с помощью ключа —script указав openconnect, что вместо стандартного скрипта нужно использовать vpn-slice

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin \
--script "./bin/vpn-slice 192.168.430.0/24  " vpn.evilcorp.com 

В —script передаётся строка с командой, которую нужно вызвать вместо скрипта. ./bin/vpn-slice — путь к исполняемому файлу vpn-slice 192.168.430.0/24 — маска адресов, по которым следует ходить в vpn. Тут, имеется в виду что если адрес начинается с 192.168.430 — то ресурс с этим адресом нужно искать внутри vpn

Теперь ситуация должна быть почти нормальной. Почти. Теперь можно зайти на хабр и можно зайти на внутрикорпоративный ресурс по ip, но нельзя зайти на внутрикорпоративный ресурс по символьному имени. Если прописать соответствие символьного имени и адреса в hosts — всё должно заработать. И работать, пока ip не поменяется. Линукс теперь умеет ходить в интернет или во внутрикорпоративную сеть в зависимости от ip. Но для определения адреса по прежнему используется не корпоративный DNS.

Проблема ещё может проявляться в таком виде — на работе всё нормально, а дома на внутрикорпоративные ресурсы можно зайти только по ip. Это потому что когда ты подключен к корпоративному Wi-Fi, то DNS используется тоже корпоративный, и в нём символьные адреса из VPN ресолвятся, несмотря на то что пройти по такому адресу без использования VPN по прежнему нельзя.

Автоматическая модификация файла hosts

Если vpn-slice вежливо попросить, то он может после поднятия VPN сходить в её DNS, найти там ip адреса нужных ресурсов по их символьным именам и вписать их в hosts. После выключения VPN эти адреса будут из hosts удалены. Для этого нужно передать символьные имена в vpn-slice в качестве аргументов. Вот так.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com 

Теперь всё должно работать и в офисе и на пляже.

Искать адреса всех поддоменов в DNS, который отдала VPN

Если адресов внутри сети немного, то подход с автоматической модификацией файла hosts вполне рабочий. Но если ресурсов в сети много, то вам постоянно надо будет добавлять в скрипт строки вроде zoidberg.test.evilcorp.com zoidberg это так зовут один из тестовых стендов.

Но теперь, когда мы немного понимаем что к чему эту необходимость можно устранить.

Если после поднятия VPN посмотреть в /etc/hosts, то можно увидеть, вот такую строку

192.168.430.534 dns0.tun0 # vpn-slice-tun0 AUTOCREATED

Да и в resolv.conf была добавлена новая строка. Короче, vpn-slice каким-то образом определила где находится dns сервер для vpn.

Теперь надо сделать так, чтобы для того, чтобы узнать ip адрес доменного имени, кончающегося на evilcorp.com, линукс ходил в корпоративный dns, а если надо что-то другое, то в дефолтный.

Я довольно долго гуглил и обнаружил, что такая функциональность есть в убунте из коробки. Имеется в виду возможность использовать для ресолва имён локальный dns сервер dnsmasq.

То есть можно сделать так, чтобы за ip адресами линукс всегда ходил в локальный dns сервер, который в свою очередь, в зависимости от доменного имени, будет искать ip на соответствующем внешнем dns сервере.

Для управления всем, связанным с сетями и сетевыми соединениями, в убунте используется NetworkManager, а графический интерфейс для выбора, например, вайфай соединения — просто фронт к нему.

Нам надо будет полазить в его конфигурации.

  1. Создать файл в /etc/NetworkManager/dnsmasq.d/evilcorp

address=/.evilcorp.com/192.168.430.534

Обратите внимание на точку перед evilcorp. Она сигнализирует dnsmasq, что все поддомены evilcorp.com надо искать именно в корпоративном dns.

  1. Сказать NetworkManager, что для разрешения имён надо использовать dnsmasq

Конфигурация network-manager находится в /etc/NetworkManager/NetworkManager.conf Надо добавить туда:

[main]

dns=dnsmasq

  1. Перезапустить NetworkManager
service network-manager restart

Теперь, после подключения к VPN с помощью связки openconnect и vpn-slice, ip будет нормально опредёляться, даже если не добавлять символьные адреса в аргументы к vpnslice.

Как ходить через VPN в отдельные сервисы

После того, как получилось подключиться к vpn, я дня два очень радовался, а потом выяснилось, что если подключаться к впн не из офисной сети, то не работает почта. Симптом знакомый, не правда ли?

Почта у нас находится в mail.publicevilcorp.com, а значит не попадает под правило в dnsmasq и адрес почтового сервера ищется через публичный DNS.

Ну а в офисе всё равно используется DNS, в котором этот адрес есть. То есть я так думал. На деле после добавления в dnsmasq строки

address=/mail.publicevilcorp.com/192.168.430.534

ситуация никак не изменилась. ip остался тот же. Пришлось мне ходить на работу.

И уже потом, когда я углубился в ситуацию и немного разобрался в проблеме, один умный человек подсказал мне как её решить. Нужно было подключаться к почтовому серверу не просто так, а через vpn

Я использую vpn-slice, чтобы ходить через VPN по адресам, которые начинаются с 192.168.430. А у почтового сервера не только символьный адрес не является поддоменом evilcorp, у него ещё и ip адрес не начинается с 192.168.430. И из общей сети он конечно никого к себе не пускает.

Для того, чтобы линукс ходил через VPN и к почтовому серверу, нужно добавить в vpn-slice и его. Допустим адрес почтовика- 555.555.555.555

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 555.555.555.555 192.168.430.0/24" vpn.evilcorp.com 

Скрипт для поднятия VPN с одним аргументом

Всё это, конечно, не очень удобно. Да, можно сохранить текст в файлик и копипастить в консольку, а не набирать руками, но всё равно приятного мало. Для облегчения процесса можно завернуть команду в скрипт, который будет находиться в PATH. И тогда нужно будет только ввести код, полученный из Google Authenticator

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin \
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com 

Если поместить скрипт в connect~evilcorp~ то можно будет просто писать в консоли

connect_evil_corp 567987

Но теперь всё равно придётся зачем-то держать консоль в которой запущен openconnect открытой

Запуск openconnect в фоне

К счастью авторы openconnect позаботились о нас и добавили в программу специальный ключ —background, который делает так, чтобы программа после запуска работала в фоне. Если запустить её вот так, то консоль после запуска можно закрыть

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 \
--user poxvuibr \
--passwd-on-stdin \
--background \
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  

Теперь только непонятно, куда идут логи. Логи нам в общем-то не сильно нужны, но мало ли. openconnect может перенаправить их в syslog, где они будут храниться в целостности и сохранности. нужно этого надо добавить в команду ключ —syslog

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 \
--user poxvuibr \
--passwd-on-stdin \
--background \
--syslog \
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  \

И вот, получается, что openconnect работает где-то там в фоне и никому не мешает, но как его остановить непонятно. То есть можно, конечно отфильтровать выхлоп ps грепом и искать процесс в названии которого есть openconnect, но это как-то муторно. Спасибо авторам, которые подумали и об этом. В openconnect есть ключик —pid-file, с помощью которого можно проинструктировать openconnect писать идентификатор своего процесса в файл.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 \
--user poxvuibr \
--passwd-on-stdin \
--background \ 
--syslog \
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  \
--pid-file ~/vpn-pid

Теперь всегда можно прибить процесс командой

kill $(cat ~/vpn-pid)

Если процесса нет, kill ругнётся, но ошибку не кинет. Если файла нет, то тоже не случится ничего страшного, так что можно смело убивать процесс в первой строке скрипта.

kill $(cat ~/vpn-pid)
#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 \
--user poxvuibr \
--passwd-on-stdin \
--background \
--syslog \
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  \
--pid-file ~/vpn-pid

Теперь можно включить компьютер, открыть консоль и запустить команду, передав ей код из Google Authenticator. Консоль потом можно прибить.

Понять, как жить без vpn-slice оказалось очень сложно. Пришлось много читать и гуглить. К счастью, когда столько времени провёл с проблемой, технические мануалы и даже man openconnect читаются как захватывающие романы.

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

Таблица маршрутизации

Это, упрощённо говоря, такая таблица в первой колонке которой содержится с чего должен начинаться адрес, по которому хочет пройти линукс, а во второй через какой сетевой адаптер по этому адресу пройти. На самом деле колонок больше, но сути это не меняет.

Для того, чтобы посмотреть таблицу маршрутизации нужно выполнить команду ip route

default via 192.168.1.1 dev wlp3s0 proto dhcp metric 600 
192.168.430.0/24 dev tun0 scope link 
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.534 metric 600 
192.168.430.534 dev tun0 scope link 

Тут каждая строчка отвечает за то, куда надо пройти для того, чтобы послать сообщение по какому-то адресу. Первым идёт описание с чего должен начинаться адрес. Для того, чтобы понять как определить, что 192.168.0.0/16 означает, что адрес должен начинаться с 192.168 нужно погуглить что такое маска ip адреса. После dev находится имя адаптера в который надо слать сообщение.

Для VPN линукс сделал виртуальный адаптер — tun0. За то, чтобы трафик для всех адресов начинающихся с 192.168 шёл через него отвечает строка

192.168.0.0/16 dev tun0 scope link 

Ещё посмотреть на текущее состояние таблицы маршрутизации можно с помощью команды route -n (ip адреса талантливо анонимизированы) Эта команда выдаёт результаты в другом виде и вообще deprecated, но её выхлоп часто попадается в мануалах в интернете и надо уметь его читать.

С чего должен начинать ip адрес для маршрута можно понять из комбинации колонок Destination и Genmask. Те части ip адреса, которым в Genmask соответствуют цифры 255, учитываются, а те, где там 0 — нет. То есть комбинация Destination 192.168.0.0 и Genmask 255.255.255.0 означает, что если адрес начинается с 192.168.0, то запрос к нему пойдёт по этом маршруту. А если Destination 192.168.0.0 но Genmask 255.255.0.0, то по этому маршруту пойдут запросы к адресам, которые начинаются с 192.168

Для того, чтобы разобраться, что на самом деле делает vpn-slice я решил посмотреть на состояния таблиц до и после

До включения VPN было так

route -n 

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0

После вызова openconnect без vpn-slice стало так

route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0
192.168.430.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.430.534 0.0.0.0         255.255.255.255 UH    0      0        0 tun0

А после вызова openconnect в комбинации с vpn-slice вот так

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0
192.168.430.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.430.534 0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Видно, что если не использовать vpn-slice, то openconnect явным образом пишет, что по всем адресам, кроме отдельно указанных, надо ходить через vpn.

Вот тут:

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0

Там рядом сразу указан ещё один путь, который надо использовать, если адрес, по которому пытается пройти линукс не соответствует ни одной маске из таблицы.

0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0

Тут уже написано, что в таком случае надо ходить через стандартный адаптер вайфай.

Я полагаю, что путь для VPN используется потому, что он в таблице маршрутизации первый.

И теоретически, если убрать вот этот дефолтный путь из таблицы маршрутизации, то в связке с dnsmasq openconnect должен обеспечивать нормальную работу.

Я попробовал

route del default

И всё заработало.

Роутинг запросов к почтовому серверу без vpn-slice

Но у меня же есть ещё почтовый сервер с адресом 555.555.555.555, на который тоже надо ходить через vpn. Маршрут до него тоже надо добавить руками.

ip route add 555.555.555.555 via dev tun0

И вот теперь всё норм. Так что обойтись без vpn-slice таки можно, но уже надо хорошо знать, что делаешь. Я сейчас думаю не добавить ли в последнюю строку родного скрипта openconnect удаление дефолтного маршрута и добавление маршрута для почтовика после подключения к vpn, просто, чтобы движущихся частей в моём велосипеде стало поменьше.

Наверное, кому-то для того, чтобы понять как настроить VPN хватило бы этого послесловия. Но я, пока пытался понять что и как мне делать, прочитал достаточно много таких руководств, которые работают у автора, но почему-то не работают у меня и решил добавить сюда все кусочки, которые нашёл. Я бы чему-то такому очень порадовался.

Linux VPN-клиенты — Unix How

Список лучших VPN-клиентов Linux 

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

ProtonVPN Client Tool

Создан группой ученых, инженеров и криптографов для обеспечения безопасности Интернета где бы Вы ни находились. Этот VPN-сервис ориентирован на конфиденциальность, безопасность и свободу. Он создает зашифрованный VPN-туннель, где ваши личные пароли и банковские данные остаются в безопасности, даже когда вы используете общедоступное или ненадежное подключение для передачи данных. Он сохраняет ваши данные просмотра в частном порядке и не передает третьим лицам. Это также позволяет Вам иметь доступ к контенту с географической блокировкой или любому веб-сайту. Сеть анонимности Tor плавно интегрируется с ProtonVPN, так что вы можете получать весь трафик через нее.

Скачайте с сайта https://protonvpn.com/download/#dl-clients

Pritunl 

Это бесплатный и открытый кроссплатформенный клиент OpenVPN. Позволяет Вам подключаться к серверам OpenVPN самым быстрым способом. Кроме того, вы также можете импортировать профили OpenVPN и немного настроить существующее соединение.

Клиент Pritunl прост, удобен в использовании и предлагает современный красочный интерфейс. Вы можете импортировать профили OpenVPN столько, сколько хотите. Вы можете найти простую документацию по установке клиента Pritunl OpenVPN на официальном сайте https://docs.pritunl.com/docs/installation

Private Internet Access (PIA)

Это хорошо известная служба VPN с 256-битным зашифрованным соединением AES, которая предоставляет вам анонимный IP-адрес для защиты ваших сетевых следов и конфиденциальности. Помимо всех других протоколов, OpenVPN является стандартным и наиболее безопасным. Этот Linux VPN сервис обеспечивает защиту от прерывания, IPV6 и защиту от утечки DNS. Он не хранит трафик или журналы активности пользователей на VPN-сервере.

Скачайте его с сайта https://www.privateinternetaccess.com/pages/downloads

AirVPN 

Это надежный, настраиваемый и ориентированный на конфиденциальность VPN для Linux. Вы можете использовать командную строку или графический интерфейс для легкой настройки. Это Linux VPN-сервер на базе OpenVPN, который обеспечивает надежный и зашифрованный защитный туннель для обеспечения конфиденциальности и сетевой нейтральности. Этот туннель шифрования военного класса предотвращает любые нежелательные вторжения, такие как шпионаж интернет-провайдера, правительства или даже любой преступной организации. Этот лучший VPN-сервис достаточно прозрачен для онлайн-безопасности и конфиденциальности. Он предлагает набор инструментов, таких как kill switch, внутреннее решение DNS, а также поддержку OpenVPN через SSH, SSL или Tor.

Вы сможете его скачать здесь https://airvpn.org/linux/

TorGuard Linux VPN 

Известен своим идеальным балансом цены и производительности. Этот лучший VPN для Linux обеспечивает зашифрованное интернет-соединение военного уровня для вашей цифровой зоны обслуживания и позволяет вам оставаться на скорости и производительности, используя анонимный IP-адрес. TorGuard неустанно заботится о безопасности и конфиденциальности в Интернете. Сервис включает поддержку нескольких протоколов, AnyConnect и поддержку OpenConnect SSL, Perfect Forward Secrecy (TLS), нежелательную рекламу, вредоносное ПО и блокировку вторжений. Этот VPN-сервер Linux не хранит никаких журналов трафика на VPN-сервере вместе с защитой от глубокой проверки пакетов.

Вы можете скачать его  с сайта https://torguard.net/downloads.php

Mullvad

Предоставляет VPN-клиент с открытым исходным кодом для Ubuntu / Debian, основанный на графическом пользовательском интерфейсе. Mullvad — это одна из лучших VPN-служб с множеством функций, таких как маршрутизация IPv6, переключатель отключения, идеальная переадресация портов, защита от утечек IPv6 и DNS. Все эти инструменты просто созданы для вашей личной идентификации, местоположения и активности в Интернете.

Этот VPN-сервис создает для вас надежное зашифрованное соединение AES-256, чтобы Вы могли безопасно просматривать веб-страницы и не нарушать свою конфиденциальность. Linux VPN-сервер Mullvad не хранит никаких журналов активности и поддерживает вас в качестве анонимного пользователя в цифровой жизни.

Загрузите с официального сайта https://mullvad.net/en/download/

HideMyAss

Хороший выбор для начинающих пользователей с простым в использовании и настраиваемым собственным VPN-клиентом Linux или даже OpenVPN. Этот VPN-сервис предоставляет хорошо написанное руководство по Linux. Это кроссплатформенный и поддерживаемый несколькими устройствами VPN сервис. Вы можете наслаждаться неограниченным количеством загрузок, быстрым и сверхнадежным доступом к сети, защищенным общедоступным Wi-Fi и смотреть что угодно в любом месте.

Ссылка на официальный сайт https://www.hidemyass.com/downloads

Buffered VPN 

Защищает от нежелательных вторжений или шпионских программ в Интернете. Он был оценен и признан одним из лучших и самых быстрых VPN-сервисов в сообществе Linux.

Его легко настроить в Linux, но сейчас поддерживает только протокол OpenVPN. Буферизованная VPN совместима между устройствами и обеспечивает высокоскоростное соединение без ограничений.

Информация по установке и настройке на официальном сайте https://buffered.com/tutorials/setup-buffered-vpn-linux/

VPN Unlimited 

Поддерживает протокол OpenVPN, останавливает отслеживание, производит блокировку рекламы и защиту от вредоносных программ. Эта служба Linux VPN не передает никакие данные третьим лицам. VPN Unlimited шифрует соединение для передачи данных и обеспечивает полную безопасность с бескомпромиссной скоростью.

Загрузите с сайта https://www.vpnunlimitedapp.com/en/downloads/linux

ExpressVPN 

Является одним из лучших VPN для Linux и поддерживает широкий спектр дистрибутивов, включая Ubuntu, Debian, CentOS, Fedora и др. Этот VPN-сервис обеспечивает впечатляющую поддержку Linux и высокую производительность.

ExpressVPN не предлагает никакого графического интерфейса рабочего стола, но у Вас есть все с интерфейсом командной строки, который может показаться сложным для начинающих пользователей Linux. Вы можете использовать OpenVPN для настройки этой службы Linux VPN. Она не записывает какую-либо активность в сети или регистрацию информации о трафике.

https://www.expressvpn.com/ru

Лучшие VPN для Linux на 2019 год

Лучшие VPN для Linux на 2019 год

Стоит быть честными – многие пользователи выбирают Linux по одной конкретной причине. Выбор прост, поскольку вместо постоянного наблюдения и передачи своих данных можно установить бесплатную платформу, созданную людьми для людей.

Подобрать vpn client, который предлагает равную функциональность против аналогов для Windows, проблематично. Потребуется потратить немало времени для поиска лучшего решения. Конечно, в Linux можно пользоваться специальными расширениями для браузеров, однако для выполнения некоторых задач или поддержки веб-приложений может потребоваться общий клиент для всей системы. По этой причине ниже представлены варианты, которые помогут юзерам в плане надежности и возможностей.

ExpressVPN

 

Это приложение, которое заслужило свое название. ExpressVPN на самом деле позволяет получить потоковое видео, торренты и серфинг на сверхвысокой скорости. Более 1500 серверов, проверенная политика без записи активности и ряд дополнительных функций делают его подходящим решением для основных и индивидуальных задач.

Клиент легко устанавливается и запускается с поддержкой OpenVPN. При использовании Ubuntu также есть возможность выбрать конфигурацию OpenVPN через Network Manager. Возможна конфигурация PPTP, но рекомендуется отказаться от этого протокола.

При возникновении проблем ExpressVPN предлагает исчерпывающие руководства по установке для каждого дистрибутива Linux. Более того, сервис представляет эффективную техническую поддержку, доступную 24 часа в сутки.

Особенности:

  • нет поддержки туннелирования;
  • работает с серверами P2P;
  • представляет пробное тестирование;
  • динамическая защита DNS

Официальный сайт ExpressVPN

NordVPN

Это идеальный вариант для опытных пользователей. NordVPN – компания которая постоянно прогрессирует. Так, качество серверов может поднять на вершину, либо опустить качество сети. Nord в этом плане сосредоточена на постоянном улучшении.

Хотя здесь не представляется выделенный клиент, конфигурация vpn linux работает без проблем, даже если ее подготовка занимает немного больше времени. Сервис не имеет проблемных моментов, о которых можно рассказать, а безопасность в сети поддерживается благодаря этой же VPN. Хотелось, чтобы в ближайшем будущем появился собственный графический интерфейс для дистрибутивов.

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

Особенности:

  • нет графического интерфейса;
  • работает с серверами по всему миру;
  • расширенные возможности.

AirVPN

Linux требует немного опыта и практичного подхода по сравнению с Windows. AirVPN также предполагает, что его пользователи хотя бы на базовом уровне умеют настраивать VPN.

Его стоит устанавливать опытным пользователям, ищущим надежный VPN для Linux. Eddie (версия клиента) работает одинаково на любом из дистрибутивов. Так что он предлагает общий функционал, независимо от установленной операционной системы.

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

Особенности:

  • уникальные алгоритмы шифрования;
  • требует опыт работы с настройкой;
  • работает через Tor, SSH или SSL;
  • гарантия возврата средств за подписку.

Private Internet Access

Этот сервис является основным VPN для пользователей по разным причинам. В первую очередь, это надежный клиент для Linux. Помимо простоты установки и быстрой настройки, PIA VPN предлагает удивительно хороший сервис, учитывая его цену. Проведя не более 5 минут после первого запуска, пользователь получит дешевую сеть с аварийной остановкой, защитой от утечки DNS, а также 3000 серверами в 44 странах.

Есть только одно предостережение – скорость обычно изменяется при переходе с сервера на сервер. Этого стоит ожидать, если их доступно более тысячи, хотя с помощью тестирования можно быстро выбрать идеальный вариант для потоковой трансляции, разблокировки сайтов или торрентов. Да, серверы P2P также предлагаются.

Активные форумы PIA в какой-то мере компенсируют отсутствие чата, но не стоит ожидать высокого уровня поддержки. Тем, кто может обойтись не этого, стоит оценить данный vpn client. Он предлагает ряд возможностей, низкую цену и 7-дневную гарантию возврата денег.

Особенности:

  • более 3000 серверов;
  • отсутствует техническая поддержка;
  • усиленная защита конфиденциальности.

Mullvad

«Mullvad» означает «Крот» на шведском языке. Если говорить о VPN, это имя указывает на поддержание подлинной онлайн-скрытности. В Linux сервис представит выделенный клиент со своим графическим интерфейсом. Защита от утечки и аварийного выключателя доступны по стандарту, но главное, здесь правильно реализована маршрутизация DNS IPv6. Часто такая проблема встречается даже в лучших поставщиков, но Mullvad удалось с ней справиться.

Надежное шифрование, отсутствие сохранения данных и обновление расположения серверов сделали vpn client максимально работоспособным. Наличие коротких справочников позволяет облегчить жизнь пользователям. Однако, гарантия возврата денег не представляется, а бесплатный vpn доступный для тестирования лишь 3 часа.

Особенности:

  • не слишком удобный для бесплатного тестирования;
  • решен вопрос с маршрутизацией DNS по IPv6;
  • удобный графический клиент.

Вывод

К сожалению, многие провайдеры прилагают гораздо больше усилий для обслуживания пользователей Mac и Windows. На сегодняшний день найти VPN – сложная задача, но вполне решаема.

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

Клиент PPTP


Клиент PPTP

Ubuntu HOWTO

Джеймс Кэмерон
29 ноября 2007 г.

Документация сообщества Ubuntu

Ubuntu сформировала сообщество, которое документирует наиболее распространенные задачи. Как
на 2007-11 можно найти документацию по использованию PPTP в Ubuntu
в:
https://help.ubuntu.com/community/VPNClient


Ubuntu Gutsy 7.10

  • установите пакет network-manager-pptp , используя
    Добавить / удалить, менеджер пакетов Synaptic или apt-get ,

  • щелкните значок сети, выберите VPN Connections , затем
    Настройте VPN , затем добавьте VPN с помощью мастера,

  • щелкните значок сети, затем VPN Connections затем VPN, которую вы
    создан.

Если после этого у вас возникнут проблемы, просмотрите журналы, чтобы узнать,
работал:

sudo tail -f / var / log / syslog

Чтобы увеличить ведение журнала, добавьте отладочный дамп в
/ etc / ppp / options и попробуйте еще раз.

Справка: тесты Джеймса Кэмерона 29 ноября 2007 г.
диагностика ветки списка рассылки.


Ubuntu Feisty

  • установите пакет network-manager-pptp , и если он не был
    уже установлен, перезапустите апплет диспетчера сети и сеть
    Управляющий делами:

    • щелкните правой кнопкой мыши значок сети на панели задач и выберите Удалить ,
    • Alt / F2, запустите nm-applet , и значок сети вернется,
    • перезапустите Network Manager:
      sudo / etc / dbus-1 / event.d / 25NetworkManager restart
      sudo /etc/dbus-1/event.d/26NetworkManagerDispatcher restart
  • щелкните левой кнопкой мыши значок сети, выберите VPNS , затем
    настройте , затем добавьте VPN с помощью мастера,
  • щелкните левой кнопкой мыши значок сети, затем VPNS затем созданный вами VPN,
  • посмотрите журналы, чтобы узнать, сработало ли это:
    sudo tail -f / var / log / syslog

Ссылка: PPTP от Ubuntu, Стивен Торн.


Ниже приведены инструкции по установке клиента PPTP в Ubuntu Linux.
последний раз тестировался с версией 5.10 Breezy на i386, но также
работает за 6.06 на i386. В ядре Ubuntu уже есть MPPE.

Содержание:


Настроить Ubuntu для использования Universe

Добавьте репозиторий юниверса в список источников. Видеть это
ветка для ссылок.


Установка клиентской программы

Установите клиент PPTP из проекта Ubuntu:

apt-get install pptp-linux


Установка программы настройки

Примечание: вы можете пропустить программу настройки и настроить клиент вручную.

  1. добавить в источники следующие строки
    list файл /etc/apt/sources.list:

    # Упаковка графического интерфейса PPTP Джеймса Кэмерона
    deb http://quozl.netrek.org/pptp/pptpconfig ./

    Примечание: можно использовать текстовый редактор или просто cat строки на
    конец файла с использованием >> , но если вы ошиблись в
    форматирование вам, вероятно, скажет apt-get update
    шаг.

  2. обновить список пакетов:
  3. установить графический интерфейс клиента PPTP:
    apt-get install pptpconfig

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


Configuration

  1. получите у администратора сервера PPTP:
    • IP-адрес или имя хоста сервера,
    • имя домена аутентификации (например, WORKGROUP),
    • имя пользователя, которое вы должны использовать,
    • пароль, который вы хотите использовать,
    • , требуется ли шифрование.
  2. запустите pptpconfig как root, и должно появиться окно

  3. введите сервер, домен, имя пользователя и пароль на вкладке Server ,
  4. , если вы решили на шаге установки 1 выше, что вам понадобится
    MPPE, и если ваш администратор говорит, что требуется шифрование, то на
    на вкладке Encryption нажмите Require Microsoft
    Двухточечное шифрование (MPPE)
    ,

  5. щелкните Добавить , и туннель появится в списке,
  6. щелкните туннель, чтобы выбрать его, щелкните Start и
    появится окно с журналом и статусом туннельного соединения,
  7. , если соединение не удастся, вам нужно будет собрать дополнительную информацию,
    поэтому на вкладке Разное нажмите Включить соединение
    средства отладки
    , нажмите Обновить , попробуйте Запустить снова,
    тогда посмотрите диагностическое HOWTO для
    какая бы ошибка ни отображалась.

  8. , если подключение прошло успешно, вы можете попробовать Ping test
    кнопка. Если пинг не проходит, попробуйте выяснить причину, прежде чем
    продолжаются. Если пинг работает, значит туннель активен, и вы можете
    сейчас работаем над маршрутизацией.
  9. решить, должен ли весь ваш сетевой трафик проходить через туннель
    или не. Если да, Остановите туннель, выберите его снова, затем на
    Routing tab, щелкните All to Tunnel , затем щелкните
    Обновите и попробуйте Запустите еще раз.Теперь попробуйте получить доступ к
    сеть за сервером.
  10. с другой стороны, если только часть вашего сетевого трафика должна идти
    через туннель, вам нужно будет получить у администратора сервера
    или фольклорная серия сетевых маршрутов для входа. Стоп
    туннель, выберите его еще раз, затем щелкните либо Client to LAN , либо
    LAN to LAN на вкладке Routing , используйте Edit Network
    Кнопка Routes
    , чтобы ввести маршруты один за другим, а затем попробуйте
    Запустите снова.Теперь попробуйте получить доступ к сети за
    сервер.

    Для получения дополнительной помощи по маршрутизации прочтите наш раздел «Маршрутизация».
    КАК.


Диагностика проблем

Если у вас проблемы с туннелем и вам нужно обратиться за помощью, начните
pppd с полным протоколированием:

# script pptp.log
Сценарий запущен, файл pptp.log
# вызов pppd имя туннеля dump debug logfd 2 nodetach
# exit
Сценарий выполнен, файл — pptp.log

где имя туннеля — имя туннеля, созданного вами в
программа конфигурации.Для получения дополнительных сведений см. Включение ведения журнала отладки.

Это даст вам файл pptp.log, который вы можете использовать для поиска
для известных решений в диагностике
HOWTO или прикрепить к e-mail к рассылке
список.


Конфигурация вручную

  1. получите у администратора сервера PPTP:
    • IP-адрес или имя хоста сервера ($ SERVER),
    • имя, которое вы хотите использовать для ссылки на туннель ($ TUNNEL),
    • имя домена аутентификации ($ DOMAIN),
    • имя пользователя, которое вы должны использовать ($ USERNAME),
    • пароль, который вы должны использовать ($ PASSWORD),
    • , требуется ли шифрование.

    В приведенных ниже шагах замените эти значения вручную. Например,
    где мы пишем $ PASSWORD, мы ожидаем, что вы замените его своим
    пароль.

  2. создайте или отредактируйте файл /etc/ppp/options.pptp, который устанавливает
    общие для всех туннелей параметры:

    lock noauth nobsdcomp nodeflate
  3. создать или добавить строки в файл / etc / ppp / chap-secrets,
    который содержит имена пользователей и пароли:

    $ ДОМЕН \\ $ ИМЯ ПОЛЬЗОВАТЕЛЯ PPTP $ ПАРОЛЬ *

    Примечание: если вы используете PPTP-сервер, для которого не требуется
    имя домена аутентификации, опустите косую черту, а также домен
    имя.

    Примечание: если пароли содержат какие-либо специальные символы, заключите их в кавычки.
    См. Man pppd для получения более подробной информации.

  4. создать файл / etc / ppp / peers / $ TUNNEL:
    pty «pptp $ SERVER —nolaunchpppd»
    имя $ DOMAIN \\ $ USERNAME
    удаленное имя PPTP
    require-mppe-128
    файл / etc / ppp / options.pptp
    ipparam $ ТУННЕЛЬ

    Примечание: если вам не нужна поддержка MPPE, удалите
    require-mppe-128 option из этого файла и
    / etc / ppp / options.pptp.

  5. запустить туннель с помощью команды pon :

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

    pon $ TUNNEL debug dump logfd 2 nodetach

    Примечание: у нас есть дополнительная информация о включении режима отладки и о диагностике проблем.

  6. остановить туннель с помощью команды poff :
  7. для создания сценария туннельного соединения, чтобы что-то было сделано как можно скорее
    когда туннель открыт, используйте либо ip-up.d скрипты или
    updetach ключевое слово.

    1. см. Routing HOWTO
      для примеров сценария ip-up.d, который добавляет маршруты или
      iptables правила.
    2. с использованием updetach приведет к тому, что pppd будет разветвляться, отсоединяться,
      и завершится успешно, как только сетевое соединение будет установлено. Этот пример
      подключает ссылку провайдера, затем туннель, затем запускается
      fetchmail для получения нового адреса электронной почты:

      pon provider updetach && pon $ TUNNEL updetach && fetchmail

      Примечание: двойной амперсанд && означает, что команды
      следующий за ним будет выполнен, только если команда слева от него
      Был успешен.Если туннель не может подключиться, fetchmail будет
      не произойдет.

  8. , чтобы туннель автоматически перезапускался в случае сбоя, добавьте параметр
    сохранить либо в командной строке, либо в
    / etc / ppp / peers / файл $ TUNNEL.
  9. , чтобы туннель запускался при загрузке системы,
    добавить в файл / etc / network / interfaces this iface
    stanza:

    iface tunnel inet ppp
    provider $ TUNNEL

    и отредактируйте раздел iface для сетевого подключения по умолчанию,
    обычно eth0, для подключения туннеля по возможности:

    auto eth0
    iface eth0 inet dhcp
    post-up / sbin / ifup tunnel
    pre-down / sbin / ifdown tunnel

    Примечание: это устраняет гонку между запуском туннеля и сетевым подключением по умолчанию, что может предотвратить туннельное подключение.

    2017-01-26

  10. чтобы настроить маршрутизацию, прочтите нашу Маршрутизацию
    HOWTO или используйте Network Manager.

Комментарии

Если у вас есть комментариев к этому документу, отправьте их автору
на сайте quozl на laptop.org. Но если вам нужна помощь , используйте список рассылки, чтобы мы могли поделиться
нагрузка.


История изменений

Дата Изменить
2007-11-29 Результаты тестирования для Ubuntu 7.10 от разработчика, плюс дополнительные подсказки по отладке.
2007-10-10 Укажите документацию сообщества Ubuntu.
2005-12-28 Написано на основе Debian HOWTO после отзывов Джеффа Нельсона.

.

Клиент PPTP


Клиент PPTP

Обзор

Клиент PPTP — это клиент Linux, FreeBSD, NetBSD и OpenBSD для
проприетарный протокол Microsoft Point-to-Point Tunneling Protocol, PPTP. Позволяет
подключение к виртуальной частной сети (VPN) на основе PPTP.

Хостинг предоставлен SourceForge.

Лицензия

Клиент PPTP находится под лицензией GNU General Public License (GPL) версии 2 или более поздней.Клиент PPTP был известен как pptp-linux и был написан К. Скоттом Ананианом.
Многие пользователи PPTP Client внесли свой вклад.

PPP 2.4.2 и более поздние версии содержат поддержку MPPE, добавленную Фрэнком Кьюсаком и другими,
который лицензируется под BSD без лицензии на рекламу.

Более старые и устаревшие PPP-MPPE 2.4.0 и 2.4.1 содержат MS-CHAP-v2.
и поддержка MPPE, которая была добавлена ​​в PPP Полом Кадачем
([email protected]). Были скопированы две функции из OpenSSL.Из-за этого мы должны сказать
для PPP-MPPE 2.4.0 и 2.4.1, что « этот продукт включает криптографические
программное обеспечение, написанное Эриком А. Янгом ([email protected])
«и

« этот продукт включает программное обеспечение, разработанное
OpenSSL Project для использования в
OpenSSL Toolkit. (http://www.openssl.org/).
»

2008-05-14

Начало работы

Итак, вы хотите запустить туннель PPTP из вашего Linux, FreeBSD,
NetBSD или система OpenBSD? Необходимо связаться с вашим работодателем
VPN? Только что получил ADSL? Мы предлагаем вам:

  • найдите на нашем сайте документацию, соответствующую вашему дистрибутиву, или используйте
    наши общие инструкции,
  • скачать и установить ПО согласно инструкции,
  • обратитесь к нашему HOWTO по диагностике, если
    у вас проблемы,
  • присоединяйтесь к нашему списку рассылки и просите о помощи, и
  • внести свой вклад в проект, помогая
    нам, чтобы улучшить документацию или программное обеспечение.

Особенности

  • совместим с Linux PPTP Server,
  • совместим с Microsoft Windows VPN Server,
  • совместим со многими поставщиками услуг ADSL,
  • совместим с Cisco PIX,
  • поддерживает 128-битное шифрование без сохранения состояния с использованием MPPE,
  • поддерживает туннели по запросу или постоянные туннели с использованием поддержки pppd psuedo-tty,
  • поддерживает синхронное кодирование HDLC PPP,
  • поддерживает переупорядочивание вышедших из строя пакетов,
  • работает в Linux, FreeBSD, NetBSD и OpenBSD.

Попробуй

Хотя в нашем разделе документации есть HOWTO, относящиеся к конкретным дистрибутивам, все они сводятся к следующему:
к этим фундаментальным шагам. Чтобы установить туннель к серверу PPTP:

  1. , если версия вашего ядра Linux ниже 2.6.15, обновите его или исправьте
    это, чтобы добавить поддержку MPPE,
  2. , если в вашем ядре Linux нет модуля ppp_mppe, перестройте его
    добавить поддержку MPPE, включив сборку ядра CONFIG_PPP_MPPE
    вариант,
  3. установить клиент PPTP, желательно из вашего Linux
    дистрибутив,
  4. , если версия pppd ниже 2.4.2, обновите его,
  5. настройте клиента, запустите туннель и настройте маршрутизацию:
    1. с использованием пакета pptp сетевого менеджера,
    2. с настройкой PPP-соединения для активации программы PPTP, как
      в соответствии с конфигурацией ,
      вручную
      раздела Debian
      HOWTO, или
    3. загрузив (устаревшую) программу конфигурации pptpconfig ,
      установка и запуск (наш пакет).

2008-05-14

Если существует HOWTO для конкретного дистрибутива, используйте его.

Обратитесь к нашей документации по ссылкам для получения более подробной информации.

Скачать

См. Страницу загрузки нашего проекта. Пакеты следующие:

  • pptp , вспомогательная программа, используемая pppd для создания
    туннель, который также включает pptpsetup ,
  • pptpconfig , графический пользовательский интерфейс для настройки и
    запуск туннеля (не рекомендуется, используйте сетевой менеджер pptp или pptpsetup
    вместо этого)
  • pptpconfig dependencies , PHP и PHP-GTK, необходимые для
    pptpconfig .

Ссылки

.

Как настроить IPsec / L2TP VPN-клиентов в Linux

После настройки собственного VPN-сервера выполните следующие действия, чтобы настроить свои устройства. Если вы не можете подключиться, сначала проверьте, правильно ли введены учетные данные VPN.

Команды

должны запускаться от имени root на вашем VPN-клиенте.

Чтобы настроить VPN-клиент, сначала установите следующие пакеты:

# Для Ubuntu и Debian
apt-get update
apt-get -y установить strongswan xl2tpd

# Для RHEL / CentOS
yum -y установить epel-release
yum —enablerepo = epel -y установить strongswan xl2tpd

yum -y установить strongswan xl2tpd

# Для Ubuntu и Debian

apt-get update

apt-get -y install strongswan xl2tpd

# Для RHEL / CentOS

yum -y install epel-release

yum —enablerepo = epel y установить strongswan xl2tpd

yum -y установить strongswan xl2tpd

Создать переменные VPN (заменить фактическими значениями):

VPN_SERVER_IP = ваш_vpn_server_ip
VPN_IPSEC_PSK = ваш_ipsec_pre_shared_key
VPN_USER = your_vpn_username
VPN_PASSWORD = ваш_vpn_password

VPN_SERVER_IP = your_vpn_server_ip

VPN_IPSEC_PSK = your_ipsec_pre_shared_key

VPN_USER = your_vpn_username

VPN_PASSWORD = your_vpn_password

Настроить strongSwan:

кошка> / etc / ipsec.conf << EOF # ipsec.conf - файл конфигурации strongSwan IPsec # базовая конфигурация настройка конфигурации # strictcrlpolicy = да # uniqueids = нет # Добавьте сюда подключения. # Примеры VPN-подключений conn% по умолчанию ikelifetime = 60 мес. keylife = 20 м rekeymargin = 3 мес. keyingtries = 1 keyexchange = ikev1 authby = секрет ike = aes128-sha1-modp2048! esp = aes128-sha1-modp2048! conn myvpn keyexchange = ikev1 left =% defaultroute auto = добавить authby = секрет тип = транспорт leftprotoport = 17/1701 rightprotoport = 17/1701 right = $ VPN_SERVER_IP EOF кошка> / etc / ipsec.секреты << EOF : PSK "$ VPN_IPSEC_PSK" EOF chmod 600 /etc/ipsec.secrets # ТОЛЬКО для CentOS / RHEL и Fedora mv /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.old 2> / dev / null
mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2> / dev / null
ln -s /etc/ipsec.conf /etc/strongswan/ipsec.conf
ln -s /etc/ipsec.secrets /etc/strongswan/ipsec.secrets

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

14

18

19

20

21

22

23

24

25

26

27

28

29

30

000

34

35

36

37

38

39

40

41

42

43

44

45

cat> / etc / ipsec.conf << EOF

# ipsec.conf — strongSwan файл конфигурации IPsec

# базовая конфигурация

config setup

# strictcrlpolicy = yes

# uniqueids = no

# Добавьте сюда подключения.

# Примеры VPN-соединений

conn% default

ikelifetime = 60m

keylife = 20m

rekeymargin = 3m

keyingtries secret = 1

keyexchange3

000 authexchange3

000 authexchange3

000 =

0002 -sha1-modp2048!

esp = aes128-sha1-modp2048!

conn myvpn

keyexchange = ikev1

left =% defaultroute

auto = add

authby = secret

type = transport

leftprotoport1 17/1701

9000 172 rightprotoport = 17/1701

9000 172 rightprotoport1 $ VPN_SERVER_IP

EOF

cat> / etc / ipsec.секреты << EOF

: PSK «$ VPN_IPSEC_PSK»

EOF

chmod 600 /etc/ipsec.secrets

# ТОЛЬКО для CentOS / RHEL и Fedora

/0002mv /etc. /etc/strongswan/ipsec.conf.old 2> / dev / null

mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2> / dev / null

ln -s / etc /ipsec.conf /etc/strongswan/ipsec.conf

ln -s /etc/ipsec.secrets /etc/strongswan/ipsec.secrets

Настроить xl2tpd:

кот> / и т.д. / xl2tpd / xl2tpd.conf << EOF [lac myvpn] lns = $ VPN_SERVER_IP ppp debug = да pppoptfile = /etc/ppp/options.l2tpd.client бит длины = да EOF cat> /etc/ppp/options.l2tpd.client << EOF ipcp-accept-local ipcp-accept-remote мусорное ведро требовать noccp noauth MTU 1280 mru 1280 noipdefault defaultroute usepeerdns подключение-задержка 5000 имя $ VPN_USER пароль $ VPN_PASSWORD EOF chmod 600 / etc / ppp / options.l2tpd.client

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

14

18

19

20

21

22

23

24

25

26

кот> / etc / xl2tpd / xl2tpd.conf << EOF

[lac myvpn]

lns = $ VPN_SERVER_IP

ppp debug = yes

pppoptfile = /etc/ppp/options.l2tpd.client

length bit = yes

EO0003

EO > /etc/ppp/options.l2tpd.client << EOF

ipcp-accept-local

ipcp-accept-remote

give-eap

require-chap

noccp

noauth

1280

mtu mru 1280

noipdefault

defaultroute

usepeerdns

connect-delay 5000

имя $ VPN_USER

пароль $ VPN_PASSWORD

EOF

chmod 600 / options / etc.l2tpd.client

Настройка VPN-клиента завершена. Для подключения выполните следующие действия.

Примечание: Вы должны повторять все шаги, указанные ниже, каждый раз, когда пытаетесь подключиться к VPN.

Создать контрольный файл xl2tpd:

mkdir -p / var / run / xl2tpd
сенсорный / var / run / xl2tpd / l2tp-control

mkdir -p / var / run / xl2tpd

touch / var / run / xl2tpd / l2tp-control

Услуги перезапуска:

перезапуск службы strongswan
сервис xl2tpd перезапуск

перезапуск службы strongswan

перезапуск службы xl2tpd

Запустите соединение IPsec:

# Ubuntu и Debian
ipsec вверх myvpn

# CentOS / RHEL и Fedora
Strongswan вверх myvpn

# Ubuntu и Debian

ipsec вверх myvpn

# CentOS / RHEL и Fedora

strongswan вверх myvpn

Запустите L2TP-соединение:

echo «c myvpn»> / var / run / xl2tpd / l2tp-control

echo «c myvpn»> / var / run / xl2tpd / l2tp-control

Запустите ifconfig и проверьте вывод.Теперь вы должны увидеть новый интерфейс ppp0 .

Проверьте существующий маршрут по умолчанию:

Найдите эту строку в выводе: по умолчанию через X.X.X.X ... . Запишите этот IP-адрес шлюза для использования в двух приведенных ниже командах.

Исключите IP-адрес вашего VPN-сервера из нового маршрута по умолчанию (замените фактическим значением):

маршрут добавить YOUR_VPN_SERVER_IP gw X.X.X.X

маршрут добавить YOUR_VPN_SERVER_IP gw X.X.X.X

Если ваш VPN-клиент является удаленным сервером, вы также должны исключить общедоступный IP-адрес вашего локального ПК из нового маршрута по умолчанию, чтобы предотвратить отключение сеанса SSH (замените фактическим значением):

маршрут добавить YOUR_LOCAL_PC_PUBLIC_IP gw X.X.X.X

маршрут добавить YOUR_LOCAL_PC_PUBLIC_IP gw X.X.X.X

Добавить новый маршрут по умолчанию для начала маршрутизации трафика через VPN-сервер :

маршрут добавить по умолчанию dev ppp0

маршрут добавить устройство по умолчанию ppp0

Теперь VPN-соединение установлено.Убедитесь, что ваш трафик правильно маршрутизируется:

wget -qO- http://ipv4.icanhazip.com; эхо

wget -qO- http://ipv4.icanhazip.com; эхо

Приведенная выше команда должна вернуть IP-адрес вашего VPN-сервера .

Чтобы остановить маршрутизацию трафика через VPN-сервер:

route del default dev ppp0

route del default dev ppp0

Отключить:

# Ubuntu и Debian
echo «d myvpn»> / var / run / xl2tpd / l2tp-control
ipsec вниз myvpn

# CentOS / RHEL и Fedora
echo «d myvpn»> / var / run / xl2tpd / l2tp-control
Strongswan вниз myvpn

# Ubuntu и Debian

echo «d myvpn»> / var / run / xl2tpd / l2tp-control

ipsec down myvpn

# CentOS / RHEL и Fedora

echo «d myvpn»> run / xl2tpd / l2tp-control

strongswan вниз myvpn

Связанные

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *