LINUX.ORG.RU
ФорумAdmin

написать скрипт для изменения default gw

 ,


1

2

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

В общем как это написать я сам разберусь и помощи не требуется, однако помощь нужна вот в чем:

1) где можно посмотреть ip адрес и сетевую маску интерфейса ppp0 и ppp1, меня интересует не вывод ifconfig, а какой-нибудь файл в недрах /proc или /sys, если есть такой, буду очень признателен.

2) как лучше менять default gw, просто удалять один маршрут и добавлять другой, например так:

route del default gw x.x.x.x dev ppp1
route add default gw x.x.x.x dev ppp0
или можно как-то менять метрики, чтобы один маршрут был более приоритетен, чем другой и соответственно система его использовала???

★★★

ну ты же сам ответил на свой вопрос - два маршрута с разными метриками сделай, когда один гейт упадёт всё пойдёт по второму маршруту

zolden ★★★★★ ()

где можно посмотреть ip адрес и сетевую маску интерфейса ppp0 и ppp1, меня интересует не вывод ifconfig, а какой-нибудь файл в недрах /proc или /sys, если есть такой, буду очень признателен.

┌[lord] [home-hell-machine]:~ 
└>ip=$(cat /proc/net/tcp | awk '{print $2}' | sed '$!d' | awk -F ":" '{print $1}')

┌[lord] [home-hell-machine]:~ 
└>printf '%d.%d.%d.%d\n' 0x${ip:6:2} 0x${ip:4:2} 0x${ip:2:2} 0x${ip:0:2}
192.168.1.110

Так я достаю айпишник с одной сетевой, без разделения на интерфейсы.
Если кровь с носу нужно именно так, а не лёгким путём - это будет тебе отправной точкой для поисков.

Spirit_of_Stallman ★★★ ()
Ответ на: комментарий от IvanR

то что надо, хотя проще все же через ifconfig

Кроме того что действительно проще, я не знаю что есть дэлиметером разных интерфейсов, при моём способе.
Т.е. ты всегда получишь что-то, но это не обязательно будет ppp1 или ppp0 (по сути оно у меня берёт «последнее», и если оные не будут подняты, оно даст адрес eth0).

Spirit_of_Stallman ★★★ ()
Последнее исправление: Spirit_of_Stallman (всего исправлений: 1)

и если оно падает, то менял бы default gw, чтобы по другому пути пошли пакеты.

а одновременно два интерфейса не нужны? если да - гугли lartc

lazyklimm ★★★★★ ()

задача оказалась гораздо сложнее, чем предполагалось сперва.

на понимаю. как можно поменять метрику командой ip route. пробовал так, не работает

ip route change default via 10.10.1.1 dev eth0 metric 2

IvanR ★★★ ()
Ответ на: комментарий от IvanR

Разумеется не работает. ″change″ изменяет у существующего маршрута шлюз (интерфейс), а маршрут задаётся маской подсети и метрикой. Вот это 3 разных маршрута, которые могут существовать в системе одновременно:

default via 10.10.1.1 dev eth0 
default via 10.10.1.1 dev eth0 metric 2
default via 10.10.1.1 dev eth0 metric 30
и каждого из них можно менять только шлюз, менять метрику нельзя, так как это будет другой маршрут. Если маршрут не нужен, его нужно удалить. Если нужен маршрут с другой метрикой, его нужно создать.

Возможно, что для восприятия было бы правильнее, чтобы команда ″ip route″ выводила метрику рядом с маской маршрута:

10.0.0.0/8 metric  2 via 10.10.1.1 dev eth0 
10.0.0.0/8 metric 30 via 10.20.1.1 dev eth2

mky ★★★★★ ()
Ответ на: комментарий от mky

я так и понял, было бы удобнее, если бы утилита сама удаляла ненужный маршрут и добавляла новый, хотя это противоречит принципу kiss

IvanR ★★★ ()
Ответ на: комментарий от IvanR

если бы утилита сама удаляла ненужный маршрут

Если бы она могла знать какой маршрут ненужный, она бы такого понаделала :-))

Вот, допустим, у вас два маршрута:

10.0.0.0/8 via 10.10.1.1 dev eth0 metric  2 
10.0.0.0/8 via 10.20.1.1 dev eth2 metric 30 
И вы даёте команду:
ip route change 10.0.0.0/8 via 10.30.1.1 dev ppp0 metric 50 
то непонятно, какой из тех двух маршрутов вы хотите заменить новым.

Суть команды ″ip change″ в противовес связки ″ip del″ + ″ip аdd″ — это не удобство использования, а исключения момента времени между ″del″ и ″add″, в течении которого нужного маршрута вобще нет в таблице.

Если же нужно сменить метрику, то можно делать ″ip аdd″ + ″ip del″, и не будет промежутка времени, когда маршрута нет, поэтому и необходимости в таком варианте ″ip change″ нет.

mky ★★★★★ ()
Ответ на: комментарий от mky

да, вы правы, я не привык работать с большими таблицами маршрутизации.

IvanR ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.