среда, 16 января 2013 г.

OpenVPN (Site To Site)

Пример построения siste-to-site VPN с использованием OpenVPN.

Итак предположим у нас есть два офиса (A и B), в каждом офисе есть по шлюзу (Router_A и  Router_B). 
За каждым из роутеров находится соответствующая локальная сеть (Network_A - 192.168.1.0/24  и  Network_B - 192.168.2.0/24). 
Еще у роутеров есть по внешнему Ip адресу(1.1.1.1 и 2.2.2.2 соответственно).



Необходимо сделать так чтобы пользователи сети А могли получить доступ к сети В и наоборот.
Роутер А у нас будет сервером (будет принимать подключение), роутер В - клиентом (будет подключаться к серверу).
На обоих серверах:

yum install -y wget
wget http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ihv epel-release-6-8.noarch.rpm
rm -f epel-release-6-8.noarch.rpm
yum install -y openvpn
chkconfig openvpn on

Далее на сервере А:

cp -R /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/ /root/PKI
chmod +x /root/PKI/*
cp /root/PKI/openssl-1.0.0.cnf /root/PKI/openssl.cnf
cd /root/PKI/

правим ./vars , задаем следующие параметры:
export KEY_COUNTRY="ваша страна"
export KEY_PROVINCE="ваша область"
export KEY_CITY="город"
export KEY_ORG="организация"
export KEY_EMAIL="ваш e-mail"

source ./vars
./clean-all
./build-ca (при генерации жмем везде Enter)
./build-key-server server (Также жмем Enter на все вопросы)
./build-dh
./build-key router_b (генерим ключи клиентов)(все также жмем Enter)
ln -s /root/PKI/keys /etc/openvpn/keys
mkdir /etc/openvpn/ccd

Конфиг Router_A(/etc/openvpn/server.conf):

port 1194
proto tcp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
#========================
server 10.10.0.0 255.255.255.0
#(виртуальная сеть которую будет использовать сервер для назначения клиенту ip адреса )
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"
# отдаем клиенту(router_b) маршрут до сети за router_A (в нашем случае 192.168.1.0/24)
route 192.168.2.0 255.255.255.0
# маршрут до сети Router_B
client-config-dir ccd
# используем папку ccd для хранения настроек клиентов
#========================
keepalive 10 120
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3

Копируем следущие файлы с router_a:
/root/PKI/keys/ca.crt
/root/PKI/keys/router_b.crt
/root/PKI/keys/router_b.key
на router_b в директорию /etc/openvpn/keys/

Конфиг Router_B(/etc/openvpn/client.conf)

client
dev tun
proto tcp
remote 1.1.1.1 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/router_b.crt
key /etc/openvpn/keys/router_b.key
ns-cert-type server
comp-lzo
verb 3

Далее на Router_A:
в директории /etc/openvpn/ccd
создаем файлик: router_b
и пишем в него следующее:
iroute 192.168.2.0 255.255.255.0

На обоих серверах в файле /etc/sysctl.conf включаем ip_forward:
меняем строку
net.ipv4.ip_forward = 0
на
net.ipv4.ip_forward = 1

После команду:
sysctl -p

Соответственно настраиваем iptables.
И команда:
service openvpn start