[НЕ РЕШАЕМО] pptp сервер не "видит" собственных пиров
Доброго времени суток всем!
Опишу ситуацию: имеется 2 сетки класса C, в одной из них находится pptp сервер и служебные машины, в другой - клиенты, которые к pptp серверу подключаются. На этом сервере стоит 2 интерфейса, один смотрит в клиентскую сеть, другой - в служебную. При подключении к pptp серверу клиент через соединение выходит в служебную сетку, ему становятся видны все машины в ней и клиент становится виден со служебных машин, а вот с самого pptp сервера клиена никак не видно. Не проходит ни ping ни traceroute... однако этом vpn подключение работает нормально, пакеты бегут и доступ не прерывается. С других машин в служебной сетке клиент также виден, пинги проходят, traceroute исправно кажет маршрут и можно устанавливать любые соединения. Настройки самого pptp уже искурил до дыр, файервол тут тоже не причем (форвардинг из одной сетки в другую разрешен) на input сервер открыт. Подозреваю что настройки ядра не те, но даже не представляю с чего начинать... Подскажите пожалуйста в чем может быть затык?
Конфиг pptp
auth local plugin radius.so plugin radattr.so name pptpd refuse-eap refuse-pap ms-dns 192.168.0.1 proxyarp lock nodeflate nobsdcomp novj novjccomp nologfd lcp-echo-failure 60 lcp-echo-interval 3 noipx
Если нужен конфиг ядра или еще чего нибудь - пишите - выложу
Заранее спасибо
- Для комментирования войдите или зарегистрируйтесь
То есть сервер - шлюз между
То есть сервер - шлюз между 2мя LAN'ами.
Мммм... сдаётся мне, что дело не в ppp и не в ядре. Как-то всё очень странно. Каким образом у Вас pptp-клиенты получают доступ в другой LAN? NAT/MASQUERADE? Тогда из LAN2(служеб) нельзя видеть клиентов из LAN1. В этом принцип NAT'а.
А если при коннекте все видят всех сквозь шлюз, то возникает подозрение, что pptp-коннект не играет роли. Просто на межсетевом шлюзе включён ip_forward. И траф бегает __мимо__ pptp. Хотя тогда ещё более непонятно почему сервер не видит клиентскую сеть.
Лучше было бы Вам пояснить структуру сети. Какие адреса сетей, адреса интерфейсов шлюза. Примерчик коннекта с адресами (в том числе с ppp). А там может придётся и роутинг/таблесы глядеть.
Пока что ни фига не ясно. И ещё не помешал бы /etc/pptpd.conf с пулами адресов.
Да, я наверное действительно
Да, я наверное действительно слишком упростил схему :) Опишу всю схему более детально, однако, не подумайте ничего плохого, но из соображений приватности (т.к. это хозяйство не совсем мое :) ) за место реальных ip буду использовать "фэйк", думаю это не сыграет большой роли?
Как я уже описывал, есть 2 сети: одна служебная, содержит pptp сервер, dns сервер, bgp маршрутизатор, все хосты в ней имею адреса 172.16.0.0/20. PPTP сервер действительно является маршрутизатором между клиентской и служебной сетями и имеет 2 интерфейса: один с адресом 172.16.15.15 - смотрит в служебную, второй - 10.10.15.15 - смотрит соответственно в клиентскую; вторая сетка - клиентская, в ней все клиенты имеют адреса типа 10.10.0.0/20. Хоть к делу это особого отношения не имеет, но на всякий пожарный скажу, что клиентская сеть делится на сегменты класса C, каждый сегмент "бегает" по отдельной физике и коммутируется все это хозяйство между собой свичем 3-го уровня Dlink DES 3828, в итоге получаются сети типа 10.10.х.0/24, всего 15 сетей. Интерфейсы свича здесь имеют адреса вида 10.10.х.1 в каждой сети К интерфейсу свича 10.10.15.1 как раз и подключен наш pptp сервер, все клиенты при подключении стучатся на адрес 10.10.15.15 соответственно. Клиент, устанавливающий соединение, получает адрес типа 172.16.xxx.ххх/32 (сервер также становится для них маршрутизатором) и тем самым общается со служебными машинами - они начинают "видеть" клиента за счет использования в опции proxyarp. Клиент действительно выходит в служебную сеть при помощи ip_forward, но мимо pptp трафик идти не может - служебные машины "не знают" подсети 10.10.0.0/20 + форвардинг таких ip запрещен файерволом на pptp сервере. Саму клиентскую сеть (по локальным ip) видно как и положено - только с pptp сервера а с остальных служебных машин не видно. А вот по адресам, получаемым при установке соединения клиента прекрасно видно со всех служебных машин, кроме самого pptp сервера. Парадокс правда? :) В файле pptpd.conf записаны такие строки:
пул адресов записан, но он не обязателен т.к. pptp сервер всеравно получает ip через радиус, а записан он на маловероятный и, тьфу-тьфу, никогда не происходивший, но всетаки возможный случай - падение сервера билинговой системы: его состояние непрерывно мониторится и в случае его недоступности для минимизации перерывов связи pptpd сразу перезапускается без параметра auth и радиус-плугинов, тогда раздача ip происходит по порядку согласно пулам и без аутентификации. А вот по поводу примера коннекта не совсем понял что нужно, может Вы имеете в виду запись в логах?
Провел изыскания: выполнял
Провел изыскания: выполнял пинг подключенной по pptp к серверу удаленной линуксовой машины, параллельно смотрел tcpdump'ом чего происходит на интерфейсе и той и другого, самое удивительное, что ICMP пакеты уходят с сервера, причем уходят куда надо, и приходят на удаленную машину, но удаленная просто не отвечает на запрос! Сперва думал, что заковырка в маршрутах, но пинг с удаленной машины до сервера проходит исправно, да и маршрут до сервера имеется... Вобщем, понятно, что ничего непонятно :)
Получается, что проблема не
Получается, что проблема не решаемая... (
Почему-то нигде не сказано
Почему-то нигде не сказано про mtu\mru и proxyarp действительно нужен?
mtu и mru стандартные для
mtu и mru стандартные для Ethernet - 1500, а proxyarp непременно нужен, т.к. без него клиенты будут видеть друг друга еще через один хоп - следующий маршрутизатор, который будет форвардить обратно на vpn сервер. Но и без него я уже пробовал, не помогает... :(
Если вы маршрутизируете с
Если вы маршрутизируете с iproute - то такой эффект может быть. Если так - покажите, пожалуйста:
ip rule ls
ip route list
ip route list table (для каждой таблицы)
С уважением.
Непременно покажу все, что
Непременно покажу все, что может быть полезным :)
По последней команде непонятно о каких таблицах вы говорите, в справке по этой команде написано, что нужно указать id таблицы, но мне неизвестно где их узнать, а подстановка туда любого числового значения дает нулевой вывод.