Monday, February 15th, 2010 06:00 pm

Дано: маленькая одноранговая виндовая локальная сеть. Доменный контроллер, WINS, DHCP, всё как обычно. Всё подключено через одни общий неуправляемый коммутатор. IP-адреса из блока 10.0.0.0/24.

Шлюзом в интернет работает юниксовая машина. Она же по совместительству работает VPN-концентратором (PPTP) для внешних клиентов. Адреса выдаёт из той же сети 10.0.0.0/24, чтобы подключившиеся клиенты прозрачно видели локальную сеть.

Никакой фильтрации трафика для локальных IP-адресов ни на самом шлюзе, ни на внутренних серверах нет.

Проблема: клиент успешно подключается по PPTP, получает адрес, но из всей локальной сети видит только сам шлюз. Все остальные попытки соединиться с любыми серверами в локальной сети или даже запустить traceroute натыкаются на таймауты со следующего хопа после шлюза.

В то же время соединения с самогО шлюза на те же внутренние серверы успешно устанавливаются.

Форвардинг на шлюзе, естественно, включён. Анализ с помощью tcpdump на шлюзе показывает, что пакеты из VPN успешно форвардятся в локальную сеть, но ответы на них не приходят. proxyarp включён.

Вопрос: кто виноват, что делать?

Upd: ответ под катом

А дело в том, что добрые администраторы при переносе PPTP-сервера с доменного контроллера на юникс скопировали туда и пул динамических адресов. В результате DHCP-сервер в локалке и PPTP-сервер выдавали адреса из одного диапазона. И когда pptp-клиент получал адрес, уже имеющийся в локалке, оно нифига и не работало, поскольку локальная машина успевала отвечать на ARP-запросы раньше, и все ответы уходили в неё.

Увидеть это со шлюза затруднительно, потому что для него на этот динамический адрес был явный маршрут через ppp*, и искать его через ARP шлюз даже и не пытался. А посмотреть что-либо с других машин в локалке тоже было затруднительно, потому что на них из VPN попасть было нельзя.

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

Page 1 of 4 << [1] [2] [3] [4] >>
Monday, February 15th, 2010 05:06 pm (UTC)
Судя по
Анализ с помощью tcpdump на шлюзе показывает, что пакеты из VPN успешно форвардятся в локальную сеть, но ответы на них не приходят. proxyarp включён.

включён proxyarp не до конца. ;-P

как выглядят арп-таблицы на всех трёх точках?
Monday, February 15th, 2010 05:12 pm (UTC)
до конца он включён.

на клиенте неважно, у него роутинг идёт в p-t-p-интерфейс, там арп не нужен
на остальных не знаю, у меня туда сейчас доступа нет
Monday, February 15th, 2010 05:15 pm (UTC)
А LAN-клиент вообще шлюз про адрес тебя (за VPN) по арпу спрашивает?
Monday, February 15th, 2010 05:17 pm (UTC)
спрашивает. и шлюз ему отвечает
Monday, February 15th, 2010 05:18 pm (UTC)
+1 про proxyarp
конфиг pppd в студию :)
Monday, February 15th, 2010 05:19 pm (UTC)
+1, или отфильтрован случайно в сторону LAN

при правильно включенном proxyarp машинки из LAN должны видеть arp всех машинок из VPN на юниксе
Monday, February 15th, 2010 05:24 pm (UTC)
То есть ты хочешь сказать что получается примерно

p2pclient -> lanclient ICMP echo request
lanclient -> broadcast whohas p2pclient
gw -> lanclient p2pclient is at ...

а пакета

lanclient -> p2pclient ICMP echo reply

нету?

или у тебя какая закавыка закопана?
Monday, February 15th, 2010 05:26 pm (UTC)
да ничего особенного:

/etc/pptpd.conf:
option /etc/ppp/pptpd-options
logwtmp
localip 10.0.0.2
remoteip 10.0.0.128-191

/etc/ppp/pptpd-options:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 10.0.0.1
ms-wins 10.0.0.1
proxyarp
nodefaultroute
debug
lock
nobsdcomp
novj
novjccomp
nologfd
auth
plugin winbind.so
ntlm_auth-helper "/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1 --require-membership-of='...'"
Monday, February 15th, 2010 05:27 pm (UTC)
именно так
Monday, February 15th, 2010 05:28 pm (UTC)
так вот именно что должны. а пакеты от машинок из LAN в шлюз приходят только на его личный IP. а на IP впнных клиентов не приходят
Monday, February 15th, 2010 05:30 pm (UTC)
роутинг походу.
а точнее - не верно указан шлюз по умолчанию на клиентах.
что-то вроде того, что dhcp дает шлюз на доменконтроллер, а надо - на линуксовый гейт.
а выходит то, что пакеты обратно идут по другому маршруту, чем пакеты туда, и зарубаются роутером.
Monday, February 15th, 2010 05:31 pm (UTC)
можешь всё-таки показать кусочек tcpdump -e? потому что явно фигня какая-то.
Monday, February 15th, 2010 05:32 pm (UTC)
Это по-хорошему не должно мешать, потому как VPNclients single-hop reachable, и в default gateway уходить не должны вовсе...
Monday, February 15th, 2010 05:32 pm (UTC)
а маршруты/arp на других машинах в офисе как выглядят?
Monday, February 15th, 2010 05:32 pm (UTC)
не, тогда ты сразу догадаешься :)
Monday, February 15th, 2010 05:32 pm (UTC)
если proxyarp настроен ровно, то только файрвол
я аналогичным образом постоянно нарывался при deny all
Monday, February 15th, 2010 05:33 pm (UTC)
с роутингом всё нормально. на клиенте весь трафик на 10.0.0.0/24 завёрнут в vpn, а локальная сеть одноранговая - там промахнуться некуда. тем более, на запросы с самого шлюза все нормально отвечают
Monday, February 15th, 2010 05:34 pm (UTC)
фиг знает, туда попасть нельзя
Monday, February 15th, 2010 05:34 pm (UTC)
стоп-стоп, а проксиарп
Monday, February 15th, 2010 05:34 pm (UTC)
нету файрвола для локальных адресов, это в условии задачи написано.
Monday, February 15th, 2010 05:35 pm (UTC)
дык вот же:
ms-wins 10.0.0.1
proxyarp
nodefaultroute
Monday, February 15th, 2010 05:36 pm (UTC)
static arp на клиентах?
адреса пересекаются?
Monday, February 15th, 2010 05:36 pm (UTC)
и в логе честно пишут, что
pppd[30479]: found interface eth0 for proxy arp
Monday, February 15th, 2010 05:36 pm (UTC)
фуй, какой ты. ;-P

что, gw не тот мак высовывает? или маска плохая?
Monday, February 15th, 2010 05:37 pm (UTC)
это у меня черновик улетел случайно, не обращай внимания
Page 1 of 4 << [1] [2] [3] [4] >>