... на которые многие наступают, но мало кто описывает ).
Синопсис - openvpn в "клиент-серверной" конфигурации, сервер freebsd (В общем-то, однофигственно) клиент - windows. Работаем через tun-устройства (Нафиг нам ethernet через VPN гонять?). Задачка - прописать клиенту маршрут до сети за сервером.
В случае *nix клиента и *nix сервера проблемы, в общем-то, нет у них с PtP все, нормально, а вот у виндей, как обычно, "все не слава Б-гу". Прежде всего - в них _нет_ tun-устройств. Совсем. Tun-режим _эмулируется_ tap-драйвером (Стороннего, впрочем, производителя) следующим образом:
На каждого клиента выдается подсеть /30, первый-последний адреса, как обычно, сеть+broadcast, предпоследний адрес назначается клиенту, а второй - виртуальный IP-адрес сервера, причем, "виртуальный" настолько, что на ping'и, хе-хе! не отзывается.
Соответственно, человек, по какой-то причине решивший прописать маршруты самостоятельно видит дивную картину - на стороне *nix'ей обычный PtP туннель ("inet 192.168.100.1 192.168.100.2 netmask 0xffffffff" - как-то так )), а на стороне windows - непойми откуда взявшийся адрес с /30-й маской (IPv4-адрес. . . . . . . . . . . . : 192.168.100.6, Маска подсети . . . . . . . . . . : 255.255.255.252 - что-то в этом роде) плюс маршрут с непингующимся шлюзом - сюрпри-ииииз! Причем в man'е все это описывается буквально парой строчек ("For tun-style tunnels, each client will be given a /30 subnet (for interoperabil ity with Windows clients)." - вот, собственно, и все )), как хочешь, так и понимай ). Конечно, не man'ами едиными - в частности, я, помнится, все это нашел в официальном FAQ'е на официальном же сайте, но все же...
В общем, к чему я это: в случае *nix-*nix используйте директиву --ifconfig-pool-linear и не трахайте себе моск, в случае windows-клиентов старайтесь использовать родной push, в случае windows+*nix клиентов пользуйтесь client-config-dir'ом + тем же push'ем (И надейтесь, что route с той стороны все поймет правильно - что, в общем-то, далеко не факт, учитывая число реализаций этой функции ), ну а если уж вам по какой-то причине захотелось прописать маршрут руками - используйте "виртуальный адрес сервера" не беспокоясь о его "непингуемости" и все будет ОК.