WackoWiki: RafaelMalikov/VPNnew ...

Home Page | Изменения | Новые Комменты | Пользователи | Каталог | Регистрация | Вход:  Пароль:  

Построение сетей VPN

Оглавление документа

Создание GRE туннелей без шифрования.

В качестве маршрутизаторов используются Linux.

Создаем на обеих сторонах запускаемый файл /root/settunnel.sh


xxx.xxx.xxx.xxx – IP адрес внешнего интерфейса, данного сервера
yyy.yyy.yyy.yyy – IP адрес внешнего интерфейса, удаленного сервера
nnn.nnn.nnn – любая фэйк-под сеть, не используемая ни в первой ни во второй подсети(я использую 10.0.0)
в данной версии имеется в виду, что с обоих сторон сети имеют адреса 192.168.xxx.0/24, 192.168.yyy.0/24.
IP адреса внутренних интерфейсов соответственно 192.168.xxx.1, 192.168.yyy.1

Общий случай


файл /root/settunnel.sh со стороны машины, имеющей внешний адрес xxx.xxx.xxx.xxx

#!/bin/bash
tnl=tnl0
remote=yyy.yyy.yyy.yyy
local=xxx.xxx.xxx.xxx
ip=nnn.nnn.nnn.1/30
ipr=nnn.nnn.nnn.2
range=nnn.nnn.nnn.0/30
ranged=192.168.yyy.0/24

ip tunnel del $tnl mode gre local $local remote $remote ttl 255
ip tunnel add $tnl mode gre local $local remote $remote ttl 255
ip addr add $ip dev $tnl
ip link set $tnl up
sleep 1
ip route add $ranged via $ipr


файл /root/settunnel.sh со стороны машины, имеющей внешний адрес yyy.yyy.yyy.yyy

#!/bin/bash
tnl=tnl0
remote=xxx.xxx.xxx.xxx
local=yyy.yyy.yyy.yyy
ip=nnn.nnn.nnn.2/30
ipr=nnn.nnn.nnn.1
range=nnn.nnn.nnn.0/30
ranged=192.168.xxx.0/24

ip tunnel del $tnl mode gre local $local remote $remote ttl 255
ip tunnel add $tnl mode gre local $local remote $remote ttl 255
ip addr add $ip dev $tnl
ip link set $tnl up
sleep 1
ip route add $ranged via $ipr

Частный случай

Т.к. в Linux на несколько интерфейсов можно назначать один и тот же IP, данную процедуру можно упростить.


файл /root/settunnel.sh со стороны машины, имеющей внешний адрес xxx.xxx.xxx.xxx

#!/bin/bash

tnl=tnl0
remote=yyy.yyy.yyy.yyy
local=xxx.xxx.xxx.xxx
ip=192.168.xxx.1
range=192.168.yyy.0/24

ip tunnel del $tnl mode gre local $local remote $remote ttl 255
ip tunnel add $tnl mode gre local $local remote $remote ttl 255
ip addr add $ip dev $tnl
ip link set $tnl up
ip route add $range dev $tnl


файл /root/settunnel.sh со стороны машины, имеющей внешний адрес yyy.yyy.yyy.yyy

#!/bin/bash

tnl=tnl0
remote=xxx.xxx.xxx.xxx
local=yyy.yyy.yyy.yyy
ip=192.168.yyy.1
range=192.168.xxx.0/24

ip tunnel del $tnl mode gre local $local remote $remote ttl 255
ip tunnel add $tnl mode gre local $local remote $remote ttl 255
ip addr add $ip dev $tnl
ip link set $tnl up
ip route add $range dev $tnl




Теперь прописываем эти файлы в /etc/rc.d/rc.local для автоматического поднятия туннеля, при старте системы.



Указанные выше способы создание туннелей применимы практически на любой *NIX платформе, единственным критерием для их использования является наличие поддержки ip_gre, ядрами системы.


Далее пойдет речь о некоторых пакетах собранных исключительно под платформу Linux.


Использование пакета etcnet

Общий случай

Со стороны машины, имеющей внешний адрес xxx.xxx.xxx.xxx, в папке /etc/net/ifaces создаем каталог с названием тунеля (tnl0).
В каталоге /etc/net/ifaces/tnl0 создаем три файла
/etc/net/ifaces/tnl0/ipv4address

nnn.nnn.nnn.1/30 scope global

/etc/net/ifaces/tnl0/ipv4route
192.168.yyy.0/24 via nnn.nnn.nnn.2

/etc/net/ifaces/tnl0/options
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=xxx.xxx.xxx.xxx
TUNREMOTE=yyy.yyy.yyy.yyy
ONBOOT=yes


после этого даем команду

ifup tnl0


Со стороны машины, имеющей внешний адрес yyy.yyy.yyy.yyy, в папке /etc/net/ifaces создаем каталог с названием тунеля (tnl0).
В каталоге /etc/net/ifaces/tnl0 создаем три файла
/etc/net/ifaces/tnl0/ipv4address

nnn.nnn.nnn.2/30 scope global

/etc/net/ifaces/tnl0/ipv4route
192.168.xxx.0/24 via nnn.nnn.nnn.1

/etc/net/ifaces/tnl0/options
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=yyy.yyy.yyy.yyy
TUNREMOTE=xxx.xxx.xxx.xxx
ONBOOT=yes


после этого даем команду

ifup tnl0

Частный случай

Т.к. в Linux на несколько интерфейсов можно назначать один и тот же IP, данную процедуру можно упростить.


Со стороны машины, имеющей внешний адрес xxx.xxx.xxx.xxx, в папке /etc/net/ifaces создаем каталог с названием тунеля (tnl0).
В каталоге /etc/net/ifaces/tnl0 создаем три файла
/etc/net/ifaces/tnl0/ipv4address

192.168.xxx.1/24 scope global

/etc/net/ifaces/tnl0/ipv4route
192.168.yyy.0/24 dev tnl0

/etc/net/ifaces/tnl0/options
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=xxx.xxx.xxx.xxx
TUNREMOTE=yyy.yyy.yyy.yyy
ONBOOT=yes


после этого даем команду

ifup tnl0


Со стороны машины, имеющей внешний адрес yyy.yyy.yyy.yyy, в папке /etc/net/ifaces создаем каталог с названием тунеля (tnl0).
В каталоге /etc/net/ifaces/tnl0 создаем три файла
/etc/net/ifaces/tnl0/ipv4address

192.168.yyy.1/30 scope global

/etc/net/ifaces/tnl0/ipv4route
192.168.xxx.0/24 dev tnl0

/etc/net/ifaces/tnl0/options
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=yyy.yyy.yyy.yyy
TUNREMOTE=xxx.xxx.xxx.xxx
ONBOOT=yes


после этого даем команду

ifup tnl0



Использование пакета ncsh


К сожелению, на данный момент пакет ncsh, не потдерживает GRE туннелинг.



В качестве маршрутизаторов используются с одной стороны Linux с другой Cisco.


xxx.xxx.xxx.xxx – IP адрес внешнего интерфейса сервера
yyy.yyy.yyy.yyy – IP адрес внешнего интерфейса Cisco
nnn.nnn.nnn – любая фэйк-под сеть, не используемая ни в первой ни во второй подсети(я использую 10.0.0)
в данной версии имеется в виду, что со стороны Linux адрес внутренней сети 192.168.xxx.0/24, со стороны Cisco адрес внутренней сети 192.168.yyy.0/24. IP адреса внутренних интерфейсов соответственно 192.168.xxx.1, 192.168.yyy.1


Со стороны Cisco создаем туннель:

interface Tunnel1
 ip address nnn.nnn.nnn.2 255.255.255.252
 tunnel source yyy.yyy.yyy.yyy
 tunnel destination xxx.xxx.xxx.xxx


Прописываем маршрут:

ip route 192.168.xxx.0 255.255.255.0 Tunnel1


Со стороны Linux делаем запускаемый файл /root/settunnel.sh

Общий случай

#!/bin/bash
tnl=tnl0
remote=yyy.yyy.yyy.yyy
local=xxx.xxx.xxx.xxx
ip=nnn.nnn.nnn.1/30
ipr=nnn.nnn.nnn.2
range=nnn.nnn.nnn.0/30
ranged=192.168.yyy.0/24

ip tunnel del $tnl mode gre local $local remote $remote ttl 255
ip tunnel add $tnl mode gre local $local remote $remote ttl 255
ip addr add $ip dev $tnl
ip link set $tnl up
sleep 1
ip route add $ranged via $ipr

Частный случай

Т.к. в Linux на несколько интерфейсов можно назначать один и тот же IP, данную процедуру можно упростить.


#!/bin/bash
tnl=tnl0
remote=yyy.yyy.yyy.yyy
local=xxx.xxx.xxx.xxx
ip=192.168.xxx.1/24
ranged=192.168.yyy.0/24

ip tunnel del $tnl mode gre local $local remote $remote ttl 255
ip tunnel add $tnl mode gre local $local remote $remote ttl 255
ip addr add $ip dev $tnl
ip link set $tnl up
sleep 1
ip route add $ranged dev $tnl


Теперь прописываем эти файлы в /etc/rc.d/rc.local для автоматического поднятия туннеля, при старте системы.



В качестве маршрутизаторов используются Cisco.


xxx.xxx.xxx.xxx – IP адрес внешнего интерфейса, данной Cisco
yyy.yyy.yyy.yyy – IP адрес внешнего интерфейса, удаленной Cisco
nnn.nnn.nnn – любая фэйк-под сеть, не используемая ни в первой ни во второй подсети(я использую 10.0.0)
в данной версии имеется в виду, что с обоих сторон сети имеют адреса 192.168.xxx.0/24, 192.168.yyy.0/24.
IP адреса внутренних интерфейсов соответственно 192.168.xxx.1, 192.168.yyy.1


Со стороны данной Cisco создаем туннель:

interface Tunnel1
 ip address nnn.nnn.nnn.1 255.255.255.252
 tunnel source xxx.xxx.xxx.xxx
 tunnel destination yyy.yyy.yyy.yyy


Прописываем маршрут:

ip route 192.168.yyy.0 255.255.255.0 Tunnel1


Со стороны удаленной Cisco создаем туннель:

interface Tunnel1
 ip address nnn.nnn.nnn.2 255.255.255.252
 tunnel source yyy.yyy.yyy.yyy
 tunnel destination xxx.xxx.xxx.xxx


Прописываем маршрут:

ip route 192.168.xxx.0 255.255.255.0 Tunnel1



Создание IPSEC туннелей.

{в разработке}


Создание PPTP туннеля с шифрованием, для подключения win-машин, к часной сети, маршрутизатором которой является LINUX


Предпологается что IP внутреннего интерфейса сервера 192.168.0.1, сеть для выдачи адресов VPN-клентам 192.168.200.1–10

Серверная часть


/etc/pptpd.conf

speed 115200

option /etc/ppp/options.pptpd
localip 192.168.0.1
remoteip 192.168.200.1-10


/etc/ppp/options.pptpd

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns ip_DNS1
ms-dns ip_DNS2
lock
bsdcomp 0
deflate 0
novj
novjccomp
nologfd
lcp-echo-failure 3
lcp-echo-interval 20


формат:

# Secrets for authentication using CHAP
# client	server	secret			IP addresses
user	*	password	192.168.200.N


прим. В системе должен быть подгружен модуль ppp_mppe, в Alt linux это делается дописываем строчки ppp_mppe в файл /etc/modules, для загрузки модуля в ручную делаем modprobe ppp_mppe

Клиентская часть


  1. Панель управления -> Сетевые подключения -> Мастер новых подключений.
  2. На первой странице нажимаем «Далее».
  3. На сделующей выбираем «Подключение к сети на рабочем месте» и нажимаем «Далее».
  4. На сделующей выбираем «Подключение к виртуальной часной сети» и нажимаем «Далее».
  5. В поле «Организация» вписываем VPN и нажимаем «Далее».
  6. На сделующей выбираем «Не набирать номер для предварительного подключения» и нажимаем «Далее».
  7. В поле «Имя компьютера или IP-адрес» вписываем имя или IP VPN-сервера и нажимаем «Далее».
  8. На сделующей выбираем «для всех пользователей» и нажимаем «Далее».
  9. Ставим галочку «Добавить ярлык подключения на рабочий стол» и нажимаем «Готово».
  10. Вводим в поля имя и пароль и нажимаем «Подключение».

test?


Страницы, ссылающиеся на данную: RafaelMalikov


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]
Donate
Время работы: 8.747 s
Использовано памяти: 2.248 Mb