Pull to refresh

Создаём виртуальную локальную сеть

Reading time2 min
Views19K
Эту статью написал не я, а мой друг, который пока не присутствует на хабре. Если хотите, можете отправить инвайт на mail@feduza.ru

Когда-то давно мне попалась на глаза программа Hamachi, с помощью которой можно создать виртуальную локальную сеть, не имея «реальных» IP-адресов. Но в какой-то момент мне захотелось получить подобный сервис собственной реализации.
Тут на помощь мне пришел OpenVPN.

Итак, задача:
Имея VPS под Debian Lenny, создать виртуальную локальную сеть с клиентами под Linux и Windows XP.


Настройка сервера:

Конечно подразумевается, что на нашем VPS IP-адрес белый и разрешено использование tun.

Подключаемся к серверу и устанавливаем openvpn и openssl:
apt-get install openvpn
apt-get install openssl


Копируем содержимое папки easy-rsa в директорию openvpn:
cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/


Заходим в директорию /etc/openvpn/easy-rsa/2.0
Открываем текстовым редактором файл vars и в его конце видим:
export KEY_COUNTRY=«US»
export KEY_PROVINCE=«CA»
export KEY_CITY=«SanFrancisco»
export KEY_ORG=«Fort-Funston»
export KEY_EMAIL=«me@myhost.mydomain»

Редактируем параметры в кавычках так, как нам хочется.

Выполняем следующие команды:
. ./vars
./clean-all
./build-ca


Последняя команда создает сертификат для нашего сервера, используя параметры, которые мы прописали в файле vars, за исключением Common Name, его пишем сами.

Генерим ключик для сервера:
./build-key-server server

В пункте Common Name пишем server.

Теперь для клиента:
./build-key client1

В пункте Common Name пишем client1.

Создаем ключ Диффи — Хеллмана:
./build-dh


Копируем файлы ca.crt ca.key dh1024.pem server.crt server.key в папку openvpn:
cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn


Переходим в /etc/openvpn/ и открываем/создаем файл openvpn.conf следующего содержания:
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 172.16.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
client-to-client


Запускаем сервер:
/etc/init.d/openvpn start


в ifconfig должен появиться сетевой адаптер tun0 c IP 172.16.0.1.

Настройка клиента под Linux:

Для начала опять же ставим openvpn.
Теперь надо передать на клиентскую машину файлы ca.crt client1.crt client1.key
(лежат в директории /etc/openvpn/easy-rsa/2.0/keys/ сервера)
и положить их папку /etc/openvpn/
после чего открыть/создать файл /etc/openvpn/openvpn.conf:
client
dev tun
proto tcp
remote реальный_IP-адрес_нашего_сервера 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3


(в нашем случае имя клиента — client1)

Теперь запускаем openvpn:
/etc/init.d/openvpn start


Настройка клиента под Windows XP:

Качаем и устанавливаем Openvpn GUI.
Кидаем нужные файлы (см.предыдущий пункт) в папку C:\Program Files\OpenVPN\config\,
после чего в трее находим значок openvpn gui, жмём правой кнопкой и выбираем «Connect».

Подключение остальных клиентов:
Заходим на сервере в папку /etc/openvpn/easy-rsa/2.0
Выполняем команды:
source ./vars
./build-key имя_клиента


Кидаем клиенту файлы ca.crt имя_клиента.crt имя_клиента.key
Далее клиент делает все по мануалам выше.

Конец.
Tags:
Hubs:
Total votes 25: ↑13 and ↓12+1
Comments12

Articles