Настраиваем свой VPN на VPS, или как обойти все запреты провайдеров (часть 1)

Технология VPN давно и хорошо известна как инструмент создания сетевых тоннелей, объединяющих территориально разнесенные офисы, либо для подключения удаленных сотрудников. Сегодня ее востребованность умножилась благодаря обычным пользователям, которым нужно обойти блокировку популярных интернет-ресурсов Яндекс, mail.ru, ВКонтакте и т.д.
Физически сеть VPN реализуется с помощью специальных протоколов. Виртуальный канал передачи данных между клиентом и сервером осуществляется через соединение типа «точка-точка». Одним из таких протоколов является протокол pptp – Point-to-Point Tunneling Protocol.
Мы рассмотрим настройку на базе серверного пакета PPTPD.

Предполагаем, что у нас уже есть некий сервер — VPS-сервер, dedicated или collocation. Желательно, чтобы этот сервер был в облаке — и соответственно никогда не выключался и обладал внешним ip-адресом (например, cервер в облаке Amazon). У этого сервера есть внешний IP-адрес и подключение к сети Интернет.
Устанавливаем демон PPTPD командой

apt get install pptpd

Теперь нужно настроить его главный конфигурационный файл

vim /etc/pptpd.conf

Ищем строку, где прописан локальный ip-адрес -localip. Локальный ip-адрес мы выделяем из внутренней сети — например, 10.0.0.1. Далее нам нужно выделить пул адресов, которые будут разрешены для соединений с сервером от клиентов (сервер будет раздавать эти адреса автоматически). Задаем ширину пула диапазоном от 10.0.0.100 до 10.0.0.115

remoteip 10.0.0.100-115

Теперь создадим виртуальный сетевой интерфейс с именем eth0:0. Для этого в команде ifconfig указываем имя будущего интерфейса eth0:0 и адрес внутренней сети

ifconfig eth0:0 10.0.0.1. netmask 255.255.255.0

Теперь у нас появился еще один сетевой интерфейс eth0:0.
В файле /etc/ppp/chap-secrets прописываем логин и пароль пользователя, который сможет подключаться к VPN-cерверу, а также IP-адрес, который будет ему выдан:

testvpn pptpd testpassvpn 10.0.0.105

В файле /etc/ppp/pptpd-options задаем настройки DNS для клиентских подключений (указываем адрес DNS-службы Google):

ms-dns 8.8.8.8
ms-dns 8.8.4.4

После перезапускаем наш демон командой

/etc/init.d/pptpd restart

Проверяем, запущен ли сервис и все ли корректно работает:

netstat -tulpn | grep pptpd

Теперь нужно настроить пересылку пакетов между интерфейсами. В файле  /etc/sysctl.conf проверяем что перед строкой

net.ipv4.ip_forward = 1

не стоит знак решетки (#).

Применяем настройки sysctl командой

sysctl -p

Настроим трансляцию трафика через фаервол iptables, для чего создадим некий скрипт с правилами. Для начала посмотрим на таблицу NAT

iptables -t nat -L

Создаем исполняемые скрипт с именем ipt.sh.
Мы должны в самом начале задать команды, которые будут очищать фаервол, чтобы не было дубликации правил

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

Теперь добавляем правила, которые будут обеспечивать собственно трансляцию трафика

iptables -t nat -A -POSTROUTING –o eth0 –j MASQUERADE

Задаем нашему скрипту ipt.sh признак исполняемого файла

Chmod+x ipt.sh

и запускаем его

ipt.sh

проверяем, применились ли правила для фаервола:

iptables -t nat -L

(продолжение читать здесь)

 

P.S. За уверенными знаниями по настройке VPN-серверов, маршрутизации пакетов и множеству других интересных вещей вы всегда можете обратиться к нашим авторским курсам.

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

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