LINUX.ORG.RU
ФорумAdmin

openvpn отправка (push route) клиенту большого количества маршрутов

 


1

2

…тысяч 10, а лучше 50. Маршруты пушатся минут эдак десять. При этом и сервер и клиент толком не нагружены. Проверял с клиентом на linux и windows. По TCP и UDP При этом с antizapret.prostovpn.org аналогичное количество маршрутов приходит гораздо быстрее. Подозреваю что дело в каком-нибудь волшебном параметре в конфиге сервера, похоже что сервер пушит маршруты небольшими пачками с некоторым интервалом

cast ValdikSS

★★★★★
Ответ на: комментарий от vel

хм. а не вызывает ли клиент на каждый маршрут «ip ro add» или «route»? Это безумные тормоза.

Не похоже. Разве-что это поведение контролируется сервером.
Да и всё-равно не похоже. В винде все маршруты кажется добавляются единовременно (в лине не проверял), с сервера они приходят медленно (разве-что клиент не даёт серверу пушить маршруты пока не добавить ранее полученные), да и не на столько медленно они добавляются (в лине во всяком случае)

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

запусти openvpn через strace и посмотри :)

Если верить исходникам, то ovpn сам не умеет добавлять маршруты - только внешними средствами.

на дохленькой машинке 10к маршрутов добавляется 10 секунд

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

Вот только у меня подключени занимат не 10 секунд, а 7 минут. Так-что на тормоза route add это не похоже

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

Вы правы. OpenVPN вызывает ip route add на каждый IP-адрес или диапазон, поэтому он должен вызвать его 50 тысяч раз, что занимает много времени.

MrClon, на антизапрете клиенту прилетают около 50 маршрутов всего. За проксирование отвечает DNS-сервер, который создает соответствие реальному сайту в фейковый внутренний диапазон 10.224.0.0/15. Клиенту отправляется маршрут в эту сеть, и при запросе адреса заблокированного домена вызывается iptables -t nat -I PREROUTING -s свободный_ip_из_10.224.0.0/15 -j DNAT --to ip-адрес-заблокированного-сайта, и DNS выдает свободный_ip_из_10.224.0.0/15.

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

Там еще проблема в том, что в переменную окружения добавляются все маршруты, огромная переменная, несколько килобайт или даже мегабайт. И так на каждый процесс ip route. Она уже не влезала в стандартный отведенный размер стека, и ничего не работало.

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

Блин, костыли… А зачем динамически добавлять правила NATа? Можно-ведь заранее забить все 50к адресов. Или ядро начинает тормозит на таком количестве правил?

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

Это было сделано для того, чтобы динамически добавлять домены, без необходимости перезапуска чего-либо. Этот DNS стоит апстримом у dnsmasq для заблокированных зон.

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

Так ведь у клиента может сидеть в кэше ответ от чужого (например провайдерского) сервера

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

Может. И на оффтопе точно будет.

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