нашел решение. все оставил прописанным как и было сказано. поднимаю vpn. оно поднимается на eth1, но не работает, нажимаю кнопку отключить и вновь кнопку включить (при этом eth1 само уже отключено в сетевом центре). включаю eth1 вручную. таблица маршрутизации сохранена, интернет работает и локалка тоже.
Это не выход тоже. Надо искать причину...
Строка в rc.local есть такая: route add default gw шлюз... ? (шлюз как я понимаю 10.22.192.0)...
И вот эту строчку убери:
В /etc/ppp/ip-up.d/ip-up - route add -net 10.0.0.0 netmask 255.0.0.0 gw шлюз dev eth0 2>/dev/null
нашел решение. все оставил прописанным как и было сказано. поднимаю vpn. оно поднимается на eth1, но не работает, нажимаю кнопку отключить и вновь кнопку включить (при этом eth1 само уже отключено в сетевом центре). включаю eth1 вручную. таблица маршрутизации сохранена, интернет работает и локалка тоже.
Это не выход тоже. Надо искать причину...
Строка в rc.local есть такая: route add default gw шлюз... ? (шлюз как я понимаю 10.22.192.0)...
И вот эту строчку убери:
В /etc/ppp/ip-up.d/ip-up - route add -net 10.0.0.0 netmask 255.0.0.0 gw шлюз dev eth0 2>/dev/null
Будет без нее локалка не отваливаться ?
Строку в rc.local route add default gw 10.22.192.1 добавил.
В /etc/ppp/ip-up.d/ip-up - route add -net 10.0.0.0 netmask 255.0.0.0 gw шлюз dev eth0 2>/dev/null убрал
Итог: таблица маршрутизации теряется при ручном включении eth1, которая была отключена модулем ponoff.
Что делал:
поднимаю vpn. оно поднимается на eth1, но не работает, нажимаю кнопку отключить и вновь кнопку включить (при этом eth1 само уже отключено в сетевом центре; заметил, что оно отключается при нажатии на кнопку Отключить модуля ponoff). включаю eth1 вручную. таблица маршрутизации потеряна, интернет работает, локалка только у провайдера, у которого vpn на eth0
нашел решение. все оставил прописанным как и было сказано. поднимаю vpn. оно поднимается на eth1, но не работает, нажимаю кнопку отключить и вновь кнопку включить (при этом eth1 само уже отключено в сетевом центре). включаю eth1 вручную. таблица маршрутизации сохранена, интернет работает и локалка тоже.
Это не выход тоже. Надо искать причину...
Строка в rc.local есть такая: route add default gw шлюз... ? (шлюз как я понимаю 10.22.192.0)...
И вот эту строчку убери:
В /etc/ppp/ip-up.d/ip-up - route add -net 10.0.0.0 netmask 255.0.0.0 gw шлюз dev eth0 2>/dev/null
Будет без нее локалка не отваливаться ?
Строку в rc.local route add default gw 10.22.192.1 добавил.
В /etc/ppp/ip-up.d/ip-up - route add -net 10.0.0.0 netmask 255.0.0.0 gw шлюз dev eth0 2>/dev/null убрал
Итог: таблица маршрутизации теряется при ручном включении eth1, которая была отключена модулем ponoff.
Что делал:
поднимаю vpn. оно поднимается на eth1, но не работает, нажимаю кнопку отключить и вновь кнопку включить (при этом eth1 само уже отключено в сетевом центре; заметил, что оно отключается при нажатии на кнопку Отключить модуля ponoff). включаю eth1 вручную. таблица маршрутизации потеряна, интернет работает, локалка только у провайдера, у которого vpn на eth0
Так - возвращай назад route add -net 10.0.0.0 netmask 255.0.0.0 gw шлюз dev eth0
По идее должно пахать с вот этой строчкой, и еще попробуй задать вместо 10.0.0.0 10.22.192.0 ?
По каждому конкретному случаю не напомогаешься. Если человек ищет адреса своей локальной сети в nic.ru, ему нужно писать все по буквам и раза три подряд
Нужно подумать, а работа не располагает к такому. Попробую...
Итак, что мы знаем: мы знаем, что /etc/rc.local отвечает за загрузку маршрутов сразу после того, как ОС загрузилась,
мы знаем, что при запуске модуля ponoff выполняется скрипт /etc/ppp/ip-up.d/ip-up, равно как и при нажатии на кнопку "Включить" модуля ponoff,
мы знаем, что при выходе из модуля ponoff выполняется скрипт /etc/ppp/ip-down.d/ip-down, равно как и при нажатии на кнопку "Выключить" модуля ponoff.
Исходя из этой информации сделаем так, чтобы при загрузке ОС работала локальная сеть всех провайдеров, для этого пропишем маршруты этих сетей в /etc/rc.local. У меня он принял вид:
после строчки touch /var/lock/subsys/local в конце файла дописано:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.22.192.1 dev eth0
route add -net 93.157.16.0 netmask 255.255.248.0 gw 172.23.36.65 dev eth1
route add -net 172.16.0.0 netmask 255.240.0.0 gw 172.23.36.65 dev eth1
route add -net 213.142.32.0 netmask 255.255.224.0 gw 172.23.36.65 dev eth1
Замечу, что для правила хорошего тона каждый маршрут привязан к конкретному интерфейсу
Далее привожу свой /etc/ppp/ip-up.d/ip-up с комментариями:
#!/bin/sh # скрипту дается право на выполнение
ifdown eth1 # отключаются все сетевые карты, кроме той, на которой будет подниматься vpn
route del default # удаляется маршрут по умолчанию (походу на оставшейся включенной сетевой карте)
route add default dev ppp0 # устанавливается по умолчанию маршрут на устройстве ppp0
ifup eth1 # включаются все сетевые карты, которые ранее были отключены
# далее восстанавливается таблица маршрутизации, прописанная в /etc/rc.local, в связи с тем, что при отключении сетевых карт она пострадала
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.22.192.1 dev eth0
route add -net 93.157.16.0 netmask 255.255.248.0 gw 172.23.36.65 dev eth1
route add -net 172.16.0.0 netmask 255.240.0.0 gw 172.23.36.65 dev eth1
route add -net 213.142.32.0 netmask 255.255.224.0 gw 172.23.36.65 dev eth1
Далее привожу свой /etc/ppp/ip-down.d/ip-down с комментариями:
#!/bin/sh # скрипту дается право на выполнение
route del default dev ppp0 # удаляется маршрут по умолчанию, ранее установленный на ppp0
route add default gw 10.22.192.1 dev eth0 # устанавливается новый маршрут по умолчанию
ifdown eth1 # выключаются все иные сетевые карты, кроме той, на которой только что был установлен новый маршрут по умолчанию
ifup eth1 # включаются все сетевые карты, только что отключенные
# такой перезапуск сетевых карт крайне необходим, без него все глючит по страшной, пока не знаю почему
# далее восстанавливается таблица маршрутизации, прописанная в /etc/rc.local, в связи с тем, что при отключении сетевых карт она пострадала
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.22.192.1 dev eth0
route add -net 93.157.16.0 netmask 255.255.248.0 gw 172.23.36.65 dev eth1
route add -net 172.16.0.0 netmask 255.240.0.0 gw 172.23.36.65 dev eth1
route add -net 213.142.32.0 netmask 255.255.224.0 gw 172.23.36.65 dev eth1
В результате удается:
1) добиться привязки ppp0 к конкретному интерфейсу, в моем случае к eth0,
2) удается работать с локальной сетью разных провайдеров одновременно, независимо от того есть инет или нет,
3) ppp0 поднимается и опускается чуть дольше, но индикация его состояния всегда верная, глюков с сетевым центром более нет, ничего не зависает.
Предложение: как видно из предложенного варианта часто возникает необходимость повторять один и тот же код (добавление маршрутов в таблицу маршрутизации), поэтому этот код необходимо вынести в отдельный скрипт и вызывать его из /etc/rc.local, /etc/ppp/ip-up.d/ip-up,/etc/ppp/ip-down.d/ip-down
Недостаток: в связи с перезапуском сетевых карт, локальная связь может кратковременно нарушаться, но учитывая то обстоятельство, что уж коли ponoff запущен, интернет запущен, то нет никакой крайней необходимости тыкать кнопки Включить/Выключить модуля ponoff, равно как и выходить из него, поэтому этим недостатком можно пренебречь, условившись, что кнопки Включить/Выключить включают и выключают не только интернет, но и локальные сети, и, как следствие, исправив всплывающее сообщение модуля ponoff.
Это, думаю, я описал общий случай для одного и/или нескольких провайдеров.
Не совсем. Непонятно почему прописанный default маршрут от компа к VPN провайдеру route add default gw 10.22.192.1 dev eth0 не влияет на поднятие ppp. То есть по логике соединение должно подниматься именно на сетевушке с этим шлюзом, то есть на eth0.
То есть по идее эта строчка в конце rc.local должна указать "куда идти" pppd и тогда ifdown eth1 в ip-up не нужна.
Не совсем. Непонятно почему прописанный default маршрут от компа к VPN провайдеру route add default gw 10.22.192.1 dev eth0 не влияет на поднятие ppp. То есть по логике соединение должно подниматься именно на сетевушке с этим шлюзом, то есть на eth0.
То есть по идее эта строчка в конце rc.local должна указать "куда идти" pppd и тогда ifdown eth1 в ip-up не нужна.
route add default gw 10.22.192.1 dev eth0 действительно в файле /etc/ppp/ip-down.d/ip-down и в файле /etc/rc.local указывает "куда идти" pppd, но как только мы нажмем кнопку Включить (или просто запускаем ponoff), он тут же удаляется строкой route del default в файле /etc/ppp/ip-up.d/ip-up. привязки к конкретной сетевой карте не получается.
но если отключить все сетевые карты, кроме той, на которой должен быть поднят vpn, то он привязывается правильно, с этим прийдется смириться, по другому не получится никак я перепробовал всё, что только можно. потом сетевые карты просто включаются и восстанавливается информация по ним, в частности таблица маршрутизации.
такой перезапуск сетевых карт (имеется ввиду выключить сетевую карту и тут же ее включить) крайне необходим, без него все глючит по страшной, пока не знаю почему, разберусь.
в принципе мой алгоритм отлажен и работает стабильно, мне все понятно, как оно происходит, всё работает отлично. я в линуксовых командах может и не силен, но в паскале разбираюсь неплохо.
А каким способом поднимается ppp0? Через команду system? Что там вызывается?
без понятия, это надо у разработчика ponoff спросить
Все стандартными способами через pppd call. Я только "графику" написал к стандартным Shell командам.
route add default gw 10.22.192.1 dev eth0 в rc.local
Вот эта строчка еще ДО того как отработает route del default должна указать на каком интерфейсе pppd должен подняться. То есть ip-up выполнятется в самом конце. Поэтому то мне и странно что поднимается не на той сетевой карте.
А каким способом поднимается ppp0? Через команду system? Что там вызывается?
без понятия, это надо у разработчика ponoff спросить
Все стандартными способами через pppd call. Я только "графику" написал к стандартным Shell командам.
route add default gw 10.22.192.1 dev eth0 в rc.local
Вот эта строчка еще ДО того как отработает route del default должна указать на каком интерфейсе pppd должен подняться. То есть ip-up выполнятется в самом конце. Поэтому то мне и странно что поднимается не на той сетевой карте.
строчка нужная, потому что при включении компьютера и без выхода в интернет она определяет какая сетевушка главная. допустим определилась главная сетевушка. запускаем ponoff для того, чтобы выйти в интернет, она больше не главная, так как route del defaul отменил это ее свойство. в этот момент все сетевушки равны для ponoff, на какой из них поднять vpn он не знает, вот и поднимает наугад (надо найти способ отмечать сетевушки по приоритету, но я не знаю как, тогда все упростится и отключение иных сетевушек не потребуется). мне все понятно, как светлый день. допустим, как в моем случае, отключаются все иные сетевые карты, ну и бог с ними, ведь у большинства только один провайдер, одна сетевушка, остальные не нужны, да и включатся они опять, если и есть. для одного провайдера мой алгоритм будет работать нормально, потестите.
Новое дополнение (включу в новую версию) - чтобы гарантировано работал инет при наличии собственных DNS в сетке надо NIS инета в /etc/resolv.conf ставить на первое место. Для этого нужно изменить строки в /etc/ppp/ip-up после else условия
У меня сей чудный пакет не захотел работать "из коробки". Во-первых iproute ставит ip в /sbin, а не /bin... Во-вторых треклятое шифрование, будь оно неладно. Да и непонятное зависание при запуске pppd
У меня сей чудный пакет не захотел работать "из коробки". Во-первых iproute ставит ip в /sbin, а не /bin... Во-вторых треклятое шифрование, будь оно неладно. Да и непонятное зависание при запуске pppd
Забыл сделать ln -s /sbin/ip /bin/ip - добавлю в новую версию
Шифрование - добавьте сами строчки в /etc/ppp/peer/ваше соединение:
оказывается, что ppp0 - всегда дефолтный маршрут, а это иногда проблема, с которой я столкнулся на 2 провайдера и 2 интернета одновременно. в силу чего необходимо наиболее полно интегрировать управление интерфейсом ppp0 в NetAplet, а также предусмотреть, что он не всегда может быть дефолтным.
в домашней папке постоянно появляются файлы route и status.ppp, если допустить, что они нужны, то они должны быть скрытыми, надоедает их удалять, они засоряют мою любимую папочку.
в домашней папке постоянно появляются файлы route и status.ppp, если допустить, что они нужны, то они должны быть скрытыми, надоедает их удалять, они засоряют мою любимую папочку.
Они нужны - через них маршруты и статус "передаются". Сделаю скрытыми и удаляемыми при выходе.
необходимо наиболее полно интегрировать управление интерфейсом ppp0 в NetAplet
Это нужно работать напрямую с французами, но они не очень заинтересованы в этом, так как интеграция в стандартные средства требует знаний Perl и самого NetCenter Mandriva и чтобы изменения шли через официальные источники, иначе первое же обновление все уничтожит. То есть пока никак.
То же самое по дефолтному маршруту - нужен человек, который нормально разбирается в сетях. Моих знаний недостаточно, а лезть глубже тоже неохота.
недавно перешел на линукс. до сих пор работал только в windows. довольно непривычно настраивать систему и различные программы через конфиги, хотя уже немного привык. так что респект за такое начинание.
имеющиеся в комплекте мандривы 2009.1 графические программы настройки VPN соединений не позволяют настроить все таким образом как мне нужно. Хотя если нужно только одно подключение все очень легко делается путем установки DSL соединения (там есть возможность создания pptp-туннеля). остается только в /etc/ppp/peers/ppp0 подправить адрес и вручную или через скрипт прописать пару маршрутов. Но у меня провайдер Уфанет (на нем почти половина Уфы сидит и часть Башкирии) и подключение к инету идет по двум типам vpn-подключений. одно подключение с платным траффиком, другое подключение - безлимитное. на висте я поочередно включал оба подключения (через одну сетевую карту) и скриптом правил таблицу машрутизации (локальный трафик пускал по платному, внешний трафик по безлимиту). В линуксе с этим у меня проблема. Стандартные функции не предусматривают возможности одновременной работы двух pptp-подключений. Хотя напрямую через pptp-command setup можно это сделать. В связи с чем хочу попросить включить в вашу программу возможность параллельного создания как минимум двух подключений по pptp и разделения маршрутов между ними. Маршруты было бы желательно прописывать вручную, потому что адреса локальных ресурсов могут меняться.
если нужны параметры подключений, могу скинуть
Тут нужна информация как автор делает работу двух соединений одновременно и перераспределением маршрутов.
сегодня наблюдал падение интернета со стороны провайдера, я ранее писал какие изменения скриптов произвел для работы с двумя провайдерами, этими изменениями и пользуюсь, также показывал тест с простой аварией путем выдирания сетевого кабеля. сейчас реконнект после аварии выглядит следующим образом:
ponoff был запущен, ppp0 было поднято на eth0, далее произошла какая-то авария у провайдера, сетевой кабель оставался в разъеме на своем месте. произошло автоматически простое переключение на второго провайдера, что мне и было необходимо (работал торрент, он как качал, так и продолжил качать). сеть оказалась поднятой на eth1, и, несмотря на запущенный ponoff в режиме Подключить, интернет работал замечательно. единственное, что было неправильно - модуль ponoff выдавал двойную индикацию - соединение VPN PPTP установлено и одновременно соединение не установлено. таким образом, мне удалось путем изменения скриптов привязать vpn к конкретному интерфейсу и в случае прекращения подачи провайдером интернента по нему, автоматически переключиться на другой интерфейс, на другого провайдера.
сегодня наблюдал падение интернета со стороны провайдера, я ранее писал какие изменения скриптов произвел для работы с двумя провайдерами, этими изменениями и пользуюсь, также показывал тест с простой аварией путем выдирания сетевого кабеля. сейчас реконнект после аварии выглядит следующим образом:
ponoff был запущен, ppp0 было поднято на eth0, далее произошла какая-то авария у провайдера, сетевой кабель оставался в разъеме на своем месте. произошло автоматически простое переключение на второго провайдера, что мне и было необходимо (работал торрент, он как качал, так и продолжил качать). сеть оказалась поднятой на eth1, и, несмотря на запущенный ponoff в режиме Подключить, интернет работал замечательно. единственное, что было неправильно - модуль ponoff выдавал двойную индикацию - соединение VPN PPTP установлено и одновременно соединение не установлено. таким образом, мне удалось путем изменения скриптов привязать vpn к конкретному интерфейсу и в случае прекращения подачи провайдером интернента по нему, автоматически переключиться на другой интерфейс, на другого провайдера.
В настройках стоит автоподнятие соединения. Так что работать будет и при исчезновении коннекта. Индикация привязана к интерфейсу ppp - если он есть, то соединение будет показываться как существующее. Если его нету, то надо будет сделать автоотключение через n-минут. Пока не могу добиться в этом стабильности.
сегодня наблюдал падение интернета со стороны провайдера, я ранее писал какие изменения скриптов произвел для работы с двумя провайдерами, этими изменениями и пользуюсь, также показывал тест с простой аварией путем выдирания сетевого кабеля. сейчас реконнект после аварии выглядит следующим образом:
ponoff был запущен, ppp0 было поднято на eth0, далее произошла какая-то авария у провайдера, сетевой кабель оставался в разъеме на своем месте. произошло автоматически простое переключение на второго провайдера, что мне и было необходимо (работал торрент, он как качал, так и продолжил качать). сеть оказалась поднятой на eth1, и, несмотря на запущенный ponoff в режиме Подключить, интернет работал замечательно. единственное, что было неправильно - модуль ponoff выдавал двойную индикацию - соединение VPN PPTP установлено и одновременно соединение не установлено. таким образом, мне удалось путем изменения скриптов привязать vpn к конкретному интерфейсу и в случае прекращения подачи провайдером интернента по нему, автоматически переключиться на другой интерфейс, на другого провайдера.
В настройках стоит автоподнятие соединения. Так что работать будет и при исчезновении коннекта. Индикация привязана к интерфейсу ppp - если он есть, то соединение будет показываться как существующее. Если его нету, то надо будет сделать автоотключение через n-минут. Пока не могу добиться в этом стабильности.
а можно поподробнее где прописано автоподнятие, я не нашел?
Результаты теста vpnpptp-0.0.1-3mdv2009.1.i586.rpm:
При запуске ponoff он пытается поднять vpn на сетевой карте наугад, иногда это ему удается, особенно тогда, когда включена только одна сетевая карта, причем именно та, на которой необходимо поднять vpn. при аварии путем выдирания кабеля из разъема сначала падает eth0, затем ppp0, последнее не восстанавливается. сделана попытка сохранить таблицу маршрутизации и не затрагивать другие сетевые карты, поднимая vpn на конкретной сетевой карте.
но так как для того, чтобы модуль ponoff смог поднять vpn на нужной карте, иные сетевые карты приходится отключать вручную, при этом таблица маршрутизации сбивается, то эффект сходит на нет.
Достоинства:
1) домашняя папка более не загрязняется временными файлами,
2) иконки появились (ребята, нарисуйте иконки!),
3) теперь модуль настройки vpnpptp спрашивает пароль рут,
Недостатки:
1) показывает всегда "Соединение VPN PPTP не установлено",
2) не получилось привязки к конкретному интерфейсу, как следствие таблица маршрутизации меняется, и, как следствие, локальная сеть не работает от разных провайдеров, даже от одного,
3) реконнект после аварии не работает,
4) в меню, Утилиты, Системные не появился вызов ponoff, что в принципе особо и не нужно вроде.
Предложения: продолжить привязку vpn к конкретной сетевой карте, если это удастся, то таблица маршрутизации полагаю будет неизменной по данному реализованному алгоритму, локальные сети будут работать вместе. По вопросу реконнекта - уж если ppp0 совсем упало, то необходим автоматический выход из ponoff, так как кнопка Включить в этот момент неактивна. и только его перезапуск исправляет аварию.
как обойти ошибки:
если запустить модуль ponoff и постоянно в трее попеременно нажимать кнопки Подключить/Отключить, то Вам непременно повезет и ppp0 будет поднято на нужной сетевой карте, локальная сеть при таких действиях не сбивается, таблица маршрутизации стабильна.
В конфигураторе забейте IP-адреса всех маршрутов в поле. По алгоритму именно они заново прописываются при поднятии ppp.
Если их забивать в конфигураторе, то возникает ошибка конфигуратора, не удается таким способом добавлять маршруты.
Как привязать ppp0 именно к eth0, а не к eth1? чего где мне попробовать поправить?
В конфигураторе забейте IP-адреса всех маршрутов в поле. По алгоритму именно они заново прописываются при поднятии ppp.
Если их забивать в конфигураторе, то возникает ошибка конфигуратора, не удается таким способом добавлять маршруты.
Как привязать ppp0 именно к eth0, а не к eth1? чего где мне попробовать поправить?
Так - а если в /etc/peers/соединение в строку pty ".... добавить в конец (внутри кавычек) -I eth0 ? Чтобы получилось типа pty "pptp 10.128.0.20 --nolaunchpppd -I eth0"
В конфигураторе забейте IP-адреса всех маршрутов в поле. По алгоритму именно они заново прописываются при поднятии ppp.
Если их забивать в конфигураторе, то возникает ошибка конфигуратора, не удается таким способом добавлять маршруты.
Как привязать ppp0 именно к eth0, а не к eth1? чего где мне попробовать поправить?
Так - а если в /etc/peers/соединение в строку pty ".... добавить в конец (внутри кавычек) -I eth0 ? Чтобы получилось типа pty "pptp 10.128.0.20 --nolaunchpppd -I eth0"
В этом случае модуль ponoff вообще не запускается и выдает:
pptp connect/disconnect. list index (0) out of bounds
В конфигураторе забейте IP-адреса всех маршрутов в поле. По алгоритму именно они заново прописываются при поднятии ppp.
Если их забивать в конфигураторе, то возникает ошибка конфигуратора, не удается таким способом добавлять маршруты.
Как привязать ppp0 именно к eth0, а не к eth1? чего где мне попробовать поправить?
Так - а если в /etc/peers/соединение в строку pty ".... добавить в конец (внутри кавычек) -I eth0 ? Чтобы получилось типа pty "pptp 10.128.0.20 --nolaunchpppd -I eth0"
В этом случае модуль ponoff вообще не запускается и выдает:
pptp connect/disconnect. list index (0) out of bounds
Тогда:
1. Вот тут поправленные файлики: http://download.edumandriva.ru/vpnpptp/
Исправил багу с маршрутами в конфигураторе и неправильном определении ppp + должен восстанавливать соединение при аварии.
2. Попробуйте вырубить ponoff и в командной строке (с предложенной строчкой в /etc/peers) сделать от root:
pppd call соединение debug nodetach
а затем /etc/ppp/ip-up.d/ip-up