LINUX.ORG.RU
ФорумAdmin

Openvpn + static routing

 ,


0

2

Всем добрый день!

Первый офис - 192.168.1.0/24 с openvpn server на базе OpenSuse 11.4 - отдельный сервер с ip 192.168.1.20. Выход в инет - через другой машрутизатор с 192.168.1.1.

Второй офис - 192.168.0.0/24 с openvpn client на базе маршрутизатора - древний роутер asus 500 g - выход в интернет через этот же маршрутизатор.

Openvpn настроен с static.key, поднимается без вопросов - адреса в тоннеле 10.8.0.1 (server) и 10.8.0.2 (client) - пингуют друг друга без проблем, т.е. с iptables нет - все разрешающие правила добавлены, в логах - чисто.

Проблема в следующем - при добавление статических маршрутов между сетями вида route add -net 192.168.1.0/24 gw 10.8.0.2 (со стороны сервера) и route add -net 192.168.0.0/24 gw 10.8.0.1 (со стороны клиента) связь пропадает, и все перестает работать.

Если же добавлять маршрут до конкретных клиентов, к примеру route add -host 192.168.0.34/32 gw 10.8.0.1, то все работает ок. Но добавлять так не удобно, т.к. клиентов много.

Конфиг файлы:

Server:

dev tun ifconfig 10.8.0.1 10.8.0.2 secret static.key keepalive 10 60 tun-mtu 1490 ping-timer-rem persist-tun persist-key user openvpn group openvpn status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn-server.log

Client:

dev tun remote 1.1.1.1 1194 ifconfig 10.8.0.2 10.8.0.1 keepalive 10 60 tun-mtu 1490 persist-tun secret static.key status /opt/var/log/openvpn/openvpn-status.log log-append /opt/var/log/openvpn/openvpn-client.log verb 1


Маршруты надо добавлять командой ″ip route″, при написании сообщения использовать теги LORCODE. А место затыка, где пропадают пакеты, нужно уточнять с помощью tcpdump/wireshark, тогда можно что-то посоветовать, а пока ничего не понятно.

mky ★★★★★ ()

Маршруты, завязанные на VPN-сеть, имеет смысл добавлять средствами OpenVPN:

server.conf:
route 192.168.0.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"

ccd/client:
iroute 192.168.0.0 255.255.255.0

ArcFi ()
Ответ на: комментарий от anonymous

Гугли iroute директиву. Без неё openvpn'у плевать на системные роуты.

iroute - это для мультиклиентов, где у каждого клиента за спиной своя сеть. ТС нужно просто соединить две сети, можно и без этого (iroute, ccd).

Никак не плевать. Просто чтоб поднять маршрут нужен гейт, т.е. только после того как соединение установится, поэтому маршрут должен поднимать сам OpenVPN. Для этого надо правильно прописать route в его конфигах (с гейтом).

Типа:

ifconfig 10.8.0.1 10.8.0.2

route 192.168.0.0 255.255.255.0 10.33.0.2

Ну и route с другой стороны, все в нем наоборот. И все прозрачно, системно, все можно пощупать, в отличие от мультиклиента.

Кстати у ТС в конфиге директива ifconfig, - это не для мильтиклиентской конфигурации.

Проблема в другом. ТС как-то поднимает маршруты руками, если поднимаются, то пока и пусть. Что с одной стороны, машина с ВПН не является основным гейтом для машин в сети, это уже проблема.

lvi ★★★★ ()
Ответ на: комментарий от lvi

Вот, комментарий по делу. В случае конфига с мультиклиентами все более понятно. Тут же более простой конфиг но что то я с ним уже замучался. Есть мысли в какую сторону копать дальше?

smit ()
Ответ на: комментарий от smit

Ну tcpdump'ом можно посмотреть, не только на локальных интерфейсах, но и на самом tun.

lvi ★★★★ ()
Ответ на: комментарий от lvi

На самом деле сейчас проблема продвинулась с места - добавил прямое описание маршрута в файл server.conf

со стороны клиента:

route 192.168.0.0 255.255.255.0 10.8.0.2

и сервера:

route 192.168.1.0 255.255.255.0 10.8.0.1

На gw 192.168.0.1 добавил статику

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.20

После этого при поднятии VPN маршруты в таблицу добавляются, но пакеты ходят только в одном направлении -

192.168.0.0 --> 192.168.1.0 - работает

192.168.1.0 --> 192.168.0.0 - не работает

Вывод traceroute с 192.168.1.1

traceroute 192.168.0.1

traceroute to 192.168.0.1 (192.168.0.1), 30 hops max, 38 byte packets

1 10.8.0.1 (10.8.0.1) 6.074 ms 5.771 ms 5.912 ms

2 * * *

и т.д.

Т.е. до 10.8.0.1 пакеты доходят, а вот дальше - нет.

Нас 10.8.0.1 iptables не настроен, форвардинг пакетов включен.

Треба мысли дальше :)

smit ()
Ответ на: комментарий от smit

Будем считать что цифирки правильные здесь.
Именно с 192.168.1.1 при трэйсе на 192.168.0.1 пакетики уходят с адресом 10.8.0.2, о котором (да вообще о все этой сети) 192.168.0.1 ничего не знает. Убедиться можите запустив tcpdump на 192.168.0.1 к нему пакет должен прилетать с адреса 10.8.0.2 а вот ответ он отправит уже маршрутом по умолчанию.
Если нужно что бы работало с 192.168.1.1 то добавьте еще роутинг для 10.8.0.0 на 192.168.0.1, а если не нужно то забить из сети 192.168.1. (кроме самого роутера) работать должно.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от smit

192.168.0.0 --> 192.168.1.0 - работает

Что значит работает? Машины из сети 0.0 пингут машины в сети 1.0?

lvi ★★★★ ()
Ответ на: комментарий от anc

отдельный сервер с ip 192.168.1.20
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.20

Ну да, какие-то нестыковки

lvi ★★★★ ()
Ответ на: комментарий от anc

Именно с 192.168.1.1 при трэйсе на 192.168.0.1 пакетики уходят с адресом 10.8.0.2

Можно попробовать

ping -I 192.168.1.1 192.168.0.1, если роутер древний, может и не прокатить.

lvi ★★★★ ()
Ответ на: комментарий от lvi

Можно попробовать
ping -I 192.168.1.1 192.168.0.1, если роутер древний, может и не прокатить.

Может. Поэтому и не посоветовал.

anc ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.