И снова, блин, билайн. PPTP. [solved]

  • Поиском пользовался. :)
  • baselayout-2
  • Чтобы не громоздить всё в одном конфиге, разнёс по разным: net.eth0, net.ppp0 и тд.

    net.eth0:

    modules="dhcp"
    config_eth0="dhcp"
    dhclient_eth0="-nw"
    
    postup(){
    
    IFACE="eth0"
    GATEWAY=$(ip route | grep default | awk $'{print $3}')
    
    einfo "Add routes for $IFACE via $GATEWAY:"
    einfo " "
    
    ROUTES="85.21.0.88 \
    85.21.0.217 \
    213.234.192.8 \
    85.21.192.3"
    
    
    for i in $ROUTES;
            do
                    ip route add dev $IFACE $i via $GATEWAY;
                    if [ "$?" == "0" ];
                            then einfo "Added route to $i via $GATEWAY on $IFACE.";
                            else ewarn "Adding route to $i via $GATEWAY on $IFACE do not complete."
                    fi
    
            done
    
    return 0
    }
    
    predown(){
    einfo "Clean routes for $IFACE:"
    einfo " "
    ip route flush dev $IFACE;
    if [ "$?" == "0" ];
            then einfo "Deleted all routes on $IFACE.";
            else ewarn "Deleting routes on $IFACE do not complete.";
    fi
    
    return 0
    }
    
    

    net.ppp0:

    VPNSERV='vpn.internet.beeline.ru'
    
    config_ppp0="ppp"
    link_ppp0="pty 'pptp $VPNSERV --nolaunchpppd --loglevel 1'"
    
    
    username_ppp0='username'
    password_ppp0='password'
    
    
    
    
    pppd_ppp0="defaultroute
       lock
       noauth
       refuse-eap
       refuse-chap
       refuse-mschap
       nobsdcomp
       nodeflate
       debug
       persist
       maxfail 0
       holdoff 10
       lcp-echo-interval 10
       lcp-echo-failure 9"
    
    #postup(){
    #ip route del default dev eth0
    #}
    
    #postdown(){
    #/etc/init.d/net.eth0 -D restart
    #}
  • После запуска eth0:
    # ip route
    
    85.21.192.3 via GATE dev eth0
    213.234.192.8 via GATE dev eth0
    85.21.0.88 via GATE dev eth0
    85.21.0.217 via GATE dev eth0
    192.168.20.0/24 dev eth2  proto kernel  scope link  src 192.168.20.1
    192.168.10.0/24 dev eth1  proto kernel  scope link  src 192.168.10.1
    10.29.40.0/21 dev eth0  scope link  metric 4
    127.0.0.0/8 via 127.0.0.1 dev lo
    default via GATE dev eth0  metric 4

    Соответственно, работает всё, что может работать, используя внутренние ресурсы сети: dns, сайт пчелайна и тд и тп. Внешние ресурсы недоступны.

  • После запуска ppp0:
    # ip route
    
    85.21.192.3 via GATE dev eth0
    213.234.192.8 via GATE dev eth0
    85.21.0.88 via GATE dev eth0
    85.21.0.127 dev ppp0  proto kernel  scope link  src 95.27.20.28
    85.21.0.217 via GATE dev eth0
    192.168.20.0/24 dev eth2  proto kernel  scope link  src 192.168.20.1
    192.168.10.0/24 dev eth1  proto kernel  scope link  src 192.168.10.1
    10.29.40.0/21 dev eth0  scope link  metric 4
    127.0.0.0/8 via 127.0.0.1 dev lo
    default via GATE dev eth0  metric 4
    default via 85.21.0.127 dev ppp0  metric 4005

    Если судить по логам pppd, то вроде бы нормально: авторизовалось, получило ip и тд, что подтверждает предыдущий вывод, и просмотр ip addr

Теперь, проблема: интернет-ресурсы недоступны.

Если оставить всё как есть, то через полторы минуты pppd передёргивает соединение, т.к. No response to 9 echo-requests
При этом, во время того, как держится соединение, внешние ресурсы также недоступны, но 85.21.0.127 пингуется через интерфейс ppp0. Если удалить роут по умолчанию через GATE: ip route del default dev eth0, то всё также недоступны внешние ресурсы.

При пинге внешних ресурсов, tcpdump говорит только то, что исходящие ICMP пакеты есть, а входящих нет. Пинговать ping что-то-там не выходит. Надо указывать ключ -I ppp0, чтобы пакеты шли куда надо. Однако, никакого результата эта мера не приносит: также пакеты уходят, и также не возвращаются.

Что с этим делать-то?

Может быть у меня замылен глаз и я не вижу очевидного, тогда буду весьма благодарен, если меня в это ткнут.

HolyBoy написал(а): После

HolyBoy написал(а):
После запуска ppp0:
...
default via GATE dev eth0 metric 4
default via 85.21.0.127 dev ppp0 metric 4005
...
Может быть у меня замылен глаз и я не вижу очевидного

Теперь видите? У вас сразу два дефолта, к тому же у локального дефолта метрика ниже, так чего же вы хотите?
У меня работает такая конфигурация:

/etc/conf.d/net

GATEWAY="Ваш_шлюз"

config_eth0="dhcp"
routes_eth0="default gw $GATEWAY dev eth0"

config_ppp0="ppp"
username_ppp0='Ваш_логин'
password_ppp0='Ваш_пароль'
link_ppp0="pty 'pptp vpn.internet.beeline.ru --nolaunchpppd --loglevel 0'"
pppd_ppp0="updetach defaultroute usepeerdns bsdcomp 15 deflate 15"
rc_need_ppp0="net.eth0"

postup() {
if [ "${IFACE}" = "ppp0" ]; then
VPN=`ifconfig | grep 'P-t-P' | awk '{print $3}' | awk -F: '{print $2}'`
route del $VPN dev ppp0
route add -host $VPN gw $GATEWAY dev eth0
route add -host 89.179.135.67 gw $GATEWAY dev eth0
route add -host 194.67.1.203 gw $GATEWAY dev eth0
route add -host 195.14.40.141 gw $GATEWAY dev eth0
route add -host 195.14.50.21 gw $GATEWAY dev eth0
fi
return 0
}

postdown() {
if [ "${IFACE}" = "ppp0" ]; then
route del 89.179.135.67
route del 194.67.1.203
route del 195.14.40.141
route del 195.14.50.21
route add default gw $GATEWAY dev eth0
fi
return 0
}

/etc/ppp/options

lock
persist
maxfail 0
+chap
-pap
noauth
noipx
lcp-echo-interval 69
lcp-echo-failure 4
refuse-pap
refuse-eap
refuse-mschap

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Вот! Про два роута я знаю.

Вот!
Про два роута я знаю. Но!
Если соединяться с опцией nodefaultroute, то толку всё равно нет.

Если соединяться по вашему рецепту, то смотрите: 85.21.0.82 dev ppp0 proto kernel scope link src 78.106.212.224 к примеру, уже есть и добавлять роут к 85.21.0.82 через eth0 не выйдет. Так что, у вас этот участок не срабатывает. Не может срабатывать. Проверьте.

HolyBoy написал(а): Про два

HolyBoy написал(а):
Про два роута я знаю

Хм, зачем же, в таком случае, вы ждёте обмена через ppp0, коль скоро все пакеты побегут по другому дефолту - eth0?

Цитата:
Если соединяться с опциейnodefaultroute, то толку всё равно нет

Если вы хотите непременно с этой опцией, то потребуются дополнительные телодвижения в postup. Удобнее использовать как раз наоборот - именно defaultroute

Цитата:
Если соединяться по вашему рецепту

Это не мой рецепт, это результат вкуривания манов

Цитата:
смотрите: 85.21.0.82 dev ppp0 proto kernel scope link src 78.106.212.224 к примеру, уже есть и добавлять роут к 85.21.0.82 через eth0 не выйдет. Так что, у вас этот участок не срабатывает

Некоторые маршруты уже приходят через DHCP, но в разных местностях - разные. Проверьте какие именно у вас, остальные (вам необходимые) - рученьками...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Spoiler написал(а): Хм, зачем

Spoiler написал(а):
Хм, зачем же, в таком случае, вы ждёте обмена через ppp0, коль скоро все пакеты побегут по другому дефолту - eth0?

Но вы ж сами удаляете дефолтный роут ppp0, а не для eth0. А здесь говорите, что по ppp0 должны пакеты идти.

Spoiler написал(а):
Это не мой рецепт, это результат вкуривания манов

Ещё раз: при создании соединения с defaultroute создаётся маршрут до P-t-P через ppp0 и дефолтный роут через ppp0. Когда вы удаляете дефолтный роут ppp0, то всё сработает. Когда же попытаетесь добавить route add -host $VPN gw $GATEWAY dev eth0, то, разумеется, ничего не добавится.

Spoiler написал(а):
Некоторые маршруты уже приходят через DHCP, но в разных местностях - разные. Проверьте какие именно у вас, остальные (вам необходимые) - рученьками...

Я бы рад, но я не пойму, какая в результате должна получиться минимальная конфигурация. Попробую предположить, а вы поправьте, если ошибочно будет:

Если есть интерфейс eth0, с шлюзом GW и есть интерфейс ppp0 с IP_PPP=P-t-P, то нужны маршруты:

  • к ДНС-серверам через GW на eth0
  • к ВПН-серверам через GW на eth0
  • к IP_PPP через GW на eth0?
  • шлюз по умолчанию GW на eth0?

HolyBoy написал(а): не пойму,

HolyBoy написал(а):
не пойму, какая в результате должна получиться минимальная конфигурация

А вот с этого и надо было начинать, всё остальное имеет смысл лишь после оного... Почитайте для начала хотя бы здесь и здесь (кстати - как ни странно, гугль по-прежнему рулит). А пока сообщу вам малоизвестную фичу пчелайна - DNS-сервера, привязываемые посредством DHCP на eth-интерфейс знают про vpn.internet.beeline.ru, но маловато знают про "внешнюю жизнь", а вот DNS-сервера, лепящиеся на ppp - всё с точностью до наоборот (vpn.internet.beeline.ru - это внутреннее имя, про него и служба whois не ведает). Так что либо привязывайте к каждому интерфейсу собственный набор адресов DNS-серверов, либо используйте опцию usepeerdns

Цитата:
вы ж сами удаляете дефолтный роут ppp0, а не для eth0

Хм, и где ж вы это увидели? Если речь о route del $VPN dev ppp0, то к дефолту это не имеет никакого отношения. Коль скоро вы так невнимательны - то, что делает эта команда пусть будет вашим домашним заданием

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Заборол. :) Первую статью я

Заборол. :)
Первую статью я видел и она, в общем-то, малополезна, а вот вторая — та да, попутно решил несколько своих, частных проблем с её помощью.

Благодарю за содействие в решении проблемы.

мдя... ну и зачем все

мдя...
ну и зачем все громоздить и изобретать очередной лясопед если в openrc инит скрипты и так вполне адекватны.

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

Что значит "громоздить"?

Что значит "громоздить"? :)
Как раз пихание всего-всего в один /etc/conf.d/net в моём случае и будет "громоздить". Присмотрись - у меня ничего сложного нет, я только сообщения вывожу, чтобы убедиться, что всё в порядке.

Интереснее, почему у меня после коннекта и всё равно не работает впн.

alexxy написал(а): зачем все

alexxy написал(а):
зачем все громоздить и изобретать очередной лясопед если в openrc инит скрипты...

При чём здесь вообще скрипты? По-вашему net.conf и options.pptp теми самыми скриптами считываются вовсе не для конфигурирования под конкретику, а просто так, "чтоб было"?

alexxy написал(а): зачем все

alexxy написал(а):
зачем все громоздить и изобретать очередной лясопед если в openrc инит скрипты и так вполне адекватны

А и правда, зачем что-то настраивать, если можно вместо этого просто хлопнуть в ладоши со словами "ёлочка, зажгись!" (а про себя добавив "ахаляй-махаляй, ну-ка, адекватные скрипты, подите туда - не знаю куда, сделайте то - не знаю что..." ;))

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Ребята, может я что-то

Ребята, может я что-то недопонимаю, но нагромоздили вы это кошмар...
тоже юзаю билайн.

/etc/conf.d/net

dns_domain_lo="digitalfacility"

config_eth0=( "192.168.1.1 netmask 255.255.255.0" )

config_eth1=( "dhcp" )

config_ppp0=( "ppp" )
link_ppp0="pty 'pptp vpn.internet.beeline.ru --nolaunchpppd'"
username_ppp0='username'
password_ppp0='password'
pppd_ppp0=(
    lock
    nodeflate
    nobsdcomp
    persist
    defaultroute
    logfile /var/log/pptp-client.log
)
depend_ppp0() {
    need net.eth1
}

мой скрипт для подключения (если вручную подключаюсь)./connectnow.sh

#!/bin/bash
route del default
route add -net 10.0.0.0/8 gw 10.6.24.1 metric 1 eth1
route add -net 194.186.20.160/29 gw 10.6.24.1 metric 1 eth1
/etc/init.d/net.ppp0 start
route add default dev ppp0
route add -host 194.186.101.178 gw 10.6.24.1 metric 1 eth1
route add -host 194.186.101.179 gw 10.6.24.1 metric 1 eth1

где:
194.186.101.178 и 179 - DNS серверы, ну впн-серв вы поняли где,
и локалка - 10.0.0.0-10.255.255.255.255,
10.6.24.1 - шлюз

после запуска:

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.21.129.1    *               255.255.255.255 UH    0      0        0 ppp0
10.255.255.253  10.6.24.1       255.255.255.255 UGH   0      0        0 eth1
ns2.Arkhangelsk 10.6.24.1       255.255.255.255 UGH   1      0        0 eth1
ns1.Arkhangelsk 10.6.24.1       255.255.255.255 UGH   1      0        0 eth1
194.186.20.160  10.6.24.1       255.255.255.248 UG    1      0        0 eth1
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
10.6.24.0       *               255.255.248.0   U     0      0        0 eth1
10.0.0.0        10.6.24.1       255.0.0.0       UG    1      0        0 eth1
loopback        *               255.0.0.0       U     0      0        0 lo
default         172.21.129.1    0.0.0.0         UG    0      0        0 ppp0

ananazzz написал(а): может я

ananazzz написал(а):
может я что-то недопонимаю

А что, не может? :)

Цитата:
нагромоздили вы это кошмар

В смысле, каждый кулик свой кошмар хвалит? ;)

Мы тоже не всего читали Шнитке!.. © В. Вишневский

ananazzz написал(а):Ребята,

ananazzz написал(а):
Ребята, может я что-то недопонимаю, но нагромоздили вы это кошмар...

Если не знать, в каких условиях всё это работает, то да, кошмаром кажется.

  1. vpn.internet.beeline.ru — не статический адрес. Маршрут до него автоматически через шлюз не выставится. Узнать адрес ВПН сервера можно только после коннекта.
  2. сервер у меня работает маршрутизатором, настройки жёсткие у фаерволла. После каждой смены IP у ВПН надо обновлять правила фаерволла.
  3. у билайна ВПН-сервер работает крайне нестабильно, иногда разрывает соединение, бывало иногда до 2-3 разрывов за 10 минут.
  4. надо, чтобы всё работало автоматически: включил компьютер, загрузилось, подцепилось и работает. Комп без монитора и клавиатуры, стоит далеко, вручную залезать и что-то там запускать по ssh — не кошерно.

Для решения этих проблем я использовал ip-up и ip-down, упомянутые в той статье. Оно лучше, чем свой велосипед с пингами, проверками существования устройства ppp0 и прочего, не говоря уже о минимализации мусора в таблице маршрутизации.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".