VPN сервер на примере Ubuntu

imageПонадобилось мне недавно организовать защищенный доступ извне к своей домашней сети. Выбор пал, естественно, на технологию VPN. Материалов по этому вопросу в сети навалом, но по непонятным мне причинам, я не нашел ни одной статьи, в которой было бы все сразу. И это несмотря на то, что задача стоит довольно примитивная.

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


[ad#intext2]

Итак, для начала необходимо установить сервер VPN командой

[CLI]sudo apt-get install pptpd[/CLI]

После установки пакета, нужно отредактировать настройки сервера. Для этого нужно отредактировать файл pptpd.conf. Для этого выполним команду

[CLI]sudo gedit /etc/pptpd.conf[/CLI]

gedit – это графический текстовый редактор. Да-да, я нередко юзаю этот редактор для изнеженных лохов. Можно разумеется пользоваться другими редакторами, для брутальных линуксоидов, вроде nano или vim и т.д., но мне с некоторых пор надоел этот хардкор. В файле, ближе к концу, ищите строки начинающиеся с localip и remoteip.

В localip нужно прописать IP адрес сервера (он должен быть постоянным, разумеется). В remoteip нужно прописать список IP адресов, которые получат компьютеры, подключающиеся удаленно (этим займется DHCP сервер – у вас же есть такой в сети, правда?).

Например:

localip 192.168.4.1

remoteip 192.168.4.200-210

Данная конфигурация позволит подключить одновременно 11 удаленных компов, и они получат IP адреса от 192.168.4.200 до 192.168.4.210.

Также проверьте, что следующие строки раскомментированы (т.е. НЕ начинаются на значок #):

refuse-pap

refuse-chap

refuse-mschap

require-mschap-v2

require-mppe-128

proxyarp

nodefaultroute

lock

nobsdcomp

noipx ## you don't need IPX

mtu 1490 ## may help your linux client from disconnecting

mru 1490 ## may help your linux client from disconnecting

Далее создадим пользователей соединения. Для этого надо отредактировать специальный файл следующей командой

[CLI]sudo gedit /etc/ppp/chap-secrets[/CLI]

В редакторе файл надо привести примерно к такому виду:

# client server secret IP addresses

mindhunter pptpd mypassword *

В данном примере определен единственный пользователь mindhunter для сервера pptpd, с паролем mypassword и возможностью логиниться с любого IP адреса (* обозначает любой адрес).

Таким же образом можно добавить еще пользователей. Скажем, вот так:

# client server secret IP addresses

mindhunter pptpd mypassword *

friend pptpd friendspass *

Теперь включим шифровку пересылаемых данных командой

[CLI]sudo modprobe ppp-compress-18[/CLI]

Далее выполним следующие команды, для запуска маскарадинга и защиты от подбора пароля

[CLI]sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH

sudo iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 60 –hitcount 8 –rttl –name SSH -j DROP[/CLI]

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

Напоследок выполните команду

[CLI]sudo gedit /etc/sysctl.conf[/CLI]

и раскомментируйте (уберите значок #) строку

net.ipv4.ip_forward=1

Теперь выполните команду

[CLI]sudo /etc/init.d/pptpd restart[/CLI]

для перезагрузки VPN сервера с новыми настройками.

Собственно, с этого момента можно попробовать соединиться. Хотя если у вас стоит маршрутизатор, как это сейчас можно, то ничего не получится. Нужно в нем настроить PortForward на TCP порт 1723. Посмотрите подробное описание процедуры тут.

При настройке соединения на удаленном компьютере, установите использование протокола PPTP, Maximum strength encryption, Microsoft CHAP Version 2 и снимите галку с использования удаленного шлюза:

clip_image001

image

Если есть вопросы – буду рад ответить в комментах.



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