Стоит сервак с OpenBSD + OpenVPN
server.conf
----------->
daemon openvpn
port 1194
proto udp
dev tun0
dev-type tap
mode server
tls-server
client-to-client
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
server-bridge 192.168.2.69 255.255.255.0 192.168.2.70 192.168.2.85
ifconfig-pool-persist /etc/openvpn/easy-rsa/ipp.txt
keepalive 10 120
#tls-auth /etc/openvpn/easy-rsa/ta.key 0
user nobody
group nobody
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
mute 20------------------->
в филиале клиент под OpenBSD
client.conf
-------------------->
client
dev tun dev-type tap
proto udp
remote 111.222.333.444 1194
resolv-retry infinite
persist-key
persist-tun
mute-replay-warnings
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client1.crt
key /etc/openvpn/keys/client1.key
ns-cert-type server
tls-auth /etc/openvpn/keys/ta.key 1
comp-lzo
verb 3
mute 20-------------------------->
Клиент нормально соединяется с vpn-сервером. Нормально пингуется локальная сеть, расположенная на стороне сервера. Но та часть сети, которая расположена на стороне vpn-клиента не пингуется и компы на стороне vpn-клиента не видят компы на стороне vpn-сервера.
Причем если vpn-клиент под win2k3, то там tap-интерфейс объединяется с локальной сетевушкой в мост и все работает. Все друг друга хорошо видят.Пробовал сделать подобное под OpenBSD. Создал
bridgename.bridge0
------------>
add vr0 #локальная сетевушка
add tun0
up------------>
В этом случае соединение с vpn-сервером проходит успешно. Но пингуется с vpn-клиента сеть расположенная на его стороне, а сеть расположенная на стороне vpn-сервера не видна и не виден локальный адрес vpn-сервера.
Сети в обоих подразделения находятся в одном адресном пространстве 192.168.2.0/24.
Насколько я понял проблему, необходимо настроить на vpn-клиенте под OpenBSD пересылку всех пакетов между vr0(локальной сетевушкой и tun0).
Хотя может я ошибаюсь.Не подскажете как решить проблему?
>В этом случае соединение с vpn-сервером проходит успешно. Но пингуется с vpn-клиента
>сеть расположенная на его стороне, а сеть расположенная на стороне vpn-сервера
>не видна и не виден локальный адрес vpn-сервера.tcpdump в руки и смотреть, что куда ходит. + tracert/traceroute.
Может, ping доходит, а ответы не возвращаются, т.к. нет маршрутов в обратну сторону? Может, поможет NAT или статический маршрут? Может, firewall на роутере закрыт?Примеры правильного построения bridge есть на сайте openvpn, по *bsd не скажу, у меня linux. Но работате и в bridge, и с tun, и с tap без особых проблем.
>[оверквотинг удален]
>>не видна и не виден локальный адрес vpn-сервера.
>
>tcpdump в руки и смотреть, что куда ходит. + tracert/traceroute.
>Может, ping доходит, а ответы не возвращаются, т.к. нет маршрутов в обратну
>сторону? Может, поможет NAT или статический маршрут? Может, firewall на роутере
>закрыт?
>
>Примеры правильного построения bridge есть на сайте openvpn, по *bsd не скажу,
>у меня linux. Но работате и в bridge, и с tun,
>и с tap без особых проблем.фаер выключен. Tcpdump показывает пакеты на одном интерфейсе, входящем в мост, на другом его нет.
forward разрешен?
>[оверквотинг удален]
>сеть расположенная на его стороне, а сеть расположенная на стороне vpn-сервера
>не видна и не виден локальный адрес vpn-сервера.
>
>Сети в обоих подразделения находятся в одном адресном пространстве 192.168.2.0/24.
>
>Насколько я понял проблему, необходимо настроить на vpn-клиенте под OpenBSD пересылку всех
>пакетов между vr0(локальной сетевушкой и tun0).да, правильно.
>Хотя может я ошибаюсь.
>
>Не подскажете как решить проблему?http://www.csh.rit.edu/~jon/text/papers/tunneling/
вот так делают тру BSD пиплы в далеком 2003 году из того что есть под рукой.PS что-то мода пошла разнесенные локалки бриджом соединять
с чего это?
Проблему в общем я решил.
vpn-клиент:
vr0 локальная сетевуха
tun0 виртуальный интервейс
bridge0 мост включающий tun0 и vr0Дело в том, что bridge0 поднимается при загрузке, когда интерфейс tun0 не имеет ip-адреса. Когда запускается openvpn он назначает ip-адрес интерфейсу tun0 (он задается при создании ключей для клиента), и tun0 попросту вылетает из bridge0. Необходимо заново его добавлять. После чего все робит.
Возник еще такой вопрос.
А возможна ли такая конфигурация:
Есть четыре филиала A, B, C, D.
Можно ли сделать так что в каждом филиале vpn-server был одновременно и vpn-клиентом
То есть:
A -> B -> C -> D -> AПри таком раскладе при выходе какого либо компа из строя, связь между остальными все равно сохранилась?
Или получится петля?
>[оверквотинг удален]
>Есть четыре филиала A, B, C, D.
>Можно ли сделать так что в каждом филиале vpn-server был одновременно и
>vpn-клиентом
>То есть:
>A -> B -> C -> D -> A
>
>При таком раскладе при выходе какого либо компа из строя, связь между
>остальными все равно сохранилась?
>
>Или получится петля?что-то подобное сделать можно, если опенБСД бриджи умеют stp
Но решение ИМХО не самое прямое так как
1) опенвпн работает в юзерспейсе, и на толстых каналах будет проблема с производительностью (обязательно)
2) зачем лишнее звено, если все делается штатными средствами
>2) зачем лишнее звено, если все делается штатными средствамиПрошу прощения, я еще новичок. Что за штатные средства?
Или возможна ли такая конфигурация:vpn-сервер
- -
- -
- -
vpn-клиент vpn-клиент
- -
- -
- -
vpn-серверserver.conf
----------------->
daemon openvpn
port 1194
proto udp
dev tun1
dev-type tap
mode server
tls-server
client-to-client
ca /etc/openvpn/keysserver/ca.crt
cert /etc/openvpn/keysserver/server.crt
key /etc/openvpn/keysserver/server.key
dh /etc/openvpn/keysserver/dh1024.pem
server-bridge 192.168.2.69 255.255.255.0 192.168.2.70 192.168.2.85
ifconfig-pool-persist /etc/openvpn/easy-rsa/ipp.txt
keepalive 10 120
#tls-auth /etc/openvpn/easy-rsa/ta.key 0
user nobody
group nobody
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3
mute 20---------------------->
client.conf
----------------------->
client
dev tun0
dev-type tap
proto udp
remote 111.222.333.444 1194
resolv-retry infinite
#nobind
user nobody
group nobody
persist-key
persist-tun
mute-replay-warnings
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/sul.crt
key /etc/openvpn/keys/sul.key
ns-cert-type server
#cipher BF-CBC
comp-lzo
verb 3
mute 20
#chroot /var/empty------------------------>
>
>>2) зачем лишнее звено, если все делается штатными средствами
>
>Прошу прощения, я еще новичок. Что за штатные средства?я выше ссылку приводил http://www.csh.rit.edu/~jon/text/papers/tunneling/
там используется gif туннель (можно и GRE), ipsec для шифрования канала, и bridgeвсе вещи работают на уровне ядра. Для опенБСД не скажу, но в линуксе
на 100Мбитах загрузки незаметно, опенвпн же на среднем писюке (2ГГц)
прокачает со стопроцентной загрузкой ЦПУ.Еще один плюс - при необходимости можно подключить точку
с железным роутером умеющим АйПиСек, ну или заменить опенБСД на
железку.Примеров настройки в интернете много, наверное и на русском языке то-же.
Спасибо.
Преимущество OpenVPN в том, что он кроссплатформенный.P.S.
НАГлюк нашел в OpenVPN на OpenBSD.
К примеру, включается машина с впн-клиентом, но связи с впн-серваком нет. Тогда OpenVPN продолжает пытаться подключиться.
НО! Если с первого раза ему не удалось, то он не назначил ip-адреса для tun0. И даже если потом соединение установлено, все равно на назначает.
Мое решение - это, конфиге клиента прописать:---------->
....
up upscript # скрипт который OpenVPN запустит при установлении связи с впн-сервером
.........
---------->upscript
------------>
ifconfig tun0 111.222.333.444 # ip-адрес взят тот который впн-сервер назначит интерфейсу tun0 у клиентаbrconfig bridge0 add tun0 # добавляем tun0 в мост
-------------->тогда все робит, у меня по крайней мере.