Понадобилось мне недавно организовать защищенный доступ извне к своей домашней сети. Выбор пал, естественно, на технологию 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 и снимите галку с использования удаленного шлюза:
Если есть вопросы – буду рад ответить в комментах.