Page 1 of 23 12311 ... LastLast
Results 1 to 15 of 337

Thread: Еще раз про маршруты для чайников

  1. #1
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788

    Post Еще раз про маршруты для чайников

    В линуксе маршруты прописываются командой route. С помощью этой команды маршруты прописываются в таблицу ядра и при перезагрузке обнуляются. Инструкцию по использованию этой команды можно прочитать здесь. Если в кратце, то чтобы добавить маршрут её используют таким образом:
    Code:
    route add -net назначение [netmask маска] [gw шлюз] [metric метрика] [dev интерфейс]
    Например:
    Code:
    route add -net 85.21.90.0 netmask 255.255.255.0 gw 10.215.0.17
    Если гейт получается с DHCP, то я незнаю как это прописать в виду того что с этим никогда не сталкивался. Если кто в теме, то подскажите.

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

    Для начала нужно создать каталог, где будут хранится скрипты. Делается это командой:
    Code:
    mkdir /usr/local/sbin
    Допустим у нас не установлен какой-нибудь удобный текстовый редактор. Тогда чтобы записать строку в файл мы будем использовать команду "echo", вывод который перенаправим в файл с помощью ">>".

    Перед каждым выполнением скрипта /usr/local/sbin/post-firewall система восстанавливает таблицу машрутизации по-умолчанию и прописывает маршруты, которые были указанны в веб-интерфейсе. Так что можно использовать и маршруты, прописанные ранее в веб-интерфейсе.

    Каждый скрипт должен начинатся со строки, указывающей на коммандный интерпретатор. Строка должна начинаться на "#!", далее путь до программы-интерпретатора. В нашем случае мы будем использовать интерпретатор sh. Пропишем в файл эту строку:
    Code:
    echo "#!/bin/sh" >> /usr/local/sbin/post-firewall
    Перенаправление с помошью ">>" означает что вывод будет добавлен к файлу, а если файла нет, то он будет создан.

    Далее прописываем все необходимые маршруты:
    Code:
    echo "route add -net 85.21.90.0 netmask 255.255.255.0 gw 10.215.0.17" >> /usr/local/sbin/post-firewall
    и т.д.
    Вывести на экран содержимое файла можно с помощью команды cat. Например: cat /usr/local/sbin/post-firewall

    После того, как все прописано, нужно выставить на файл права, позволяющие этому скрипту запускаться. Делается это с помощью команды chmod:
    Code:
    chmod +x /usr/local/sbin/post-firewall
    Когда все изменения будут сделаны нужно будет записать их во флеш. Делается это командами:
    Code:
    flashfs save && flashfs commit && flashfs enable
    && между командами обозначает, что при успешном завершении предыдущей будет выполнена следующая. По-умолчанию во флеш записывается содержимое каталога /usr/local/

    Вот и все сделано. Теперь можно проверить, перезагрузив роутер с помощью команды reboot.

  2. #2
    Здравствуйте.
    Нужна помощь в настройке машрутов.

    В связи с увеличением количества нужных статичных маршрутов столкнулся с проблеммой - через web-интерфейс больше 16-17 маршрутов не прописать. Проблемма решается прописыванием этих маршрутов в файл post-boot, но тут-то и кроется подвох для меня поскольку с linux-ами я дело не имел. Поэтому у меня есть пара вопросов:

    1. если у меня часть маршрутов прописана через web-интерфейс нужно ли их удалять и прописывать все в post-boot или дописать в файл оставшиеся???
    2. Ну и самое главное как прописывать в файл????? =))) Желательно очень развенуто для чайников со всеми командами. В качестве примера давайте запишем следующий маршрут: 85.21.90.0 mask 255.255.255.0 gw 0.0.0.0 (Кстати, а гейт мы тут то же прописываем как 0.0.0.0 или пишем нормально 10.215.0.17????).

    Большое спасибо.
    Все получилось. Появился еще один вопрос касающийся метрик. На что они влияют????
    Last edited by Omega; 03-02-2011 at 08:46. Reason: 2 post merged

  3. #3
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788
    Первый результат в гугле:
    metric метрика

    Задает целочисленную метрику стоимости маршрута для маршрута, которая используется при выборе в таблице маршрутизации одного из нескольких маршрутов, наиболее близко соответствующего адресу назначения пересылаемого пакета. Выбирается маршрут с наименьшей метрикой.

  4. #4
    Mam(O)n
    Рядом (http://wl500g.info/showpost.php?p=60214&postcount=13)
    я задал вопрос по монтированию дисковых томов.

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

    P.S. А вообще хотелось бы более-менее подробную инструкцию для виндусойдов по идеологии работы Линукса применительно к данному рутеру.

  5. #5

    Еще раз для чайников!

    Вижу здесь ведется активный разговор про маршрутизацию.
    Подскажите, плиз, как прописать маршруты на WL500gP, чтобы подружить две сетки с адресами 10.1.1.* и 10.3.1.*

    Маршрутизатор подключен к сети с адресами 10.1.1.* через LAN порт, сеть с адресами 10.3.1.* к нему подключил по WiFi в режиме WDS.

    Заранее Спасибо!
    Last edited by Igrsan; 03-09-2007 at 09:56.

  6. #6
    Join Date
    Apr 2007
    Location
    СПб
    Posts
    129
    Вопрос такого плана - я так понимаю это не одно и то же?

    Code:
    [vedmed007@vedmed root]$ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    83.102.254.250  10.121.0.17     255.255.255.255 UGH   3      0        0 vlan1
    89.179.117.64   10.121.0.17     255.255.255.240 UG    2      0        0 vlan1
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
    195.14.50.0     10.121.0.17     255.255.255.0   UG    2      0        0 vlan1
    85.21.0.0       10.121.0.17     255.255.0.0     UG    2      0        0 vlan1
    83.102.0.0      10.121.0.17     255.255.0.0     UG    2      0        0 vlan1
    10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 vlan1
    10.0.0.0        10.121.0.17     255.0.0.0       UG    2      0        0 vlan1
    127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
    0.0.0.0         83.102.254.250  0.0.0.0         UG    0      0        0 ppp0
    0.0.0.0         10.121.0.17     0.0.0.0         UG    1      0        0 vlan1
    Поправьте если ошибаюсь...

    И как это нормально прописать?
    В /usr/local/sbin/post-firewall ???

  7. #7
    добрый день
    объясните плз, а что значит слово Flags, например в предыдущем посте, и куда эти флаги (UGH, UG, U)прописывать...

  8. #8
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788
    Quote Originally Posted by man route
    Flags
    Possible flags include
    U (route is up)
    H (target is a host)
    G (use gateway)
    R (reinstate route for dynamic routing)
    D (dynamically installed by daemon or redirect)
    M (modified from routing daemon or redirect)
    A (installed by addrconf)
    C (cache entry)
    ! (reject route)
    Флаги обозначают текущее состояние маршрута. Прописывать их некуда.

  9. #9
    Подскажите, как актуализовать список маршрутов от dhcp?

    Ответьте, плз. Необходимо прописать у себя статический IP, но терять возможность получения маршрутов не хочу. Пока придумал только малость извращённый вариант со бэкапом текущих маршрутов, сменой IP и добавлением их обратно.

    И, кстати, как заставить udhcp применять полученные настройки к интерфейсу? Получать-то он их получает, а толку?
    Last edited by Omega; 12-01-2011 at 23:29.

  10. #10
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Гы... Надо было сказать про статический адрес.

    Так не будет работать. Нужно ставить на автомат, только так.
    Маршруты использует не udhcp, а ip-up которого он дёргает.

    А что, если выдан статический IP по DHCP выдают левые адреса?

    Тогда есть такой вариант (в меру кривой): надо подменить скрипт, который вызывает udhcpcd, в нём в качестве адреса прописать статический и далее вызвать настоящий ip-up.

  11. #11
    А раньше я не использовал статический, просто хотел узнать, обновляются ли маршруты вместе в обновлением лизы от dhcp.

    А что, если выдан статический IP по DHCP выдают левые адреса?
    Не понял вопроса...

    udhcp по умолчанию смотрит в /usr/share/udhcpc/default.script, его надо править?
    И как у него работает ip-up? Нашёл только бинарник /tmp/ppp/ip-up, что с ним делать - непонятно..

  12. #12
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Quote Originally Posted by djet View Post
    Не понял вопроса...
    Вопрос: вот купили Вы статический адрес (он привязан к МАКу?). Он, кстати, в каком диапазоне? Но при этом оставили включенным DHCP. Какой адрес Вам выдаст дхцп сервер?

    udhcp по умолчанию смотрит в /usr/share/udhcpc/default.script, его надо править?
    И как у него работает ip-up? Нашёл только бинарник /tmp/ppp/ip-up, что с ним делать - непонятно..
    Запускается он так:

    udhcpc -i vlan1 -p /var/run/udhcpc0.pid -s /tmp/udhcpc -b

    Т.е. в качестве скрипта (на самом деле он и ап и даун) дёргается /tmp/udhcpc , который

    $ ls -l /tmp/udhcpc
    lrwxrwxrwx 1 root root 8 Nov 29 18:17 /tmp/udhcpc -> /sbin/rc

    Вот. Задача этот самый udhcpc заменить на свой. Основная сложность в том, что линк /tmp/udhcpc создаётся динамически, но надо попробовать его всё таки удалить, сделать на его месте скрипт, сохранить в flashfs, перегрузиться и посмотреть, что с ним стало.

    Скрипт для начала можно такой сделать
    #!/bin/sh

    /sbin/rc $*

    А потом можно в скрипте этом сделать как-то так (не помню название переменных, сорри).

    #!/bin/sh

    export IPADDR=my.static.ip.address
    export NETMASK=my.static.net.mask

    /sbin/rc $*


    Эти переменные описаны д.б. в мануале к udhcpc.

  13. #13
    Вопрос: вот купили Вы статический адрес (он привязан к МАКу?). Он, кстати, в каком диапазоне? Но при этом оставили включенным DHCP. Какой адрес Вам выдаст дхцп сервер?
    Это же для Корбины, все условия известны. Просто хочу зафиксировать свой ip на случай передёргивания нашего dhcp-сервера, либо сделать его secondary.

    А без подмены udhcpc не получится, например, сменой запускаемого скрипта в -s?

  14. #14
    Попробовал подменить:
    Code:
    [routah:root] ls -l ~djet/udhcpc.1 
    -rwxr-xr-x 1 djet root 51 Jan  1  1970 /usr/local/root/udhcpc.1*
    
    [routah:root] cat ~djet/udhcpc.1      
    #!/bin/sh
    
    #export IPADDR=10.111.64.2
    
    /sbin/rc $*
    
    [routah:root] tf /opt/var/log/syslog  
    Jan  1 03:01:08 routah l2tpd[104]: route_add: no route to host
    Jan  1 03:01:15 routah udhcpc[101]: Sending select for 10.111.69.196...
    Jan  1 03:01:15 routah udhcpc[101]: Lease of 10.111.69.196 obtained, lease time 604800
    С виду работает, а в ip addr в интерфейсе ip не присвоен..

    PS: udhcpc.1 это после обратной замены оригинала на место.
    Last edited by djet; 05-12-2007 at 16:03.

  15. #15
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Я знаю почему. Нужно вызывать udhcpc, а не rc. Чтобы это сделать, нужно создать линк на rc, например в /usr/local/root (в общем-то всё равно где):

    ln -s /sbin/rc udhcpc

    и дёргать его

Page 1 of 23 12311 ... LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •