1 (28.08.2012 16:54:50 отредактировано prostrelov)

Настраиваюсь OpenVPN по аналогии со статьёй ©Cancer
вкратце:
- соединения между виртуальными устройствами 3х филиалов вида точка-точка
- используются TUN устройства
- 192.168.0.0\24 - центр.офис.
- 192.168.1.0\24, 192.168.2.0\24, 192.168.3.0\24 - филиалы.

server.conf

+ открыть спойлер

port 1194
proto udp
dev tun0
management localhost 8329

ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key
dh /usr/local/etc/openvpn/keys/dh2048.pem

server 10.10.100.0 255.255.255.0

# указываем внутренний DNS и WINS серверы
push "dhcp-option DNS 192.168.0.1"
push "dhcp-option DNS 192.168.0.10"
push "dhcp-option WINS 192.168.0.1"

push "route 192.168.0.0 255.255.255.0"
# Филиал №1
push "route 192.168.1.0 255.255.255.0"
# Филиал №2
push "route 192.168.2.0 255.255.255.0"
# Филиал №3
push "route 192.168.3.0 255.255.255.0"

client-config-dir ccd
# добавляем маршрут сервер-клиент
route 10.10.100.0 255.255.255.252
# Филиал №1
route 192.168.1.0 255.255.255.0
# Филиал №2
route 192.168.2.0 255.255.255.0
# Филиал №3
route 192.168.3.0 255.255.255.0
client-to-client
tls-server
tls-auth keys/ta.key 0
tls-timeout 120
auth SHA1
cipher BF-CBC
keepalive 10 120
comp-lzo
max-clients 100
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 3

route -n
http://i.imgur.com/64FT2.png
eth интерфейсы я специально выключил т.к. меня интересует исключительно логика виртуального интерфейса TUN.

помогите пожалуйста прояснить что описывают 1е три записи относительно openVPN.
На каких этапах эти пути нужны и какую роль они выполняют.

как я это понял:
1й маршрут: показывает что хост 10.10.100.2 находится в непосредственной видимости и обращение к нему не требует пересылки через маршрутизатор.

2й маршрут: здесь описывается 30я сетка все узлы которой доступны через маршрутизатор 10.10.100.2
а т.к. в 30й сети для узлов используется всего 2 адреса, один из которых уже используется на нашем интерфейсе tun
то я не очень понимаю зачем эта запись нужна если уже есть 1я.

3й маршрут: третий маршрут показывает что подсеть 10.10.100.0 доступна через маршрутизатор 10.10.100.2
Тут не очень понятно. В таблице ранее была обьявлена 30я сеть в которой используются адреса 10.10.100.0,1,2,3
Тут мы обьявляем 24ю сеть в которой также могут существовать адреса 10.10.100.0,1,2,3
Не будет ли конфликтов ? Зачем дважды обьявляются сети ? Если вспомнить что от чего в IP адресе отделяет маска, то получится что эти сети (не смотря на схожую запись в десятичной форме) разные и конфликтовать адреса в них не могут. Но вопрос остаётся - для чего описывается сеть 10.10.100.0\24 если это не сеть для соединения точка-очка ?

2 (28.08.2012 14:41:08 отредактировано Kettler)

10.10.100.0/24 это ваша виртуальная подсесть.

Поидее если убрать

client-to-client

то как раз последнего маршрута и не должно быть.
/32 будет всегда указывает путь vpn сервера.

Раз вы указываете

push "route 192.168.0.0 255.255.255.0"
# Филиал №1
push "route 192.168.1.0 255.255.255.0"
# Филиал №2
push "route 192.168.2.0 255.255.255.0"
# Филиал №3
push "route 192.168.3.0 255.255.255.0"

Тогда нету смысла указывать

client-to-client
Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

3

Вот как раз этот момент я понять и не могу.

server.conf
server 10.10.100.0 255.255.255.0
создаёт 2 записи в таблице маршрутизации:
10.10.100.2 0.0.0.0 UH Tun0
10.10.100.0 255.255.255.0 UG Tun0
то-есть все пакеты адресованные сети 10.10.100.0\24 будут уходить к гейту с адрессом 10.10.100.2
в свою очередь гейт этот обьявлен в первой записи и виден напрямую без шлюзов.

route 10.10.100.0 255.255.255.252
для чего добавляется 30я подсеть ???

в этой статье сказано:

В /usr/local/etc/openvpn/ccd при создании файла с настройками для клиента помните:
ifconfig-push 10.10.200.2 10.10.200.1
этой сторокой организовуем езернет-тун с сеткой 10.10.200.0, 2-мя тачками с айпишнегами 10.10.200.2 и 10.10.200.1 и бродкастом 10.10.200.3
соответственно при создании 2-го, 3-го и т.д. клиента - строка должна принимать вид
ifconfig-push 10.10.200.6 10.10.200.5
ifconfig-push 10.10.200.10 10.10.200.9
и т.д

то-есть организуются 30е сетки на клиентах.

но зачем делать 30е подсети(которые отчасти являются тунелями) если мы и так работаем в виртуальной сети ?
это делалось для того чтобы маршрутизация между серверами работала правельно или для изалированности виртуальных каналов между серверами ? можно ли обойтись без этой записи ?

4

route 10.10.100.0 255.255.255.252
для
ifconfig-push 10.10.200.2 10.10.200.1

server 10.10.100.0 255.255.255.0
для
client-to-client

Чтоб видели друг друга.

Как то так.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

5 (29.08.2012 12:49:50 отредактировано prostrelov)

Вот вырезка из официального мана с сайта openvpn.net

There are some caveats to be aware of when using "tun" style devices on Windows: the --ifconfig endpoints chosen
    must be the two "middle" addresses in a 255.255.255.252 subnet.

но там не обьясняется почему.

А вот дебаты с opennet'a

Для windows клиентов адрес шлюза и самого клиента должны быть в одной подсети /30. Это ограничения самой реализации tun на windows