<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>13966</bug_id>
          
          <creation_ts>2008-01-10 18:31:18 +0300</creation_ts>
          <short_desc>[FR] &quot;add static route to vpn gateway&quot;</short_desc>
          <delta_ts>2010-07-12 16:57:32 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>alterator-net-pptp</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://wiki.sisyphus.ru/admin/etcnet#vpn</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>14116</blocked>
    
    <blocked>14209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="Michael Shigorin">mike</assigned_to>
          <cc>evg</cc>
    
    <cc>hiddenman</cc>
    
    <cc>imz</cc>
    
    <cc>mike</cc>
    
    <cc>sem</cc>
    
    <cc>vvk</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>60865</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-10 18:31:18 +0300</bug_when>
    <thetext>Надо бы учесть ситуацию, описанную по ссылке: когда после поднятия PPP
вследствие изменения маршрута по умолчанию VPN-сервер оказывается сам
недостижимым с хоста и соединение разрывается по таймауту.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60866</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-10 18:32:12 +0300</bug_when>
    <thetext>Поскольку на это напоролся один из наших клиентов -- по умолчанию занимаюсь я,
но могут быть полезны другие мнения.  Сейчас есть две не очень понятных вещи:
как лучше оформить это в UI и куда лучше вписывать этот статический маршрут до
vpn gw.

UI пока делаю как доп. поле между Server и Login/Password:

(document:id need-gw (checkbox &quot;reachable via gateway&quot; widget-name &quot;need-gw&quot;))
(document:id vpn-gw (edit &quot;&quot; alterability #f widget-name &quot;vpn-gw&quot;))

где значение по умолчанию будет, видимо, равно default gateway на заданный
момент в системе (по-хорошему надо бы проверять, не доступен ли vpn gw через
какой-либо из активных статических маршрутов, но я такое не готов изобразить --
да и тогда похоже на грамотного локального админа, которому эта кнопка не нужна).

Маршрут предполагаю дорисовывать к конфигурации опорного интерфейса как
&quot;vpn.gw.ad.dr/32 via def.gw.ad.dr&quot;, хоть и не очень хочется лезть в настройки
&quot;чужого&quot; интерфейса, настраивая &quot;свой&quot; -- но вроде как в etcnet не было
возможности для ppp-интерфейсов условно поднимать свои статики, кроме разве что
ip-up.d/ (что было бы орригинально :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60885</commentid>
    <comment_count>2</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-01-11 09:48:04 +0300</bug_when>
    <thetext>ipv4route в ifaces/pppXXX у меня вполне работало. Правда, маршрут до vpn-сервера
я туда никогда не пробовал прописывать :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60886</commentid>
    <comment_count>3</comment_count>
    <who name="Andrew Kornilov">hiddenman</who>
    <bug_when>2008-01-11 10:32:16 +0300</bug_when>
    <thetext>Ну если я правильно вижу в examples от etcnet, то pptp server прописывается в
файле options интерфейса. Так?
Эх, все хотел написать документ Feel the power of etcnet :) Можно же всякое
придумать. Например, в ipv4route в pppX:
add $PPTP_SERVER via X.X.X.X
1. Будет добавлять при поднятии интерфейса и удаляться при опускании
2. Нужно подумать, что вставлять в X.X.X.X. Это самое сложное :) Нужно не
опорный интерфейс выбирать, а адрес. А ядро само разберется, как туда роутить
(т.к. в любой момент что-то может измениться)
Если бы этот файл отрабатывался до поднятия pptp, то было бы проще, можно было
бы грязный хак изобразить по вытаскиванию текущего (до подъема) def gw. Но их
может быть много, в разных видах и т.п.
Поэтому черт его знает, что туда писать. Можно, конечно, сделать опцию Gateway
to VPN server и там просить ввести пользователя адрес, если действительно будет
такая ситуация, как описана. Обычно там будет default gw, при его изменении
придется и тут пользователю менять, а он забудет, как обычно. Но другого пути и
нет, вроде как.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60891</commentid>
    <comment_count>4</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-01-11 12:26:03 +0300</bug_when>
    <thetext>В плюшке &quot;add static route to vpn gateway&quot; можно сделать два варианта:
- ручное указание пользователем гейтвея
- автоматическое определение

Вопрос в том, как должно работать это автоопределение:
- прописывать default gw как сказал hiddenman
- вычислять маршрут на основании таблицы маршрутизации

В сложных конфигурациях роутинга оба варианта могут работать некорректно. С
другой стороны, откуда у юзера возьмётся сложная маршрутизация?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60928</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-12 02:21:34 +0300</bug_when>
    <thetext>(In reply to comment #4)
&gt; В плюшке &quot;add static route to vpn gateway&quot; можно сделать два варианта:
&gt; - ручное указание пользователем гейтвея
&gt; - автоматическое определение

Именно это и предлагается.

&gt; Вопрос в том, как должно работать это автоопределение:
&gt; - прописывать default gw как сказал hiddenman

Насчёт изменения -- было бы клёво сделать случай &quot;auto&quot;, когда чуточку раньше
поднятия pppd сохраняется текущий def gw и применяется здесь.  Но это уже в
светлом будущем, как понимаю :)

&gt; - вычислять маршрут на основании таблицы маршрутизации

Собираюсь сделать первое, при возможности -- с оглядкой/доработкой по второму.

&gt; В сложных конфигурациях роутинга оба варианта могут работать некорректно. 
&gt; С другой стороны, откуда у юзера возьмётся сложная маршрутизация?

Так отож :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61057</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-14 19:05:57 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; ipv4route в ifaces/pppXXX у меня вполне работало. Правда, маршрут до vpn-сервера
&gt; я туда никогда не пробовал прописывать :)
А можешь прописать _неправильный_ и посмотреть, когда он подымается? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61063</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-14 21:20:06 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; ipv4route в ifaces/pppXXX у меня вполне работало.
&gt; Правда, маршрут до vpn-сервера я туда никогда не пробовал прописывать :)
Докладываю: поднимает, но поздно.  Надо поднимать до запуска pppd.

Мужики, чо делать будем?  Концептуально ровное поднятие статиков до/после
интерфейса в etcnet или я какой костыль изобрету? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61064</commentid>
    <comment_count>8</comment_count>
    <who name="Andrew Kornilov">hiddenman</who>
    <bug_when>2008-01-14 21:28:02 +0300</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #2)
&gt; &gt; ipv4route в ifaces/pppXXX у меня вполне работало.
&gt; &gt; Правда, маршрут до vpn-сервера я туда никогда не пробовал прописывать :)
&gt; Докладываю: поднимает, но поздно.  Надо поднимать до запуска pppd.
&gt; 
&gt; Мужики, чо делать будем?  Концептуально ровное поднятие статиков до/после
&gt; интерфейса в etcnet или я какой костыль изобрету? :)
Ну существуют всякие ifup-pre-local, ifup-pre. Может быть изобрести подобное для
всех остальных подсистем?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61065</commentid>
    <comment_count>9</comment_count>
    <who name="Andrew Kornilov">hiddenman</who>
    <bug_when>2008-01-14 21:29:19 +0300</bug_when>
    <thetext>Проблема, например, в том, что интерфейс может не подняться, а роутинг мы
изменили. И все, отваливание сети опять.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61068</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-14 21:50:39 +0300</bug_when>
    <thetext>(In reply to comment #8)
&gt; Ну существуют всякие ifup-pre-local, ifup-pre. Может быть изобрести 
&gt; подобное для всех остальных подсистем?
Ну наверное моя хотелка -- это ipv4route-pre...  собственно,
/etc/net/ifaces/pppN/ifup-pre и помог -- вот такого вида:

#!/bin/sh                                                                      
                          ip ro ad $MY_VPN_GW via $MY_USUAL_DEF_GW

[или хотелка -- даже не файлик, а вообще галочка в options: &quot;делать так, чтоб
этот gw оставался доступен через текущий default route&quot;, только обзывать лучше
без default -- вдруг вышеозвученное насчёт более интеллектуального выбора хоста,
через который доберёмся, получится реализовать когда-нибудь?]

(In reply to comment #9)
&gt; Проблема, например, в том, что интерфейс может не подняться, а роутинг мы
&gt; изменили. И все, отваливание сети опять.
Так это, мы ж договорились /32 добавлять?  Собственно, ровно так сейчас и
экспериментирую -- до меня вдруг дошло, что тестовый стенд давно под рукой :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61071</commentid>
    <comment_count>11</comment_count>
    <who name="Andrew Kornilov">hiddenman</who>
    <bug_when>2008-01-14 22:16:08 +0300</bug_when>
    <thetext>&gt; &gt; Ну существуют всякие ifup-pre-local, ifup-pre. Может быть изобрести 
&gt; &gt; подобное для всех остальных подсистем?
&gt; Ну наверное моя хотелка -- это ipv4route-pre...  собственно,
&gt; /etc/net/ifaces/pppN/ifup-pre и помог -- вот такого вида:
&gt; #!/bin/sh                                                                      
&gt;                           ip ro ad $MY_VPN_GW via $MY_USUAL_DEF_GW
&gt; 
&gt; [или хотелка -- даже не файлик, а вообще галочка в options: &quot;делать так, чтоб
&gt; этот gw оставался доступен через текущий default route&quot;, только обзывать лучше
&gt; без default -- вдруг вышеозвученное насчёт более интеллектуального выбора хоста,
&gt; через который доберёмся, получится реализовать когда-нибудь?]
&gt; 
1. Так что, ifup-pre достаточно?
2. Где ты берешь def gw все-таки?
&gt; (In reply to comment #9)
&gt; &gt; Проблема, например, в том, что интерфейс может не подняться, а роутинг мы
&gt; &gt; изменили. И все, отваливание сети опять.
&gt; Так это, мы ж договорились /32 добавлять?  Собственно, ровно так сейчас и
&gt; экспериментирую -- до меня вдруг дошло, что тестовый стенд давно под рукой :)
А, ну да. Я уже и забыл, что ты пытаешься вообще починить :-)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61076</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-14 23:26:14 +0300</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; /etc/net/ifaces/pppN/ifup-pre и помог -- вот такого вида:
&gt; &gt; #!/bin/sh                                                                      
&gt; &gt; ip ro ad $MY_VPN_GW via $MY_USUAL_DEF_GW
&gt; 1. Так что, ifup-pre достаточно?
Для добавления -- да; забыл добавить, что удаляет потом
/etc/net/ifaces/pppN/ifdown-post:
#!/bin/sh
ip route del $MY_VPN_GW via $MY_USUAL_DEF_GW

&gt; 2. Где ты берешь def gw все-таки?
Эээ... прямщас -- ничего умного:
/sbin/ip ro | awk &apos;/^default via/ { print $3; exit; }&apos;

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

&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; Проблема, например, в том, что интерфейс может не подняться, 
&gt; &gt; &gt; а роутинг мы изменили. И все, отваливание сети опять.
&gt; &gt; Так это, мы ж договорились /32 добавлять?
&gt; А, ну да. Я уже и забыл, что ты пытаешься вообще починить :-)
Описанное по $URL применительно к результату настройки $COMPONENT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61120</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-15 15:26:23 +0300</bug_when>
    <thetext>В первом приближении fixed in 0.5.0-alt1.

(In reply to comment #12)
&gt; /sbin/ip ro | awk &apos;/^default via/ { print $3; exit; }&apos;

Уже хочу, чтоб по возможности брало само по указанию в options.

Ещё пришлось рисовать workaround для случая, когда pppd пускается поверх eth,
который настраивается по dhcp: ifup ppp0 при указанном REQUIRES=eth0 без persist
обламывается, поскольку pppd пытается стартовать до того, как на самом деле
поднялся подлежащий интерфейс.

Вышло такое (ifcheckup водится в alterator-net-common):

# sleep order is on purpose: dhcp runs in background
start_iface()
{
        [ -n &quot;$1&quot; ] || return
        for i in `seq 1 $retries`; do
                ifcheckup &quot;$1&quot; &amp;&amp; break
                ifup &quot;$in_iface&quot;
                sleep 1
        done
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61127</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-01-15 15:52:46 +0300</bug_when>
    <thetext>* Tue Jan 15 2008 Michael Shigorin &lt;mike@altlinux&gt; 0.5.0-alt1
- first strike at routing issues (#13966): this version will setup
  an additional static route to VPN gateway via current defult gw
  (not exactly ideal but this seems to be done properly in etcnet)
- added onboot and persist controls (another part of #11988)
- updated strings and translations
- somewhat tested</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>