Page 2 of 14 FirstFirst 123412 ... LastLast
Results 16 to 30 of 197

Thread: MultiWAN или два провайдера в роутере Asus

  1. #16

    оффтопик

    Code:
    Если используется кабельный модем Terayon tj7xx то задать
    nvram set wan2_fucking_terayon=1
    припоминаю фидошные времена и параметр fucking_telebit YES в одном интересном почтаре

  2. #17
    Подскажите, кто пользуется данными скриптами, можно ли в скрипте udhcpc.sh написать запись маршрутов?
    Они же вроде приходят, и их видно через msroutes. Если можно покажите пример.
    Заранее спасибо.
    PS: опыта работы в линухе нету.

  3. #18
    все можно
    переменные то экспортятся routes и msroutes
    тока они там в каком то бинарном виде
    писать парсилку банально лень
    да и тестить негде

    если покажете содержимое переменных - попробую что то наваять

  4. #19
    Спасибо Вам за скрипты и ответ!

    вот содержимое переменных
    routes: ''
    msroutes: '16 192 168 10 49 128 1 12 10 48 10 49 128 1 24 10 100 12 10 49 128 1 24 78 29 0 10 49 128 1'
    скорее всего шаблон такой: mask dest gw

    получается что-то вроде (ненужные нули в dest убраны):
    192.168/16
    10.49.128.1

    10.48/12
    10.49.128.1

    10.100.12/24
    10.49.128.1

    78.29.0/24
    10.49.128.1

    в исходниках нашел ф-цию add_wanx_routes, вроде то что нужно.
    (Теперь нужно найти время научиться Bourne shell и заскриптовать ее)

  5. #20
    там кстати не bash

    я написал скрипт. но что то он тормозно работает
    странно все это
    жалкие 200 маршрутов добавляет секуд 7мь
    это очень долго

    видно томозит test

    на асусе скрипт

    for i in `seq 1 2000` ; do [ -z "$ddd" ] ; done

    real 0m 50.64s
    user 0m 13.37s
    sys 0m 36.36s

    на нормальной машине
    real 0m0.009s
    user 0m0.000s
    sys 0m0.012s

    толи штуки бизибокса. не пойму пока

  6. #21
    поле куска

    if [ "$proto" = "dhcp" ]; then
    if [ ! -z `nvram get ${wan}_testip_1` ]; then
    $LOG "set routes for test ip adresses"
    ip route replace `nvram get ${wan}_testip_1` via $gw
    ip route replace `nvram get ${wan}_testip_2` via $gw
    fi

    можно вкрячить что то вроде

    Code:
    if [ ! -z "$msroutes" ]; then
    
    	set $msroutes
    
    	while  [ $# -gt 5 ]; do
                         
            	if [ $1 -eq 0 ]; then
                    	$LOG "DO NOT set default route in this script"
                    	shift 5
                    	continue
    	        elif [ $1 -lt 9 ]; then
            	        route="$2.0.0.0/$1"
                    	shift 2
    	        elif [ $1 -lt 17 ]; then        
            	        route="$2.$3.0.0/$1"
                    	shift 3 
    	        elif [ $1 -lt 25 ]; then
            	        route="$2.$3.$4.0/$1"
                    	shift 4
    	        else          
            	        route="$2.$3.$4.$5/$1"
                    	shift 5
    	        fi          
    
    		router="$1.$2.$3.$4" 
    	        shift 4
    
    		case "$router" in
    			0.0.0.0)
    				$LOG "set route to $route via interface $interface"
    				ip route replace $route dev $interface
    				;;
    			*)
    				$LOG "set route to $route via $router"
    				ip route replace $route via $router
    				;;
    		esac
    
    	done  
    
    fi
    но гадский тест (вернее бизибокс) тормозит :( на 2000 маршрутах работает порядка минуты

    ну и типа тут проверок ноль
    если маршрута к переданному таким образом гейту нет (например он находится в сети отличной от сети в которой наш интерфейс) тогда оппа
    ну и все такое

    и еще. если по dhcp нам выдали тот же адрес, маску и гейт то мой скрипт ничего не делает. однако возможна ситуация когда выдали старый адрес и гейт, но новые маршурты (в теории). тогда надо старые убирать, новые добавлять. в теории. на практике это не делается.
    Last edited by gaaronk; 27-07-2008 at 21:33.

  7. #22
    да. вот так код некрасивый но быстрый

    Code:
    if [ ! -z "$msroutes" ]; then
    
    	set $msroutes
    
    	while  true; do
    
    		case "$1" in
    			0)
    				$LOG "DO NOT set default route in this script"
    				shift 5
    				continue
    				;;
    			1|2|3|4|5|6|7|8)
    				route="$2.0.0.0/$1"
    				shift 2
    				;;
    			9|10|11|12|13|14|15|16)
    				route="$2.$3.0.0/$1"
    				shift 3 
    				;;
    			17|18|19|20|21|22|23|24)
    				route="$2.$3.$4.0/$1"
    				shift 4
    				;;
    			25|26|27|28|29|30|31|32)
    				route="$2.$3.$4.$5/$1"
    				shift 5
    				;;
    			"")
    				break
    				;;
    			*)
    				$LOG "strange bitmask - $1, skipping"
    				shift 5
    				continue
    				;;
    		esac
    
    		router="$1.$2.$3.$4" 
    	        shift 4
    
    		case "$router" in
    			0.0.0.0)
    				$LOG "set route to $route via interface $interface"
    				ip route replace $route dev $interface
    				;;
    			*)
    				$LOG "set route to $route via $router"
    				ip route replace $route via $router
    				;;
    		esac
    
    	done  
    
    fi

    в тестах на 600 маршрутов этот код выполняется 0m 1.21s
    а с использованием test - 1m 24.03s

    чудовещная разница

  8. #23
    Quote Originally Posted by gaaronk View Post
    Так как оказалось что этим даже кто то пользуется, то выкладываю последнюю версию скриптов заточенную под последнюю версию прошивки от Олега (1.9.2.7-9).
    Уважаемый автор! Хотелось бы выразить глубокую признательность за труд и поднятие очень важной темы.
    Пользуются и еще как пользуются. Я например. В Линуксе мало что соображаю но кое что понимаю в программировании, хотел может быть указать на ошибку(всего нашел 2. Вторую исправил только вчера. Была связана с dyndns - в новой версии смотрю она тоже исправлена, а именно добавлен sleep 5) . А вот в скрипте pinger.sh как стояло просто ping так и стоит. Я так понимаю пингер должен пинговать удаленный хост исключительно через заданный интерфейс?

    Определение интерфейса для пингования делается так:
    interface=`nvram get $1_ifname`

    А само пингование происходит следующим образом:
    if arping $host1 -c 1 -I $interface > /dev/null 2>&1 || arping $host2 -c 1 -I $interface > /dev/null 2>&1 ; then

    Но для того чтобы это работало потребовалось установить пакет arping
    ipkg install arping

    Или если я чегото не понимаю, поправте меня ?

  9. #24
    Quote Originally Posted by Mak View Post
    Я так понимаю пингер должен пинговать удаленный хост исключительно через заданный интерфейс?
    Логика тут такая. Мы явно задаем маршруты к двум адресам которые считаем тестовыми. Если интерфейс еще не поднят или упал (ppp или для dhcp) то перемаршрутизируем эти адреса на loopback.

    Итого так как маршрутизация для хостов задана явно, то выбор source address пойдет согласно таблицы маршрутизации, а записи для хостов /32 имеют больший приоритет. Если интрефейса нет то "тестовые" адреса заручены на loopback и пинговаться через скажем соседний WAN не будут.

    Насчет arping - хотелось бы сделать все стандартными средствами.

    Второй момент, arping использует arp запросы, естественно немаршрутизируемые. Это не совсем удобно скажем когда у вас dhcp подключение, дефолт гейт отвечает, а дальше в сети провайдера затык. А тестовым адресом назначен хост находящийся за пределами сети сконфигурированной на интерфейсе. То есть линк поднят, байтики к провайдеру бегают, но такой канал логичнее считать "мертвым".

    А в случае pptp и pppoe arping вообще не применим - какой же arp на point-to-point интерфейсах?
    Last edited by gaaronk; 30-07-2008 at 13:54.

  10. #25

    Question

    Несмотря на заявление автора, что это не готовый тулкит, я все равно пытаюсь просто завести скрипты Роутер - 500gP 1.9.2.7-7g.
    Нужно сделать 2 штуки PPPoE. Для этого я сделал LAN#1 WAN'ом:

    Code:
    robocfg vlan 2 ports "1 5t" vlan 0 ports "2 3 4 5t"
    vconfig add eth0 2
    ifconfig vlan2 172.30.1.2 broadcast 172.30.1.255 netmask 255.255.255.0 up
    К порту LAN#1 подключен ADSL модем от МГТС, на модеме ВЫключен PPPoE (звонит 500gP), IP 172.30.1.1.

    Кстати, нет ли у кого мана на robocfg? Гуглом не нашлось так вот сразу.

    Затем добавил это в самое начало /usr/local/sbin/post-boot:

    Code:
    nvram set wan1_testip_1=10.10.70.1
    # nvram set wan1_testip_2=2.2.2.2 
    
    # wan1
    nvram set wan1_ifname=vlan1
    nvram set wan1_protocol=pppoe
    nvram set wan1_pppoe_srv=Starnet_Service
    # nvram set wan1_pppoe_acn=Concentrator
    nvram set wan1_pppoe_username=starnet_login
    nvram set wan1_pppoe_password=starnet_password
    nvram set wan1_pppoe_extra="holdoff 60"
    nvram set wan1_pppoe_mtu=1492
    nvram set wan1_pppoe_mru=1492
    nvram set wan1_pppoe_type=dhcp
    nvram set wan1_sub_ipaddr_t=10.10.70.78
    nvram set wan1_sub_netmask_t=255.255.0.0
    nvram set wan1_macaddr_x=0010DCFD451D
    # nvram set wan_hwaddr_x =00AABBCCDDEE
    
    # wan2
    nvram set wan2_ifname=vlan2
    nvram set wan2_protocol=pppoe
    nvram set wan2_pppoe_srv=MGTS_ADSL_Service
    # nvram set wan2_pppoe_acn=ADSL_Modem
    nvram set wan2_pppoe_username=MGTS****@mgts   
    nvram set wan2_pppoe_password=mgts_password
    # nvram set wan2_pppoe_extra="nomppe nomppc"
    nvram set wan2_pppoe_mtu=1492
    nvram set wan2_pppoe_mru=1492
    nvram set wan2_pppoe_type=dhcp
    nvram set wan2_sub_ipaddr_t=172.30.1.2
    nvram set wan2_sub_netmask_t=255.255.0.0
    nvram set wan2_macaddr_x=0010DCFD451D
    # nvram set wan_hwaddr_x =00AABBCCDDEE
    
    # ddns
    nvram set ddns_username_1=ddnsuser
    nvram set ddns_passwd_1=ddnspassword
    nvram set ddns_hostname_wan1=ddnsuser.dyndns.org
    nvram set ddns_username_2=ddnsuser
    nvram set ddns_passwd_2=ddnspassword
    nvram set ddns_hostname_wan2=ddnsuser.dyndns.org
    Команда /usr/local/sbin/init_wan.sh в /usr/local/sbin/post-boot осталось.
    Кстати, если просто выполнить "nvram set" много раз, после ребута переменных - нет в "nvram show".

    Затем сделал "wri", выставил IP в 0.0.0.0, "static IP", перегрузил роутер.
    После перезагрузки нового vlan'а просто нет, скрипты не запустились.

    Линукса не боюсь, но железка ведет себя слегка не так, как я привык с другими линукс-железками, так что вопрос вышли ламерские

  11. #26
    Join Date
    Aug 2008
    Location
    Saratov, Russia
    Posts
    27
    Quote Originally Posted by aik View Post
    Кстати, нет ли у кого мана на robocfg? Гуглом не нашлось так вот сразу.
    запусти его без параметров увидишь описание комманд

    Quote Originally Posted by aik View Post
    Затем добавил это в самое начало /usr/local/sbin/post-boot
    проще добавить туда две строки:
    /usr/sbin/pppd file /usr/local/etc/ppp/options.ppp0
    /usr/sbin/pppd file /usr/local/etc/ppp/options.ppp1

    и соответсвенно создать файлы options.ppp0 и options.ppp1 c настройками для каждого pppoe линка


  12. #27
    Quote Originally Posted by makcumka View Post
    запусти его без параметров увидишь описание комманд
    Запустил. Выдало в числе прочего:

    1) ASUS WL-500g Deluxe stock config (eth0 is WAN, eth0.1 is LAN):
    robocfg switch disable vlans enable reset vlan 0 ports "0 5u" vlan 1 ports "1 2 3 4 5t" port 0 state enabled stp none switch enable

    Мои порты на роутере - они 0-1-2-3-4 или 1-2-3-4-5? Если писать "1 2 3 4 5t" - все порты будут "tagged" или только 5-й? А WAN порт - он 0-й или 5-й или 4-й?
    А что такое "eth0.1 is LAN"? eth - он либо eth0, либо eth1, а вот это "eth0.1" - я не понимаю.

    Нет. Ман - нужен :-)


    Quote Originally Posted by makcumka View Post
    проще добавить туда две строки:
    /usr/sbin/pppd file /usr/local/etc/ppp/options.ppp0
    /usr/sbin/pppd file /usr/local/etc/ppp/options.ppp1

    и соответсвенно создать файлы options.ppp0 и options.ppp1 c настройками для каждого pppoe линка
    И держать оба линка поднятыми все время? А авторские скрипты так понимают? Ох блин неохота переписывать все...

    Кстати, тут еще вопросы есть.
    Сделаю две штуки ppp/options*, запущу 2 демона. Могу сделать скрипт, который в фоне будет переключать гейтвей, но переключать DNS - не могу - не понимаю чем генерится resolv.conf. Точнее, генерится то он pppd'ом, но как поменять его имя?
    Last edited by aik; 04-10-2008 at 21:27.

  13. #28
    Quote Originally Posted by makcumka View Post
    проще добавить туда две строки:
    /usr/sbin/pppd file /usr/local/etc/ppp/options.ppp0
    /usr/sbin/pppd file /usr/local/etc/ppp/options.ppp1
    и соответсвенно создать файлы options.ppp0 и options.ppp1 c настройками для каждого pppoe линка
    и как разруливать DNS'ы?

  14. #29

    тонкая настройка multiwan

    Имеем роутер wl500gP с 2 WAN и соответственно 2 PPPoE. Оба PPPoE подняты, один из них приоритетный и на него сделан дефолтный роутинг (это все мультиван скрипты - http://wl500g.info/showthread.php?t=6208 ).
    Теперь хочется один (и только один) комп изнутри LAN запустить на НЕдефолтный PPPoE.
    Как это сделать по-дешевле?
    По каким ключевым словам это искать?

  15. #30
    сделай маршрутизацию по источнику

    ip route add default via xx.xx.xx.xx table 202
    ip rule add from yy.yy.yy.yy table 202

    где xx.xx.xx.xx - недефолтный шлюз , yy.yy.yy.yy - адрес компа

    если адрес wan статический то можно прям в post-boot
    если динамический то в post-firewall и адрес шлюза придется прочухать

Page 2 of 14 FirstFirst 123412 ... LastLast

Similar Threads

  1. Прошу помочь - роутер Asus, IPTV и два провайдера
    By deemage in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 83
    Last Post: 16-10-2014, 12:25
  2. 802.1x EAP-MD5 авторизация у провайдера
    By mikhako in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 222
    Last Post: 15-08-2014, 14:52
  3. Два провайдера с балансировкой нагрузки ?
    By Dmitro in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 193
    Last Post: 27-08-2013, 13:06
  4. 2 провайдера с резервированием канала
    By andycpp in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 204
    Last Post: 14-12-2012, 12:58
  5. Нужен ли полноценный MultiWAN?
    By artp in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 51
    Last Post: 21-10-2012, 16:23

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
  •