Corbina vs Arch Помогите настроить VPN

naszar
Если beeline-lan отваливается, то xl2tpd останавливается
man 5 xl2tpd.conf
на предмет redial и redial timeout
Это давно прописано и ни при чём, т.к. xl2tpd не сам падает, а его останавливает systemd из-за неудовлетворённой зависимости.

naszar
Если beeline-lan отваливается, то xl2tpd останавливается
профиль netctl для локалки
А DHCP не работает? Может будет достаточно dhcpcd@enp2s0, или как там ваш интерфейс зовут? Просто надо поиграть с /etc/dhcpcd.conf.
Как-то не приходило в голову сделать через службу dhcpcd. Не вижу смысла перенастраивать. Замена профиля netctl на прямой вызов сервиса dhcpcd решит какие-то проблемы?
вопрос наверно глупый, но немогу найти решения.
в линуксах новичек. в арчевы systemctl начинаю вникать, а в демонах все еще запутанее.
от других дистрибов тоже неполучается ущипнуть идею.

провел интернет vpn l2xp
суть проблемы - как поднять интернет с нуля
добился некоторого прогресса

1-загружаюсь с флешки
2- настраиваю xl2tpd и ppp
3- запускаю соединение dhcpcd (соединение устанавливается , выводятся сообщения о подключеннии. IP и т.п. могу по пинговать провайдера)
4- запускаю xl2tpd -D и смотрю че ему не нравится.

где искать логи от xl2tpd, они при загрузке с флеши вообще бывают? в /var/log по сути тока мелочь всякая о прогах какие запускались. в /var/run есть чтото про xl2tpd, но MC это открыть неможет.

xl2tpd перезапускаю
# killall -9 xl2tpd
% telnet towel.blinkenlights.nl
Подниму тему.
Подскажите, где настраивается запуск скрипта /etc/ppp/ip-up на выполнение при поднятии ppp0? Или он должен автоматически запускаться без всяких настроек? Тогда это баг: у меня при старте xl2tpd.service этот скрипт не отрабатывает.
Настроил пока что через костыль, но хочу разобраться. В моем случае перед стартом xl2tpd нужно добавить 3 маршрута в таблицу маршрутизации, затем запустить xl2tpd, удалить маршрут по умолчанию и добавить новый через интерфейс ppp0. Все это я прописал в ip-up. Но ppp0 не поднимается, хотя systemctl status xl2tpd говорит что все ок. Если же вручную добавить маршруты и перезапустить xl2tpd - то все нормально.
Сейчас запускаю так: добавил все команды в скрипт (в том числе и start xl2tpd), путь до скрипта добавил в sudoers и закинул этот скрипт в автозапуск от пользователя. Работает, но хочется сделать как положено.
Помогите советом
www.linux32.ru - новости и статьи о Linux
32reg, всё немного не так.
1) pppd запускает скрипт /etc/ppp/ip-up не ДО, а ПОСЛЕ поднятия интерфейса. То есть, его можно (а лучше ip-up.d/*) использовать для манипутяций только с теми роутами, что ссылаются на этот самый интерфейс.
2) Описанная замена роутов сама по себе – огромный и ненадёжный костыль, поскольку сетевые соединения имеют свойство обрываться и автоматически подниматься заново, а все роуты на исчезавший при переподключении интерфейс исчезают вместе с ним.

Вместо того, чтобы заменять одни роуты другими, лучше присвоить им разные метрики – тогда без PPP-интерфейса будет действовать менее приоритетный (с бОльшей метрикой) роут в локалку, а при подключениии pppd будет создавать свой, более приоритетный (с меньшей метрикой) роут.
Дело в том что мне нужно добавить три маршрута до поднятия интерфейса: два на билайновские DNS-сервера и один на билайновский VPN-сервер. Без них ppp0 не поднимается.
Я включил сервис dhcpcd, он получает IP, но vpn билайна не пингуется пока не добавлю вручную маршруты. Кстати, если вместо dhcpcd запускать NetworkManager.service - IP также назначается и, к тому же, сразу можно пинговать vpn билайна. Но если оставить включенным сервис нетворк менеджера, запустить xl2tpd и выполнить в консоли строчки:
route del default
route add default dev ppp0
то через несколько секунд комп зависает наглухо, помогает только ребут с кнопки.
Как нетворк менеджер узнает нужные маршруты и добавляет их?

Далее по настройке: я так понял те строчки можно добавить уже в ip-up (вернее в /etc/ppp/ip-up.d/что-нибудь.sh) так как они должны выполняться уже после поднятия интерфейса.
Но что делать с этими тремя маршрутами? Я пытался сделать юнит для системд чтобы они добавлялись при загрузке, но с системд не очень, поэтому не вышло. Может есть другой способ? Или подскажите пожалуйста с юнитом для системд
www.linux32.ru - новости и статьи о Linux
32reg, маршруты на интерфейс локалки надо создавать вместе с поднятием локалки. Соответственно, если за локалку отвечает dhcpcd, именно ему это и надо поручить.

В принципе, для этого есть скрипты /etc/dhcpcd.enter-hook и /etc/dhcpcd.exit-hook , но насколько я понимаю, эти ваши роуты билайн должен раздавать сам по DHCP (иначе как их получают обладатели форточек?). Чтобы получать роуты вместе с адресом, включите в /etc/dhcpcd.conf
option static_routes, classless_static_routes, ms_classless_static_routes
Если у вас от этого пропадёт дефолтный роут в локалку (билайн обычно нарушает стандарты, и не включает его в список classless_static_routes), и этот роут вам нужен, впишите в /etc/dhcpcd.enter-hook команду на его создание:
[ "$if_up" = 'true' -a -n "$new_routers"  ] && ip route add default via "$new_routers" metric "$ifmetric"
Natrio, спасибо большое, попробую, отпишусь
www.linux32.ru - новости и статьи о Linux
Natrio, попробовал добавить опции
option static_routes, classless_static_routes, ms_classless_static_routes
не помогло, tp.internet.beeline.ru все равно не пингуется. Кстати classless_static_routes в опциях уже был. Чем отличается NetworkNanager, что при нем сразу идет пинг?
В итоге запускаю так: написал юнит add-beeline-routes.service
[Unit]
Description=Add beeline routes
After=network.target
After=dhcpcd.service

[Service]
Type=forking
ExecStartPre=/usr/bin/sleep 10
ExecStartPre=/usr/bin/route add -host 89.179.75.225 gw 10.63.24.1
ExecStartPre=/usr/bin/route add -host 89.179.75.238 gw 10.63.24.1
ExecStart=/usr/bin/route add -host 213.234.192.8 gw 10.63.24.1

[Install]
WantedBy=multi-user.target
И еще юнит xl2tpd.service:
.include /usr/lib/systemd/system/xl2tpd.service

[Unit]
After=add-beeline-routes.service
После:
systemctl enable add-beeline-routes
systemctl enable xl2tpd
Так все работает. Без правки судоерс и без запуска от пользователя, уже хорошо. Но, все-таки ощущение недоделанности осталось.
Кстати, почему не отрабатывают строки:
After=network.target
After=dhcpcd.service
чтобы маршруты начинали добавляться только после поднятия сети? Пришлось добавить строку ExecStartPre=/usr/bin/sleep 10
Как по вашему, оставить все так или есть более элегантное решение?
www.linux32.ru - новости и статьи о Linux
32reg
попробовал добавить опции ... не помогло, tp.internet.beeline.ru все равно не пингуется. ... Чем отличается NetworkNanager, что при нем сразу идет пинг?
Это я у вас должен спрашивать, чем отличается, потому что только вы на месте можете это выяснить, вместо того, чтобы просто пинговать домен tp.internet.beeline.ru, даже не зная его IP.

Если посмотреть сюда:
http://bryansk.beeline.ru/customers/help/home/domashniy-internet/nastroyki-lokalnoy-seti-dlya-opytnykh/
http://bryansk.beeline.ru/customers/help/home/domashniy-internet/nastroyki-marshrutizatora-routera/
можно заметить, что ни о каких роутах там не говорится – для подключения требуется только имя сервера и авторизация на нём, а значит остальные параметры должны получаться автоматически.

В общем случае подключение к билайну происходит в два этапа.
1) Настройка интранета ("локальной сети" билайна).
2) Установка PPP (L2TP) соединения (туннеля) с билайновским сервером в интранете и подключение к интернету через него.

Настройка интранета.
DHCP-клиент поднимает Ethernet-интерфейс и запрашивает у билайновского DHCP-сервера свой IP, маску подсети, DNS, гейт (дефолтный роут) и дополнительные роуты. Сервер отвечает клиенту и выдаёт запрошенные параметры, а клиент применяет (или не применяет) эти параметры на своей стороне.

В результате на этом этапе со стороны клиента настраиваются адреса DNS-серверов (сохраняются в /etc/resolv.conf), у которых можно запросить IP-адрес tp.internet.beeline.ru, и устанавливаются роуты в том числе на ту подсеть, в которой находится его IP-адрес.

Руками запросить IP-адрес можно либо командой host домен (или host домен DNS-сервер) из пакета dnsutils, или встроенной командой getent ahosts домен

Если вы успешно получили IP-адрес этого самого tp.internet.beeline.ru, дальше надо искать роуты для этого адреса, если нет – значит см. DNS в файле /etc/resolv.conf и роуты для них.

Существует три разных опции протокола DHCP, через которые клиент запрашивает у сервера роуты:
3) Default Gateway (routers) – адрес(а) гейта, то есть дефолный роут
121) Classless Static Routes (classless-static-routes) – список ВСЕХ дополнительных роутов, включая дефолтный. Несовместима с опцией (3). При одновременном получении обеих опция (3) игнорится.
249) Microsoft Classless Static Routes (ms-classless-static-routes) – список дополнительных роутов, кроме дефолтного. Совместима с опцией (3). Придумана майкрософтом, чтобы обойти неудобный стандарт (121) не нарушая его.

Билайн, выдавая клиенту эти три опции, как правило, нарушает стандарт – выдавая оба списка 121 и 249 без дефолтного роута, хотя по стандарту должен включать его в список 121, и выдаёт дефолтный роут только в опции 3 (routers).
С другой стороны, клиент dhcpcd, имеющийся по-умолчанию в Арч, тоже нарушает стандарт, но в другом – он игнорит опцию 3 (routers) при использовании любого списка роутов – хоть 121, хоть 249.

В результате при подключении к билайну dhcpcd либо не получает дополнительных роутов (без опций classless-static-routes и ms-classless-static-routes), либо не создаёт дефолтный роут (с ними).

Чтобы обойти "баг Билайна-dhcpcd", требуется сделать две вещи:
1) Добавить в конфиг dhcpcd.conf все три опции, чтобы клиент их всех запросил у сервера.
2) Создать файл /etc/dhcpcd.enter-hook с командой на создание дефолтного роута:
[ "$if_up" = 'true' -a -n "$new_routers"  ] && ip route add default via "$new_routers" metric "$ifmetric"

Прослушать обмен между DHCP клиентом и сервером можно, запустив под рутом в отдельной консоли команду
tcpdump -nvi eth0 udp port 67
где eth0 заменить на имя вашего интерфейса "локалки". (если нужно, предварительно установив tcpdump).

Узнать, что делает при подключении dhcpcd, можно, поискав в логах по его имени, или остановив его и запустив в консоли командой вида
dhcpcd -B eth0
чтобы он не ушел в фон и выдал в консоль все подробности.

Кстати, насколько я понимаю, ваш юнит для dhcpcd должен запускаться в виде dhcpcd@eth0.service , а не dhcpcd.service, как у вас.
Почему при нетворк менеджере vpn пингуется, а при dhcpcd нет я не знаю. Могу сказать только что никаких настроек ни в одном, ни в другом не делал, все дефолтное.

IP билайновского VPN узнаю следующим образом:
systemctl disable dhcpcd
systemctl enable NetworkManager
перезагружаюсь, пингую tp.internet.beeline.ru, пинг идет, заодно смотрю его ip-адрес.
потом
systemctl disable NetworkManager
systemctl enable dhcpcd
перезагружаюсь, пингую tp.internet.beeline.ru, пинг не идет.
Теперь уже, зная его адрес, добавляю роуты.

Попробую ваш способ с созданием файла /etc/dhcpcd.enter-hook. В первый раз я неправильно понял и только добавил те опции в /etc/dhcpcd.conf не создавая /etc/dhcpcd.enter-hook. Вопрос один по этому файлу, эту строку:
[ "$if_up" = 'true' -a -n "$new_routers"  ] && ip route add default via "$new_routers" metric "$ifmetric"
нужно вставить без изменений и все? Отпишусь по результатам.

По поводу запуска dhcpcd.service вместо dhcpcd@eth0.service, то в вики написано (если я правильно понял) что в первом случае dhcp запускается для всех доступных интерфейсов, во втором - для конкретно указанного. Я так понимаю что это по сути одно и то же. Но ради эксперимента попробую запускать dhcpcd@eth0.service
www.linux32.ru - новости и статьи о Linux
 
Зарегистрироваться или войдите чтобы оставить сообщение.