LINUX.ORG.RU
ФорумAdmin

[OpenVPN] Задание шлюза клиенту.


0

1

Господа! Уже который вечер бьюсь над настройкой OpenVPN. Сервер поднимается, клиенты подсоединяются, и в инет ходят, но только после ручного добавления Gateway.

Перепробовал много инструкций, читал маны.

Вот конфиг сервера:

mode server
tls-server
proto tcp-server
dev tap
port 5555 # Порт
daemon
tls-auth /etc/openvpn/vpnet/keys/ta.key 0
ca /etc/openvpn/vpnet/keys/ca.crt
cert /etc/openvpn/vpnet/keys/vpsrv.crt
key /etc/openvpn/vpnet/keys/vpsrv.key
dh /etc/openvpn/vpnet/keys/dh1024.pem
ifconfig 10.10.0.1 255.255.255.0 # Внутренний IP сервера
ifconfig-pool 10.10.0.2 10.10.0.128 # Пул адресов.
#push "redirect-gateway def1" # Перенаправлять default gateway на vpn-сервер. Если не нужно - закомментировать.
push "route-gateway 10.10.0.1"
#duplicate-cn
verb 3
cipher DES-EDE3-CBC # Тип шифрования.
persist-key
log-append /var/log/openvpn.log # Лог-файл.
persist-tun
comp-lzo
И конфиг клиента:
tls-client
proto tcp-client
remote 192.168.100.2
dev tap
port 5555
#cd /etc/openvpn/vpnet
pull
tls-auth ta.key 1
ca ca.crt
cert vpclient.crt
key vpclient.key
cipher DES-EDE3-CBC
#log-append /var/log/openvpn.log
comp-lzo

Почему сервер не отдает клиенту шлюз через опцию «push „route-gateway 10.10.0.1“»?

Сервер - Debian «Squeeze» i686

Клиенты - Debian «Squeeze» i686 и Windows XP Professional SP3.

Ну вот объясните мне, пожалуйста, Lumi или кто другой, почему я не в первый раз вижу на ЛОРе людей настраивающих OpenVPN и пытающихся дать серверу 10.10.0.1, а первому же клиенту 10.10.0.2.
Я вот сейчас сижу через OpenVPN на кафедральном серваке (он клиент, я сервер) и у меня в конфиге сервера

server 10.10.0.0 255.255.255.0
а не ifconfig как у ТС и сервер имеет 10.10.0.1, а клиент имеет 10.10.0.6 и следующий клиент 10.10.0.10?

Разве на каждую точку туннеля не выделяется подсеть /30 т.е. маска 255.255.255.252. И сервер имея 10.10.10.1 не может позволить клиенту иметь 10.10.10.2, так как это адрес противоположной точки point-to-point туннеля у сервера. И сервер получает адреса из 10.10.10.0/30 (10.10.10.1), первый клиент из 10.10.10.4/30 (10.10.10.6), второй 10.10.10.8/30 (10.10.10.10)... итд

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

Во-первых, перебирая кучу примеров, я остановился на этом http://habrahabr.ru/blogs/linux/67209/

У автора все работало.

Во-вторых, интерфейс у меня tap, а, ЕМНИП, подсеть /30 выделяется при использовании point-to-point (интерфейс tun). Поправьте меня, если я ошибаюсь.

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

Ну да, у меня tun'ы. Но для того чтоб заворачивать инет-траффик с клиентов через сервер достаточно tun и там и там и настройки NAT на сервере для tun интерфейса. ЕМНИП tap нужен чтоб маршрутизировать траффик между двумя сетями через тоннель.

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

tun не умеет броадкасты, необходимые для сетевых игр или других приложений для локальной сети.

А /30, кажется, назначается только для совместимости с Windows машинами при использовании туннелей, win-реализация которых немного корявая.

Но для того чтоб заворачивать инет-траффик с клиентов через сервер достаточно tun

tun работает поверх tap. Так что в данном случае tap не может являться лишней сущностью.

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

А /30, кажется, назначается только для совместимости с Windows машинами...

Эм... Что?

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

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

> Эм... Что?

http://openvpn.net/index.php/open-source/faq/77-server/273-qifconfig-poolq-op...

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

А когда нельзя указать пункт? Например, для игры Warcraft III? Для этого и был выбран TAP.

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

В смысле, TAP работает на канальном уровне, а TUN - на сетевом. Соответственно при использовании TUN драйвера виндовского TAP-адаптер его эмулируют его режим.

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

Хм...Варик, Tap-Win32... Вы игровой сервер в локалке провайдера поднимаете что-ли? Маленькое противоречие между необходимостью броадкаста (для оффтопик-клиентов?), упоминанием Tap-Win32 и несовместимыми с оффтопиком адресами которые не /30.

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

> Хм...Варик, Tap-Win32... Вы игровой сервер в локалке провайдера поднимаете что-ли?

Нет, поднимаем обычный VPN (подразумевается не PPTP) поверх Интернета - что-то вроде домашней сетки, клиенты которй в том числе просто играют по локалке. Для этого броадкасты необходимы.

упоминанием Tap-Win32 и несовместимыми с оффтопиком адресами которые не /30.

Адреса /30 необходимы лишь при использовании TUN, при TAP - всё ок. Мы планируем использовать TAP, соотвественно проблем с /30 нет.

Chaser_Andrey ★★★★★ ()

Повторюсь, вопрос не в TUN или TAP, вопрос в том, почему не выдаются настройки клиенту.

Пожалуйста, не разводите оффтоп/флейм/срач.

Благодарю.

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

Ладно, а gw не получают ни debian'ы, ни оффтопик? для оффтопа route-method exe можно указать дополнительно. И ещё может стоит указать целиком route network/IP [netmask] [gateway] [metric] аля route 10.10.0.0 255.255.255.0 10.10.0.1? А то как знать какой маршрут добавлять, для какой сети? route-gateway это просто параметр gw, а route уже фактически указание к действию в ОС для добавления маршрута.

adriano32 ★★★ ()
--server network netmask
    A helper directive designed to simplify the configuration of OpenVPN's server mode. This directive will set up an OpenVPN server which will allocate addresses to clients out of the given network/netmask. The server itself will take the ".1" address of the given network for use as the server-side endpoint of the local TUN/TAP interface.

    For example, --server 10.8.0.0 255.255.255.0 expands as follows:

     mode server
     tls-server
     push "topology [topology]"

     if dev tun AND (topology == net30 OR topology == p2p):
       ifconfig 10.8.0.1 10.8.0.2
       if !nopool:
         ifconfig-pool 10.8.0.4 10.8.0.251
       route 10.8.0.0 255.255.255.0
       if client-to-client:
         push "route 10.8.0.0 255.255.255.0"
       else if topology == net30:
         push "route 10.8.0.1"

     if dev tap OR (dev tun AND topology == subnet):
       ifconfig 10.8.0.1 255.255.255.0
       if !nopool:
         ifconfig-pool 10.8.0.2 10.8.0.254 255.255.255.0
       push "route-gateway 10.8.0.1"

Значит, поскольку у меня tap, то можн указывать опции вроде

ifconfig 10.8.0.1 255.255.255.0
ifconfig-pool 10.8.0.2 10.8.0.254 255.255.255.0
push "route-gateway 10.8.0.1"

Однако, почему то опции не выдаются. «pull» у клиента в конфиге присутствует.

Chaser_Andrey ★★★★★ ()

В логе заметил строку

NOTE: unable to redirect default gateway -- Cannot read current default gateway from system

Проверил. Итак, всё работает, если подключается клиент, у кого уже есть шлюз.

Если подключается (к примеру) локальный клиент, у которого до подключения шлюза не было, то и OpenVPN дать default gateway не хочет.

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

Разве нельзя в случае отсутствия шлюза по-умолчанию назначить его?

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

Ещё в догонку как вариант попробовать поднять dhcp-server и заюзать route-gateway ’dhcp’ но сам такого не пробовал. В dhcpd.conf явно указать option routers 10.10.0.1 в параметрах группы адресов.
Да и вопрос:без броадкаста никак не канает, это типо для того чтоб игроки получили список активных серверов?

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

Спасибо, попробую.

без броадкаста никак не канает, это типо для того чтоб игроки получили список активных серверов?

Да, и это касается не только игр. Навскидку припоминаются тупые чаты без сервера. К тому же, tap может инкапсулировать любые пакеты сетевого уровня, тогда как tun инкапсулирует только IP-пакеты. Т.е., tap будет полноценной сетью. А мало ли чего пригодится...

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

Это понятно, что в tap ethernet-frames гоняются.
Насколько я понял tap когда разбирался сам, суть его в том чтоб пробросить сквозь туннель траффик на OSI lev 2 и мостами на концах туннеля перекинуть в реальные сети.
Ага, я понял о чём вы по поводу существования в таблице маршрутиззации хоть какого-то gw. Можно попробовать в redirect-gateway флаг def1.
А кстати как вам это

from man openvpn
gateway default — taken from --route-gateway or the second parameter to --ifconfig when --dev tun(!) is specified.

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

redirect-gateway def1 не спас, опция bypass-dhcp - тоже, она вроде только виндовая. Увы.

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