Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: pptp-linux, pppd, pptp-туннель и classless static route.  (Прочитано 3426 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн koshev

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Всем доброго времени!
Интересует возможность получения маршрутизации через pptp-туннель в 121 и/или 249 option.
В Windows, начиная с XP, это реализовано через клиент-pptp, в Cisco, еяннп, так же.
Как это дело обстоит в Linux (Debian и деривативы)?
Попробовал натравить на туннельный интерфейс dhclient, и ожидаемо нарвался на.
Unsupported device type 512 for ppp0Может быть кто сталкивался с похожим?
Ситуация следующая:
Нужно подключиться к удалённым сетям по pptp.
Сервером pptp выступает accel-ppp. Клиентом - pptp-linux.
Сети за pptp-сервером: 192.168/24, 192.168.1/27, 213.141.136.40/29.
Клиентам pptp выдаются адреса из 192.168.0.32/27, с доступом только к вышеописанным подсетям, без доступа в сеть Интернет (что впринципе правильно). pptp-сервер он же шлюз, он же DHCP-сервер, он же много_чего_ещё.
В dhcpd.conf за маршрутизацию отвечает следующая секция:
Код: (text) [Выделить]
# <skip>
option ms-route code 249 = string;
# <skip>
shared-network vlan6 {
        subnet 192.168.0.0 netmask 255.255.255.0 {
        # <skip>
        if substring(hardware, 0, 1) = 08 {
              # Маршрутизация на подсети 192.168.1/27 и 213.141.136.40/29
              option ms-route 1d:d5:8d:88:28:c0:a8:00:01:1b:c0:a8:01:00:c0:a8:00:01;
        }
        pool {
              range 192.168.0.65 192.168.0.159;
        }
        # <skip
}
Кроме того развёрнут bcrelay для прохождения broadcast между интерфейсом сети 192.168/24 и ppp+ командой
Цитировать
bcrelay -i vlan6 -o ppp[0-9].* -d
и proxyarp для присутствия удалённых клиентов в сети 192.168/24.
Если подключаться из Windows, то после установлении туннеля, сниффером можно снять следующую информацию:
Код: (text) [Выделить]
root@server:~# tcpdump -vi vlan6 port 67 or port 68
tcpdump: listening on vlan6, link-type EN10MB (Ethernet), capture size 65535 bytes
23:53:47.458440 IP (tos 0x0, ttl 1, id 455, offset 0, flags [none], proto UDP (17), length 328)
    192.168.0.40.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request, length 300, htype 8, hlen 6, xid 0x30d11c6c, secs 1536, Flags [none]
          Client-IP 192.168.0.40
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Inform
            Client-ID Option 61, length 7: hardware-type 8, 00:53:45:00:00:00
            Hostname Option 12, length 15: "pc-fc4cb235e6b4"
            Vendor-Class Option 60, length 8: "MSFT 5.0"
            Parameter-Request Option 55, length 6:
              Domain-Name-Server, Netbios-Name-Server, Vendor-Option, Subnet-Mask
              Classless-Static-Route-Microsoft, Domain-Name
            Vendor-Option Option 43, length 3: 220.1.0
а DHCP сервер отвечает
Код: (text) [Выделить]
Jul  3 00:03:26 server dhcpd: DHCPINFORM from 192.168.0.44 via vlan6
Jul  3 00:03:26 server dhcpd: DHCPACK to 192.168.0.44 (00:53:45:00:00:00) via vlan6
В результате на удалённом клиенте появляютя маршруты
(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)
Из этого понятно, что на сервер успешно отправлен, а на клиенте получен и обработан запрос DHCP/BOOTP c нужными маршрутами.
Так вот вопрос в следующем: при любых изменениях в структуре сети, удалённые Windows-клиенты прозрачно переходят на новые условия, а для удалённых клиентов на *nix, приходится ручками добавлять новые сети, если таковые могут появиться. Очень бы хотелось автоматизировать подобный механизм работы с ppp-туннелями в *nix.
======================================================================================================
                                ДЛЯ PPTP-клиента РЕШИЛ КОСТЫЛЁМ. Решение следующее:
======================================================================================================
(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)

В /etc/ppp/ip-up.d/ создал скрипт со следующим содержимым:
(Нажмите, чтобы показать/скрыть)
В /etc/ppp поместил скрипт для udhcpc и привёл его к следующему виду:
(Нажмите, чтобы показать/скрыть)
Такая конструкция позволила получить роуты через pptp-туннель и успешно внести их в таблицу удалённой машины.
(Нажмите, чтобы показать/скрыть)
То есть, добился того, чтобы запрос DHCP/BOOTP отправлялся и принимался в pptp-туннеле и получил механизм похожий на тот, который используется в windows.

Теперь что не нравиться в этой схеме:
- приходится отдавать адрес из 192.168.0.65 - 192.168.0.159 минимум на 5 минут.
Запрос от udhcpc на сервере выглядит сл. образом:
(Нажмите, чтобы показать/скрыть)
По option 53 запрос приходит с флагом Discover, тогда как в ms - Inform. Вероятнее всего эту причину мне не исправить, что в общем, пока не выглядит критично.
« Последнее редактирование: 22 Марта 2016, 03:07:39 от koshev »
OpenWrt 19.07

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #1 : 02 Июля 2014, 01:52:26 »
Получения или передачи?
Посмотрите в сторону accel-ppp, может, там это реализовано.
« Последнее редактирование: 02 Июля 2014, 01:57:48 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн koshev

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #2 : 03 Июля 2014, 00:25:32 »
Получения конечно. Первый пост дополнил.
OpenWrt 19.07

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #3 : 03 Июля 2014, 01:16:22 »
Тогда ничем не могу помочь. Просто не знаю. Извините.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн koshev

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #4 : 04 Июля 2014, 01:43:21 »
Извиняться не за что, беглый поиск по Интернетам надежды не внушил.
РЕШЕНО КОСТЫЛЁМ. Решение в первом посте треда.
Тему не закрываю, буду искать решение.
OpenWrt 19.07

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #5 : 04 Июля 2014, 01:45:32 »
Стоп-стоп-стоп.
Если я правильно понимаю, bcrelay и proxyarp - едва ли не взаимоисключающие режимы настройки тоннеля.
Я не прав?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн koshev

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #6 : 04 Июля 2014, 02:10:14 »
Я тоже так думал. Моя практика правда не совсем с этим согласна.
При отключенном proxyarp локальные хосты в сети 192.168/24 не видят удалённых и наоборот, если не задействовать bcrelay - не проходят broadcast и соответственно не отдаётся маршрутизация удалённым.
OpenWrt 19.07

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #7 : 04 Июля 2014, 02:19:29 »
При отключенном proxyarp локальные хосты в сети 192.168/24 не видят удалённых
Эээ... чё? С какого перепугу у вас одна подсеть по обе стороны тоннеля?
Работать не будет. Именем Гуся. (c)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн koshev

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #8 : 04 Июля 2014, 02:25:08 »
Эээ... чё? С какого перепугу у вас одна подсеть по обе стороны тоннеля?
Работать не будет. Именем Гуся. (c)
В чём проблема?
Именно одна по обе стороны и работает черт знает сколько времени.
« Последнее редактирование: 04 Июля 2014, 02:33:31 от koshev »
OpenWrt 19.07

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #9 : 04 Июля 2014, 02:27:25 »
Что-то по вашему топику этого не особо заметно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн koshev

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: pptp-linux, pppd, pptp-туннель и classless static route.
« Ответ #10 : 04 Июля 2014, 02:53:09 »
Когда говорил про сеть 192.168/24 имел ввиду сеть 192.168/24 и как видятся в ней удалённые по pptp. Нужно было уточнить.
OpenWrt 19.07

 

Страница сгенерирована за 0.056 секунд. Запросов: 25.