ppp0 & gw [SOLVED]
После поднятия vpn (ppp0) можно сказать "ручками" приходиться менять шлюз. Т.е. в local.start прописана смена шлюза route del default / route add default gw my_gateway_ip, что ни есть правильно. Как заставить в /etc/conf.d/net ppp0 поменять default шлюз?
modules=("ifconfig") config_eth0=("my_ip netmask my_netmask") routes_eth0=("default via my_gateway") config_ppp0=("ppp") # Данные две строки толку не принесли. routes_ppp0=("default via my_vpn.gateway_ip") link_ppp0="eth0" link_ppp0="pty 'pptp my_vpn.server_ip --nolaunchpppd'" username_ppp0='username' password_ppp0='password' pppd_ppp0=( "lock" "noauth" "refuse-pap" "refuse-eap" "refuse-mschap" "defaultroute" "nobsdcomp" "nodeflate" "persist" "maxfail 0" )
Соединение поднимаеться, но ни локалка ни интернет не пингуются.
Однажды мне наш админ настроил, копия была на флешке но ... добрые дети ...
- Для комментирования войдите или зарегистрируйтесь
у меня
у меня дефолтовый задается так
modules=( "iproute2" ) ... routes_eth0=( "default gw 172.16.0.1" )
я использую iproute2, поэтому пакет соответственно тоже должен стоять
- Для комментирования войдите или зарегистрируйтесь
А в чем разница между
А в чем разница между "default gw IP" и "default via IP" ... может в этом проблема?
Правильно заданный вопрос - половина ответа!
Логики и довода — недостаточно. Надо еще зачморить тех, кто думает не так как мы. (South Park)
- Для комментирования войдите или зарегистрируйтесь
а у тебя
а у тебя прописался или нет?
gw - это единственный известный мне способ задать маршрут по умолчанию ) виа я не знаю, может от пакета зависит, что используем... в /etc/conf.d/net про способ gw вообще не слова... gw из man route
# Here's how to do routing if you need it #routes_eth0=( # "default via 192.168.0.1" # IPv4 default route # "10.0.0.0/8 via 192.168.0.1" # IPv4 subnet route # "::/0" # IPv6 unicast #)
- Для комментирования войдите или зарегистрируйтесь
Нет. Я так и не смог
Нет. Я так и не смог победить. Меняю при загрузке в local.start пока. Но как говориться "Если долго мучатся ....". Когда ни будь решение все таки будет найдено. Из всего того, что мне предложили, ни чего не сработало.
Правильно заданный вопрос - половина ответа!
Логики и довода — недостаточно. Надо еще зачморить тех, кто думает не так как мы. (South Park)
- Для комментирования войдите или зарегистрируйтесь
Открывай /etc/conf.d/net.
Открывай /etc/conf.d/net. Открыл? А теперь пеши:
metric_eth0="10" --- !!!!!!!!!!!
pppd_ppp0=(
"noauth"
"defaultroute" --- !!!!!!!!!!!!!!!!
"usepeerdns"
"default-asyncmap"
"ipcp-accept-remote"
"ipcp-accept-local"
"lcp-echo-interval 15"
"lcp-echo-failure 3"
"mru 1492"
"mtu 1492"
"holdoff 10"
"maxfail 0"
)
Потом перезапускай свой net.ppp0. И увидишь ДВА дефольных роута!
- Для комментирования войдите или зарегистрируйтесь
Прости ... а зачем мне ДВА
Прости ... а зачем мне ДВА маршрута по умолчанию? Что бы комп потерялся куда кого послать? Для этого достаточно route_ppp0=("default gw IP") дописать. Мне нужно именно заменить шлюз eth0 на шлюз ppp0 при поднятии последнего. И сделать это именно в /etc/conf.d/net.
В свое время мне знакомый что-то прописывал типа link_ppp0="eth0" и еще пару строк в конце файла. Все работало без проблем ... и шлюз переписывался при включении ppp0 ... и обратно востанавливался при выключении. А я, дурак, копии не сделал ... вот и мучаюсь пытаясь осознать что да как :-(
Правильно заданный вопрос - половина ответа!
Логики и довода — недостаточно. Надо еще зачморить тех, кто думает не так как мы. (South Park)
- Для комментирования войдите или зарегистрируйтесь
Что значит "Что бы комп
Что значит "Что бы комп потерялся куда кого послать"?
Какова вообще была цель данного топика? Заставить работать интернет или что?
metric_eth0="10" как раз и исправляет ситуацию, в которой джента не знает, куда ей отправлять пакеты при двух дефолтных маршрутах. У ppp0 приоритет получается выше, то есть =0, а у eth0 приоритет =10, поэтому джента всегда будет слать все пакеты, для которых нет статических маршрутов через ppp0, а не eth0. И как итог - тебе не пришлось шаманить с подменой дефолтного роута, а если впн отвалится - не придется и шаманить с его возвратом.
А ты сделал костыли, написав кучу ненужных вещей.
- Для комментирования войдите или зарегистрируйтесь
Решил однако ... ))) В прочем
Решил однако ... )))
В прочем принцип что и в local.start ... В конце файла /etc/conf.d/net
вот что дописал:
postup(){ if [[ ${IFACE} = ppp0 ]]; then route del default route add default gw 93.157.232.27 fi return 0; } predown(){ if [[ ${IFACE} = ppp0 ]]; then route del default route add default gw 10.0.0.254 fi return 0; }
Спасибо MAN`ам, WIKI и всем, кто принимал участие в решении данной проблемы!
PS. Не совсем то, что я хотел, но как вариант ... сойдет.
Правильно заданный вопрос - половина ответа!
Логики и довода — недостаточно. Надо еще зачморить тех, кто думает не так как мы. (South Park)
- Для комментирования войдите или зарегистрируйтесь
получились костыли в итоге.
получились костыли в итоге.
- Для комментирования войдите или зарегистрируйтесь
Пара комментариев вслед
При так называемом dual access (термин применяется в маршрутизаторах, адаптированных для exUSSR провайдеров) когда доступ в инет осуществляется по ВПН, а доступ к локальным ресурсам провайдера остается доступным через статические маршруты, возникает проблема двух дефолтных маршрутов.
Независимо от того, предоставляет провайдер через dhcp локальные маршруты, или нет, минимально-необходим статический маршрут на сеть впн-серверов и, возможно, на днс-сервера. Современные версии ppp НЕ ИЗМЕНЯЮТ маршрут по умолчанию, если он уже есть на момент старта pppd, даже если вы во всех возможных местах прописали опцию defaultroute.
Правильным решением будет в общем случае использовать автоматически запускаемые pppd при каждом запуске/остановке скрипты из /etc/ppp/ip-up.d и /etc/ppp/ip-down.d в котором первой командой удаляется назначенный провайдером маршрут на аппартный маршрутизатор, второй маршрут по умолчанию устанавливается через ppp. Ну и при остановке впн просто добавляется дефолтный маршрут на маршрутизатор, через который вы подключены к провайдеру.
Насчет двух и более маршрутов по умолчанию. В случае, если используется старый способ управления сетью ifconfig/route то, если мне не изменяет память, ядро линукса на так называемые метрики кладет. В случае использования пакета advanced routing Кузнецова (iproute2) ситуация, возможно, будет иной. Сам никак не перейду полностью на него, инерция привычки мешает.
Поскольку в Gentoo мы имеем СИСТЕМНЫЙ способ управления ресурсами самой системы (загрузочные скрипты и постепенная централизация конфигов), то вспомогательные действия, которые приходится делать руками после подъема того или иного интерфейса, можно прописывать в /etc/conf.d/net и это в принципе правильно, когда конфигурация всех сетевых устройств видна из одного файла, а не кучи клочков, рассыпанных по всем уголкам /etc
Успехов!
(Sir) * Windows looks like an open door, but no way to go *
- Для комментирования войдите или зарегистрируйтесь
Я понятия не имею, что у меня
Я понятия не имею, что у меня используется, но факт остается фактом:
# route | grep default default pppoe3-gw.krasl 0.0.0.0 UG 0 0 0 ppp0 default 172-20-201-254. 0.0.0.0 UG 10 0 0 eth0
- Для комментирования войдите или зарегистрируйтесь
Метрики в таблице маршрутизации
Я понятия не имею, что у меня используется, но факт остается фактом:# route | grep default default pppoe3-gw.krasl 0.0.0.0 UG 0 0 0 ppp0 default 172-20-201-254. 0.0.0.0 UG 10 0 0 eth0
Факт без его правильной интерпретации становится факом, и не тем, где ищут ответы, а форменным траханием до получения волшебным способом случайного результата. Such a Windows way.
Metric The 'distance' to the target (usually counted in hops). It is not used by recent kernels, but may be needed by routing dae‐ mons.
(c) man 1 route
Могу пересказать -- метрика -- расстояние до пункта назначения [пакета] (обычно указывается в количестве узлов перемаршрутизации) Она не используется в современных ядрах, но может потребоваться демонам маршрутизации. А ещё меня мой друг, выпускник хорошего ВУЗа по специальности "Сети и системы", давно тому назад учил: из каждой сети есть только один маршрут по умолчанию. (Одна сеть -- одна дырка наружу) Я как-то все эти годы старался придерживаться этой данности и не могу сказать, что хотя бы раз пришлось пожалеть.
И последнее. Мы не анализируем в этой ветке, почему именно лично у Вас нет проблем. Может быть, Вы магистр сетевой магии. А вот давать неверные рекомендации да еще и упорствовать в этом не стоит. "Ну не знаю, у меня работает" -- это не аргумент.
(Sir) * Windows looks like an open door, but no way to go *
- Для комментирования войдите или зарегистрируйтесь
то есть ты утверждаешь, что
то есть ты утверждаешь, что на моей тачке запущен демон маршрутизации? кто бы это мог быть, м?
- Для комментирования войдите или зарегистрируйтесь
Sir написал(а):Независимо от
Независимо от того, предоставляет провайдер через dhcp локальные маршруты, или нет, минимально-необходим статический маршрут на сеть впн-серверов и, возможно, на днс-сервера. Современные версии ppp НЕ ИЗМЕНЯЮТ маршрут по умолчанию, если он уже есть на момент старта pppd, даже если вы во всех возможных местах прописали опцию defaultroute.Правильным решением будет в общем случае использовать автоматически запускаемые pppd при каждом запуске/остановке скрипты из /etc/ppp/ip-up.d и /etc/ppp/ip-down.d в котором первой командой удаляется назначенный провайдером маршрут на аппартный маршрутизатор, второй маршрут по умолчанию устанавливается через ppp. Ну и при остановке впн просто добавляется дефолтный маршрут на маршрутизатор, через который вы подключены к провайдеру.
Поскольку в Gentoo мы имеем СИСТЕМНЫЙ способ управления ресурсами самой системы (загрузочные скрипты и постепенная централизация конфигов), то вспомогательные действия, которые приходится делать руками после подъема того или иного интерфейса, можно прописывать в /etc/conf.d/net и это в принципе правильно, когда конфигурация всех сетевых устройств видна из одного файла, а не кучи клочков, рассыпанных по всем уголкам /etc
Я же написал, что это не совсем то что хотел!
Вот что у меня в итоге получилось:
modules=("ifconfig") config_eth0=( "10.0.0.129 netmask 255.255.0.0" ) routes_eth0=( "default gw 10.0.0.254" "10.0.0.0 netmask 255.255.0.0 via 10.0.0.254" << тут порядка 40 строк маршрутов >> "192.170.88.0 netmask 255.255.252.0 via 10.0.0.254" ) config_ppp0=( "ppp" ) link_ppp0="pty 'pptp 10.10.10.17 --nolaunchpppd'" username_ppp0='login' password_ppp0='pass' pppd_ppp0=( "lock" "noauth" "refuse-pap" "refuse-eap" "refuse-mschap" "defaultroute" "nobsdcomp" "nodeflate" "persist" "maxfail 0" ) // После поднятия ppp0 postup(){ if [[ ${IFACE} = ppp0 ]]; then route del default route add default gw 93.157.232.27 // устанавливаем шлюз через ppp0 fi return 0; } // Перед удалением ppp0 predown(){ if [[ ${IFACE} = ppp0 ]]; then route del default route add default gw 10.0.0.254 // Востанавливаем шлюз в локалку на eth0 fi return 0; }
Правильно заданный вопрос - половина ответа!
Логики и довода — недостаточно. Надо еще зачморить тех, кто думает не так как мы. (South Park)
- Для комментирования войдите или зарегистрируйтесь
LinuxID написал(а):Я же
Я же написал, что это не совсем то что хотел!
Перепишите ppp, в конце концов у Вас есть исходники. И получите совершенно то, что хотите. Кстати, программирование появилось именно поэтому.
(Sir) * Windows looks like an open door, but no way to go *
- Для комментирования войдите или зарегистрируйтесь
Sir написал(а):LinuxID
LinuxID написал(а):
Я же написал, что это не совсем то что хотел!Перепишите ppp, в конце концов у Вас есть исходники. И получите совершенно то, что хотите. Кстати, программирование появилось именно поэтому.
значительно проще позвонить провайдеру и узнать подсети локальных ресурсов (и пути до них), а потом потом все это безобразие прописать в качестве статических маршрутов.
- Для комментирования войдите или зарегистрируйтесь
kaf1 написал(а):значительно
значительно проще позвонить провайдеру и узнать подсети локальных ресурсов (и пути до них), а потом потом все это безобразие прописать в качестве статических маршрутов.
У нас периодически на форуме выкладываются официальные роуты провайдера на его локальные подсети. Но речь шла совершенно не о том. А о том, как заставить ppp переписывать маршрут по умолчанию при уже имеющемся. Так вот еще раз обращаю внимание на то, что без изменения исходного текста, pppd этого делать не будет. А для того, чтобы можно было добиться желаемого результата, существуют предусмотренные способы это делать. Они описаны выше. В любом юниксе можно использовать if-up/down скрипты, в gentoo можно использовать файл /etc/conf.d/net
Надеюсь, ясность наступила.
(Sir) * Windows looks like an open door, but no way to go *
- Для комментирования войдите или зарегистрируйтесь
ну я наверное опять что-то
ну я наверное опять что-то неправильно сделал, но у меня pppd при наличии опции degaultroute заменяет defaultrout.
Вы для начала выложите таблицу маршрутизации, в тот момент, когди у Вас все работает И дополнительно когда не работает.
- Для комментирования войдите или зарегистрируйтесь
/****************************
/******************************************************************** * * sifdefaultroute - assign a default route through the address given. */ int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway) { struct rtentry rt; if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) { if (rt.rt_flags & RTF_GATEWAY) error("not replacing existing default route via %I", SIN_ADDR(rt.rt_gateway)); else error("not replacing existing default route through %s", rt.rt_dev); return 0; }
Достаточно?
ppp-2.4.4/pppd/sys-linux.c
(Sir) * Windows looks like an open door, but no way to go *
- Для комментирования войдите или зарегистрируйтесь
Вы попробуйте не вручную ppp
Вы попробуйте не вручную ppp поднимать, а через /eth/init.d/net.ppp0
- Для комментирования войдите или зарегистрируйтесь
У мну было так. Соединение
У мну было так. Соединение поднято всё время, так что меня устраивает.
После того как dhcpcd научился получать статические маршруты, стало так:
У нас в сети нет раздачи ip
У нас в сети нет раздачи ip по dhcp. Все статические.
Правильно заданный вопрос - половина ответа!
Логики и довода — недостаточно. Надо еще зачморить тех, кто думает не так как мы. (South Park)
Цитата:После поднятия vpn
Ну так может не задавать тогда его. После поднятия ppp0 он станет шлюзом. По крайней мере у меня была проблема именно в этом - при наличии GW поднятый ppp0 им не становился, а при отсутствии становился.
PK написал(а): После того как
Хм. И как работает? Без бубнов? Только указанная опция нужна - и все?
Я сейчас в корбине использую dhclient c dhcp-client-script - работает криво иногда.
Owl's are not what they seem...
Работает без нареканий. Опции
Работает без нареканий. Опции в конфиге
option ms_classless_static_routes
для получения стат.маршрутов по майкрософтовскому протоколу достаточно. Если протокол получения не майкрософт, что вряд ли, то ЕМНИПoption classless_static_routes
.dhclient c dhcp-client-script не ставил именно по причине необходимости плясок с бубном. Прописывал маршруты "ручками" - благо они не часто меняются. Но где-то с лета, по-моему, вообще праздник! :-)
Оказывается, он даже без этих
Оказывается, он даже без этих опций берет роутинг (Корбина).
Правда, друга проблема всплыла - он действует согласно RFC и если получает CSR - игнорирует и не выставляет default gateway...
Owl's are not what they seem...
# cat
можно в строчке
можно в строчке routes_eth0=("default via my_gateway")
default заменить на адрес впн сервера или маску локалки или написать metric_ppp0="0" и metric_eth0="1"
Может поможет. апчег.
Вот я когда давно настраивал впн соединение со своим провайдером.
Перепробывал все Ваши
Перепробывал все Ваши советы.
ppp0 поднимаеться но отваливаеться локалка (перестает пинговаться) и принятых пакетов 0!
Срабатывает только ручная переустановка шлюза (local.start).
Ума не приложу что делать.
И еще заметил что если ppp0 отключить (/etc/init.d/ppp0 stop) шлюз не востанавливаеться.
Правильно заданный вопрос - половина ответа!
Логики и довода — недостаточно. Надо еще зачморить тех, кто думает не так как мы. (South Park)
хоть бы показывал таблицу
хоть бы показывал таблицу маршрутизации на всех этапах. телепаты в отпуске.
# route Kernel IP routing
Это то, что дожно получиться.
Правильно заданный вопрос - половина ответа!
Логики и довода — недостаточно. Надо еще зачморить тех, кто думает не так как мы. (South Park)
LinuxID написал(а):#
А что получается, если в конфиге заремировать строчку
"default via 10.0.0.254"
?
не будет дефолтного маршрута,
не будет дефолтного маршрута, т.е. пакеты будут ходить только по на прописанные явно адреса.