Ставим свой VPN

В этой статье я расскажу один из способов поднятия своего VPN на примере OpenVPN, как самого популярного (и удобного) сервера.Ставить будем на FreeBSD.
Для установки понадобится выделенный сервер, т.к. у VPS возникают проблемы с kldload.

1) Качаем дистрибутив и библиотеку:
cd /usr/local/src
fetch http://_openvpn.net/release/openvpn-2.0.tar.gz
fetch http://www._oberhumer.com/opensource…zo-1.08.tar.gz

2) Ставим сначала lzo, т.к. без нее не соберется OpenVPN:
tar zxf lzo-1.08.tar.gz
cd lzo-1.08/
./configure && make && make install

3) Собираем собственно сорцы демона:
tar zxf openvpn-2.0.tar.gz
cd ../openvpn-2.0/
./configure –with-lzo-headers=/usr/local/include/ –with-lzo-lib=/usr/local/lib/ && make && make install

4) Конфиги…
Создаем директорию в которой буду лежать конфиги, стартовые скрипты, .pid
файлы и ключ:
mkdir /usr/local/etc/openvpn/1/

Генерируем статический ключ:
/usr/local/sbin/openvpn –genkey –secret /usr/local/etc/openvpn/1/key

Далее создаем главный конфиг:
cat >/usr/local/etc/openvpn/1/openvpn-tcp.conf
dev tap
proto tcp-server
ifconfig 10.1.1.1 255.255.255.252
secret /usr/local/etc/openvpn/1/key
port 5001 – порт демона
user nobody
group nobody
comp-lzo – включаем сжатие траффа.
ping 15
ping-restart 45
ping-timer-rem
persist-key
verb 3
<CTRL> + <C>

Далее настраиваем ipfw и natd:
cat >/etc/fire.sh
#!/bin/sh
/sbin/kldload if_tap
/sbin/natd -p 8761 -a IP_сервера_из_под_которого_будет_работать_к лиент
/sbin/ipfw add divert 8761 all from any to
IP_сервера_из_под_которого_будет_работать_к лиент
/sbin/ipfw add divert 8761 all from 10.1.1.2 to any
<CTRL> + <C>

Ставим скрипту права на запуск:
chmod 755 /etc/fire.sh

Пишем скрипт запуска OpenVPN
cat >/usr/local/etc/openvpn/1/openvpn-tcp-start.sh
#!/usr/local/bin/bash
while true ; do
echo $$ > /usr/local/etc/openvpn/1/openvpn-tcp-start.pid
pid=`cat /usr/local/etc/openvpn/1/openvpn-tcp.pid`
var=`ps ax | awk ‘{print $1}’ | grep $pid`
if [ ! $var ]
then
echo "Not Running !"
/usr/local/sbin/openvpn –config /usr/local/etc/openvpn/1/openvpn-tcp.conf –writepid /usr/local/etc/openvpn/1/openvpn-tcp.pid &
fi
sleep 10
done
<CTRL> + <C>

chmod 755 /usr/local/etc/openvpn/1/openvpn-tcp-start.sh

Добавляем в rc.conf следующие строчки:
gateway_enable="YES"

sysctl net.inet.ip.forwarding=1
(для того чтоб разрешить быть шлюзом без ребута)

Добавляем в /etc/rc.local пути наших конфигов для запуска при старте:
/etc/fire.sh
/usr/local/etc/openvpn/1/openvpn-tcp-start.sh &
kill -9 `cat /usr/local/etc/openvpn/1/openvpn-tcp-start.pid`

5) Теперь настраиваем клиентсткую Windows-часть:
Качаем клиент – http://_openvpn.net/release/openvpn-2.0-install.exe
Здесь будут храниться стартовые скрипты и ключ:
С:Program FilesOpenVPNconfigdir

Правим конфиг клиентской части(win-openvpn-tcp.conf):
remote 1й_IP_сервера
port 5001
proto tcp-client
dev tap
ifconfig 10.1.1.2 255.255.255.252
ifconfig-nowarn
tun-mtu 1500
secret key
ping-restart 60
ping-timer-rem
persist-key
resolv-retry 86400
ping 10
comp-lzo
verb 4
mute 20
route-gateway 10.1.1.1
redirect-gateway

Далее ключ, который мы сгенерировали (/usr/local/etc/openvpn/1/key – 4 пункт) помещаем в
С:Program FilesOpenVPNconfigdirkey

Ну и запуск:
C:Program FilesOpenVPNbinopenvpn –redirect-gateway(чтоб весь траф проходил через наш VPN) –config "c:\Program FilesOpenVPNconfigdirwin-openvpn-tcp.conf"
Для выхода – F4

Если все прошло без ошибок – значит твоя защита стала абсолютной! Теперь у тебя есть маскирующий IP.

P.S Статья написана по такому принципу, что всю установку можно провести банальным Copy-Paste, т.е. установить VPN смогут даже новички =)

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

Copyright (C) 2005 Transmutagen specially for https://ver.sc

Оставьте комментарий