Vpn клиент debian

By admin | July 14, 2018

> кстати говоря файлы *.key не хотели даже открываться, но chmod 777 вроде решил данную проблему

воу воу, палехче ( с ). Давать 777 на private key это конечно круто. Например, по ssh вы никогда не подключитесь, если у ключа стоит хотя бы group read флаг, не говоря уже за other.

78.85.32.29 это адрес dlink в 1м офисе? Зачем вы поднимаете т.н. road warriors конфиг, если вам надо настроить обычный тунель?

Я бы упростил задачу

клиент


dev tun0

remote xxx.xxx.xxx.xxx
port 1194
proto udp

script-security 1

sndbuf 0
rcvbuf 0

txqueuelen 1024

ifconfig 10.0.0.2 10.0.0.1

float
nobind

secret /etc/openvpn/secret.key

user nobody
group nobody

comp-lzo

ping 15
ping-restart 30
ping-timer-rem

persist-tun
persist-key
persist-remote-ip

log /var/log/openvpn.log

verb 3

сервер


dev tun0

local xxx.xxx.xxx.xxx
port 1194
proto udp

script-security 1

sndbuf 0
rcvbuf 0

txqueuelen 1024

ifconfig 10.0.0.1 10.0.0.2

secret /etc/openvpn/static.key

user nobody
group nobody

comp-lzo

ping 15
ping-restart 30
ping-timer-rem

persist-tun
persist-key
persist-local-ip

log /var/log/openvpn.log

verb 3

Ключ генерируем с помощью


# openvpn --genkey --secret secret.key

На венде соответственно поправить пути к ключам и логам.

После этого на шлюзах в офисах добавить маршруты

# ip ro add 192.168.1.0/24 via 10.0.0.2
# ip ro add 172.17.10.0/24 via 10.0.0.1

P.S.
на венде openvpn надо запускать от имени администратора (Run as Administrator). Это важный момент.

Настройка PPTP-клиента в Debian/Ubuntu $ apt-get install pptp-linux Для простоты введем переменные: название нашего соединения ($NameVPN) IP address(host) нашего сервера - ($SERVER), наше имя пользователя (username)($USERNAME), наш пароль (password)($PASSWORD), Приводим наши файлы до следующего вида: $ nano /etc/ppp/options.pptp

lock nodetach noauth refuse-eap refuse-chap refuse-mschap nobsdcomp nodeflate

$ nano /etc/ppp/chap-secrets Внимание: параметр nodetach, выводит в стандартный поток вывода ошибок — stderr, выводится на терминал. Это удобно для отладки соединения. После того, как Вы убедились, что скрипт работает, как задумано, параметр nodetach можно убрать и pppd при запуске будет уходить в фоновый режим, перенаправляя stderr скрипта в файл /etc/ppp/connect-errors.

# Secrets for authentication using CHAP # client server secret IP addresses ($USERNAME) PPTP ($PASSWORD) * Замечания: если вы используете домен, то используете косые черты и имя домена. $DOMAIN\\$USERNAME PPTP $PASSWORD *

Создаем файл $NameVPN в /etc/ppp/peers/: $ nano /etc/ppp/peers/$NameVPN

pty "pptp $SERVER --nolaunchpppd" name $USERNAME remotename PPTP require-mppe-128 defaultroute file /etc/ppp/options.pptp ipparam $TUNNEL

Если нам не нужна поддержка MPPE,то удаляем строчку из require-mppe-128 из файла. Подключения: $ pon $NameVPN Разрыв связи: $ poff $NameVPN Если нужно увидеть отладочную информацию: pon $NameVPN debug nodetach Если нужен автоматический запуск при загрузке системы, добавьте в файл /etc/network/interfaces следующие строки: $ nano /etc/network/interfaces

auto tunnel iface tunnel inet ppp provider $NameVPN up route del default up route add default dev ppp0

PS:Возможно придется поставить апперанд & после ($NameVPN&), иначе загрузка может идти до подключения ppp и на этом остановиться.

В среднем человек говорит 4 800 слов за 24 часа.

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

Введение

Сама по себе настройка pptp сервера на Debian очень проста не представляет никакой сложности. Все настраивается за 10 минут. Проблема здесь в другом. По-умолчанию, windows при подключении по pptp использует удаленный vpn сервер в качестве шлюза по умолчанию. За это отвечает галка в настройках vpn соединения «Использовать основной шлюз в удаленной сети». При такой конфигурации весь трафик компьютера пользователя идет через vpn сервер. Это очень неудобно, да и не нужно. Эту настройку обычно отключают.

Отключить Использовать основной шлюз в удаленной сети

Когда ее отключаешь, pptp клиент ничего не знает о маршрутах в удаленный офис. Чтобы туда попасть, маршруты нужно прописывать вручную, например так:

route add 192.168.0.0 mask 255.255.255.0 192.168.10.1
192.168.0.0 Сеть удаленного офиса. 192.168.10.1 Адрес vpn сервера

Этот маршрут нужно либо в командной строке прописывать, либо bat файл сделать и запускать. И то и другое неудобно, так как пользователю нужно выполнять дополнительные действия. В openvpn этот вопрос решается очень просто. Там можно на уровне сервера задать любые настройки пользователя, в том числе и маршруты. Они будут передаваться после подключения openvpn клиента. В pptp так сделать нельзя, он это не умеет. Вместо него передать маршруты может dhcp сервер, его для этого нужно специальным образом настроить. Этим мы и займемся.

Установка pptp сервера

Подразумеваю, что у вас установлен и настроен сервер. Если это не так, то воспользуйтесь моими материалами по установке и настройке debian сервера.

Сначала установим pptp сервер:

# apt-get install pptpd

Рисуем следующий конфиг /etc/pptpd.conf:

# mcedit /etc/pptpd.conf
option /etc/ppp/pptpd-options

logwtmp

bcrelay eth1:1

localip 192.168.10.1

remoteip 192.168.10.30-50
eth1:1 Виртуальный интерфейс. Нужен для передачи dhcp параметров клиентам pptp. 192.168.10.1 IP адрес pptp сервера в vpn сети 192.168.10.30-50 Диапазон адресов, которые будут назначены pptp пользователям в vpn сети

Редактируем файл с дополнительными параметрами /etc/ppp/options:

# mcedit /etc/ppp/options
ms-dns 77.88.8.1

ms-dns 8.8.4.4

require-mschap-v2

asyncmap 0

auth

crtscts

lock

hide-password

modem

debug

name l2tpd

proxyarp

lcp-echo-interval 10

lcp-echo-failure 100

noipx

nodefaultroute

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

Дальше создаем учетки для подключения в файле /etc/ppp/chap-secrets:

# mcedit /etc/ppp/chap-secrets
user-01 pptpd passw51 192.168.10.41

user-02 pptpd passw88 192.168.10.42

user-03 pptpd passw59 192.168.10.43

user-04 pptpd passw27 192.168.10.44

Первый столбец — имя пользователя, второй — тип сервера, он всегда один и тот же, третий — пароль, четвертый — ip адрес в vpn сети, который будет назначен клиенту. Если его явно не указать, то ему будет назначен первый свободный из диапазона remoteip в pptpd.conf.

На этом настройка непосредственно pptp сервера закончена. Им можно пользоваться, но маршруты пользователям передаваться не будут.

Настраиваем dhcp сервер для раздачи маршрутов

У меня на сервере уже был настроен isc-dhcp-server, поэтому я использовал именно его. Но можно воспользоваться и dnsmasq. Я приведу пример с dhcpd. Если у вас его еще нет, то устанавливайте командой:

# apt-get install isc-dhcp-server

Рисуем следующий конфиг /etc/dhcp/dhcpd.conf:

# mcedit /etc/dhcp/dhcpd.conf
deny unknown-clients;

ddns-update-style none;



option domain-name "office";

option domain-name-servers 77.88.8.8, 8.8.4.4;

default-lease-time 604800;

max-lease-time 864001;



log-facility local7;



local-address 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0 {

        option routers 192.168.0.1;

        authoritative;

        allow unknown-clients;

        option netbios-name-servers 192.168.0.1;

        option domain-name-servers 77.88.8.8, 8.8.4.4;

        option domain-name "debian.office";

        option broadcast-address 192.168.0.255;

        range 192.168.0.150 192.168.0.199;

        }



option ms-classless-static-routes code 249 = array of unsigned integer 8;

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;



subnet 192.168.10.0 netmask 255.255.255.0 {

        option dhcp-server-identifier 192.168.10.1;

        authoritative;

        range 192.168.10.51 192.168.10.99;

        option ms-classless-static-routes 24, 192,168,0, 192, 168, 10, 1;

        option rfc3442-classless-static-routes 24, 192,168,0, 192, 168, 10, 1;

        option routers 192.168.01.1;

        }

Я тут не разбирался, что и зачем настроено именно так. Сервер настраивал не я, он мне достался в наследство. Мне нужно было только грамотно настроить pptpd с раздачей маршрутов. Поэтому я не расписываю все от и до, а просто делюсь рабочим конфигом, который сейчас у меня работает.

Подсеть 192.168.10.0 и 2 строчки с options перед ней это то, что я добавил для раздачи маршрутов pptp клиентам в vpn подсеть.

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

# mcedit /etc/network/interfaces
auto eth1:1

iface eth1:1 inet static

address 192.168.10.1

netmask 255.255.255.0

О настройке 2-х ip адресов на одном интерфейсе можно подробно прочитать в статье — настройка сети в debian. В моем случае eth1 это интерфейс, который смотрит в локальную сеть, доступ к которой мы организуем с помощью vpn.

Перезапускаем сеть для применения настроек:

# service networking restart

По сути все готово. Запускаем pptpd и dhcpd и проверяем.

# service isc-dhcp-server restart

# service pptpd restart

У меня почему-то команда pptpd restart отрабатывает с ошибкой и не перезапускает демон. Приходится запускать вручную:

# service pptpd start

Проверяем работу клиента windows. Список маршрутов до vpn подключения:

Список маршрутов до pptp подключения

После:

Список маршрутов после pptp подключения

Вот пример такой же конфигурации для dnsmasq:

listen-address=192.168.10.1

dhcp-range=vpn,192.168.10.50192.168.10.99,255.255.255.0,1h

dhcp-option=tag:vpn,vendor:MSFT,2,1i

dhcp-option=tag:vpn,249,192.168.0.0/24,192.168.10.1

dhcp-option=tag:vpn,121,192.168.0.0/24,192.168.10.1

Нашел, пока разбирался с вопросом. У себя не проверял, так как решил все на одном dhcp сервере делать, который уже был.

Заключение

Немного сложно реализуется функционал, который доступен в openvpn из коробки без дополнительных настроек. Я поэтому и не очень люблю с pptp возиться, после openvp он мне кажется не таким удобным. Но иногда приходится и его настраивать. К примеру, микротики, к сожалению, так и не научились работать с openvpn по udp, приходится использовать pptp. Да и встроенный в windows клиент тоже добавляет удобство.

Я немного повозился, поразбирался, прежде чем у меня получилось настроить рабочий вариант. Ключевым моментом оказался виртуальный интерфейс eth1:1, который я создал для pptp подсети. Без него у меня не работала передача маршрута.

Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по Debian

Previous Как обойти блокировку активации на айфон 5
Next Какой vpn сервер выбрать