URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 87456
[ Назад ]

Исходное сообщение
"клиент-сервер OpenVPN + маршрут между подсетями"

Отправлено Spookie , 28-Ноя-09 23:16 
Конфигурация следующая. Есть сеть 192.168.0.0/24 в ней сервер 192.168.0.4 (OpenSUSE 11) с сервером опенвпн, который раздает адреса из сети 192.168.199.0/24

dev tun
port 5101
proto tcp
ca /etc/openvpn/ca.pem
cert /etc/openvpn/holding-serv.cert
key /etc/openvpn/holding-serv.key
tls-auth /etc/openvpn/ta.key
dh /etc/openvpn/dh1024.pem
tls-server
server 192.168.199.0 255.255.255.0
cipher DES-EDE3-CBC
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 192.168.0.2"
push "dhcp-option WINS 192.168.0.2"
persist-key
persist-tun
fast-io
comp-lzo

Есть удаленная сеть 192.168.64.0/24, в ней гейтвей по умолчанию 192.168.64.1 (Windows XP) на нем клиент openVPN, подключенный к вышеупомянутому серверу, и получивший адрес 192.168.199.10

client
dev    tun
port    5101
proto    tcp
remote    xxx.xxx.xxx.xxx
ca    ca.pem
cert    xxxxxx.crt
key    xxxxxx.key
dh    dh1024.pem
tls-client
tls-auth    ta.key
cipher DES-EDE3-CBC
resolv-retry infinite
persist-key
persist-tun
ping 10
comp-lzo

Проблема следующая, хотелось бы иметь двустороннюю связь между 0й и 64й сетью... естественно я вижу с клиента опенвпна все что за сервером, но с сервера я вижу только 199ю сеть, и не получается пробросить маршрут до 64й.
Вот route -n на сервере:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.199.2   0.0.0.0         255.255.255.255 UH    0      0        0 tun1
192.168.199.0   192.168.199.2   255.255.255.0   UG    0      0        0 tun1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth1

пытаюсь добавить маршрут:


route add -net 192.168.64.0/24 gw 192.168.199.10
SIOCADDRT: No such process

ip route add 192.168.64.0/24 via 192.168.199.10
RTNETLINK answers: No such process

Ошибка настолько общая что я понятия не имею как ее исправить - понимаю, что в таблице маршрутов должно быть что-то вроде
192.168.199.0   0.0.0.0   255.255.255.0   UG    0      0        0 tun1

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


Содержание

Сообщения в этом обсуждении
"клиент-сервер OpenVPN + маршрут между подсетями"
Отправлено dyug , 29-Ноя-09 11:14 
Насколько я в курсе - опенвпн под виндовс не умеет роутить сети.
Во всяком случае - мне так рассказывали люди, с этим сталкивавшиеся.



"клиент-сервер OpenVPN + маршрут между подсетями"
Отправлено Hammer , 29-Ноя-09 11:57 

>[оверквотинг удален]
>
>Ошибка настолько общая что я понятия не имею как ее исправить -
>понимаю, что в таблице маршрутов должно быть что-то вроде
>192.168.199.0   0.0.0.0   255.255.255.0   UG  
> 0      0    
>    0 tun1
>
>а как поступить в моей ситуации не знаю.
>организовать тоннель между двумя статическими адресами не могу, адрес клиента не статический.
>

EXAMPLES
       route add -net 127.0.0.0
              adds the normal loopback entry, using netmask 255.0.0.0 (class A
              net, determined from the  destination  address)  and  associated
              with  the "lo" device (assuming this device was prviously set up
              correctly with ifconfig(8)).


       route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
              adds a route to the network 192.56.76.x via "eth0". The Class  C
              netmask modifier is not really necessary here because 192.* is a
              Class C IP address. The word "dev" can be omitted here.


"клиент-сервер OpenVPN + маршрут между подсетями"
Отправлено Spookie , 29-Ноя-09 18:01 
>[оверквотинг удален]
>            
>  adds the normal loopback entry, using netmask 255.0.0.0 (classA
>  net, determined from the  destination  address) and  associated
>  with  the "lo" device (assuming this device was prviously set up
>  correctly with ifconfig(8)).
>
>       route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
>  adds a route to the network 192.56.76.x via "eth0". The Class  C
>  netmask modifier is not really necessary here because 192.* is a
>  Class C IP address. The word "dev" can be omitted here.

не совсем ясно от какого мануала выдержка, но в моем случае это не помогает. Т.е. маршрут добавляется, но не работает (вероятно он просто неправильный, поскольку гейтвеем должен быть не локальный интерфейс а удаленный клиент 192.168.199.10).



hld-it-suse:/etc/openvpn # route add -net 192.168.64.0/24 dev tun1

hld-it-suse:/etc/openvpn # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.199.2   0.0.0.0         255.255.255.255 UH    0      0        0 tun1
192.168.64.0    0.0.0.0         255.255.255.0   U     0      0        0 tun1
192.168.199.0   192.168.199.2   255.255.255.0   UG    0      0        0 tun1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth1

hld-it-suse:/etc/openvpn # ping 192.168.64.1
PING 192.168.64.1 (192.168.64.1) 56(84) bytes of data.
^C
--- 192.168.64.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2013ms

hld-it-suse:/etc/openvpn # traceroute 192.168.64.1
traceroute to 192.168.64.1 (192.168.64.1), 30 hops max, 40 byte packets
1  * * *
2  * * *
3  * * *
4  * * *
5  * * *
6  * * *
^C
hld-it-suse:/etc/openvpn #

также и не работает конфигурация, в которой мы удаляем маршруты созданные сервером OpenVPN и заменяем их следующими

hld-it-suse:/etc/openvpn # route del -net 192.168.199.0/24 gw 192.168.199.2
hld-it-suse:/etc/openvpn # route del -host 192.168.199.2
hld-it-suse:/etc/openvpn # route add -net 192.168.199.0/24 dev tun1
hld-it-suse:/etc/openvpn # route add -net 192.168.64.0/24 gw 192.168.199.10
hld-it-suse:/etc/openvpn # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.64.0    192.168.199.10  255.255.255.0   UG    0      0        0 tun1
192.168.199.0   0.0.0.0         255.255.255.0   U     0      0        0 tun1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth1
hld-it-suse:/etc/openvpn # traceroute 192.168.64.1
traceroute to 192.168.64.1 (192.168.64.1), 30 hops max, 40 byte packets
1  * * *
2  * * *
3  * * *
4  * * *
5  * * *
6  * * *
^C

что же касается настроек клиента, то тут проблем нет, с клиента видно все сети за сервером, и с сервера виден клиент по адресу из 199й подсети, не удается лишь создать маршрут на сервере.

По прежнему ожидаю вашей помощи


"клиент-сервер OpenVPN + маршрут между подсетями"
Отправлено начинающий , 29-Ноя-09 20:42 
>Конфигурация следующая. Есть сеть 192.168.0.0/24 в ней сервер 192.168.0.4 (OpenSUSE 11) с
>сервером опенвпн, который раздает адреса из сети 192.168.199.0/24
>а как поступить в моей ситуации не знаю.
>организовать тоннель между двумя статическими адресами не могу, адрес клиента не статический.
>

Повнитательнее прочитать man openvpn
Особенное внимание уделить опции topology


"клиент-сервер OpenVPN + маршрут между подсетями"
Отправлено spookie , 30-Ноя-09 11:37 
>>Конфигурация следующая. Есть сеть 192.168.0.0/24 в ней сервер 192.168.0.4 (OpenSUSE 11) с
>>сервером опенвпн, который раздает адреса из сети 192.168.199.0/24
>>а как поступить в моей ситуации не знаю.
>>организовать тоннель между двумя статическими адресами не могу, адрес клиента не статический.
>>
>
>Повнитательнее прочитать man openvpn
>Особенное внимание уделить опции topology

Спасибо. Заработало. Объясняю как: в поисках опции topology я нашел опцию iroute, которая позволяет как раз пробрасывать маршруты до сеток за клиентами. добавил в сервер директиву client-config-dir и в указанной директории создал файлик со строчкой
iroute 192.168.64.0 255.255.255.0
сервер отработал чтото в логах написал что 64ю сеть отмаршрутизировал но в таблице маршрутов про нее ничего не появилось, посему я решил что опенвпн ведет какуюто свою таблицу и проуинул маршрут следующим образом


hld-it-suse:/etc/openvpn # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.199.2   0.0.0.0         255.255.255.255 UH    0      0        0 tun1
192.168.199.0   192.168.199.2   255.255.255.0   UG    0      0        0 tun1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth1

hld-it-suse:/etc/openvpn # route add -net 192.168.64.0/24 gw 192.168.199.2
hld-it-suse:/etc/openvpn # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.199.2   0.0.0.0         255.255.255.255 UH    0      0        0 tun1
192.168.64.0    192.168.199.2   255.255.255.0   UG    0      0        0 tun1
192.168.199.0   192.168.199.2   255.255.255.0   UG    0      0        0 tun1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth1

hld-it-suse:/etc/openvpn # traceroute 192.168.64.1
traceroute to 192.168.64.1 (192.168.64.1), 30 hops max, 40 byte packets
1  192.168.64.1 (192.168.64.1)  37.858 ms   65.919 ms   140.742 ms

И вуаля!
Я правда надеялся сделать такое средствами ОС а не openVPN но это в общем не принципиально. Здесь както можно поставить флажок solved на теме?


"клиент-сервер OpenVPN + маршрут между подсетями"
Отправлено ze6ra , 30-Ноя-09 12:44 
Про iroute в мануале всё расписано. iroute действительно строит внутрению таблицу маршрутизации в openvpn и сервер openvpn знает какому клиенту соответствует какой маршрут. Но чтоб openvpn мог маршрутизировать между клиентами ОС предварительно должна направить этот пакет openvpn. Решить всё можно и средствами ОС, но тогда в качестве маршрутизатора надо назначать удалённый хост(и его нужно перевести в режим маршрутизатора) за которым находится сеть, а так в качестве маршрутизатора назначается сервер openvpn и он уже сам разбирается с клиентами.

"клиент-сервер OpenVPN + маршрут между подсетями"
Отправлено Олег Е. , 03-Окт-12 13:59 
>[оверквотинг удален]
>>>организовать тоннель между двумя статическими адресами не могу, адрес клиента не статический.
>>>
>>
>>Повнитательнее прочитать man openvpn
>>Особенное внимание уделить опции topology
> Спасибо. Заработало. Объясняю как: в поисках опции topology я нашел опцию iroute,
> которая позволяет как раз пробрасывать маршруты до сеток за клиентами. добавил
> в сервер директиву client-config-dir и в указанной директории создал файлик со
> строчкой
> iroute 192.168.64.0 255.255.255.0

Спасибо, тебе человечище!! :)
Ты спас меня от лишнего практологического решения ))