Перейти к содержимому

Как узнать gateway в linux

  • автор:

Как узнать шлюз интерфейса? BASH

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

с ип адресом задача решена таким образом:

IP="`ip addr list eth0 | grep " inet " | head -n 1 | cut -d " " -f 6 | cut -d / -f 1`"

теперь надо определить шлюз, и нетмаск в виде 192.168.0.0/24 Но вот познаний в Линукс терминале мало ( Выручайте.

Ph3nix
12.12.14 10:57:26 MSK
leave ★★★★★
( 12.12.14 11:14:26 MSK )

ip r | awk '/default/'

uspen ★★★★★
( 12.12.14 11:14:30 MSK )
Последнее исправление: uspen 12.12.14 11:15:17 MSK (всего исправлений: 1)

# ip r list match 0.0.0.0/0 | awk '' 

но дефолтных маршрутов может быть несколько

anonymous
( 12.12.14 11:17:31 MSK )

ip -o -4 a l eth0 | cut -d " " -f 7 | cut -d / -f 1 ip -o -4 a l eth0 | awk '' | cut -d / -f 1 

sin_a ★★★★★
( 12.12.14 11:30:17 MSK )

Вопрос к знатокам — а в /proc нигде нет файлов с ip и прочей инфой?

alozovskoy ★★★★★
( 12.12.14 14:43:48 MSK )

с ип адресом задача решена таким образом: (someshit)

На интерфейсе может быть (и часто бывает) более одного ip-адреса.

Что такое «шлюз интерфейса»? Тебя интересует default gateway? Если да — то их тоже может быть больше одного (с разной метрикой).

nbw ★★★
( 12.12.14 14:59:22 MSK )
Ответ на: комментарий от sin_a 12.12.14 11:30:17 MSK

Спасибо, помог. Слепил вроде ) Топорно, но под мои нужды сойдёт!

Ph3nix
( 12.12.14 15:10:39 MSK ) автор топика
Ответ на: комментарий от nbw 12.12.14 14:59:22 MSK

Да, нужен дефолтный, понятно что может быть несколько, я спрашивал по поводу как узнать его на определённом интерфейсе с условием что он там один, мне скрипт для своих нужд нужен! ) В общем слепил я динозавра, работает вроде, но если есть какие варианты ещё, я не откажусь )

Ph3nix
( 12.12.14 15:15:21 MSK ) автор топика
Ответ на: комментарий от sin_a 12.12.14 11:30:17 MSK

ip -o -4 a l eth0 | cut -d » » -f 7 | cut -d / -f 1

Device «eth0» does not exist.
/sbin/route -n | awk '$1=="0.0.0.0" '

А вообще смысл трэда непонятен. Таких тем в сети уже тысячи

snaf ★★★★★
( 13.12.14 18:50:17 MSK )
30 марта 2015 г.

Ребят, сам наткнулся на эту тему, решая аналогичную задачу. Рабочего решения для случаев, когда шлюз показывает ни одна из команд ip route, route -n и ifconfig, здесь так и не предложили, к сожалению. Попробую это исправить.

Объясню человекопонятным языком.

Для одних интерфейсов, ifconfig покажет destionation. Для других интерфейсов, ifconfig покажет broadcast, а вот текущий адрес шлюза — фиг. Подозреваю, что вопрос касался именно таких интерфейсов.

В ситуации, когда к компу подключены 10 usb-модемов (да, блин, 2g-gsm/edge местами рулит 🙁 ) с разными интерфейсами, где для одних есть destination, для других broadcast и необходимо агрегировать все соединения, надо обязательно узнать текущие адреса шлюзов всех интерфейсов, чтобы правильно прописать маршруты.Причем, сделать это нужно динамически, скриптом, чтобы не прописывать и не добавлять кучу маршрутов вручную каждый раз.

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

Адреса сохраняются в кеше ARP, получить их можно так:

arp -i интерфейс
ip neigh show dev интерфейс

Ну и получение непосредственно адреса шлюза:

P2=`ip neigh show dev интерфейс | grep -E “REACHABLE|STALE” | awk ` #теперь $P2 присовено значение в виде IP шлюза интерфейса echo $P2

Методы получения адресов шлюза для других типов интерфейсов приводились выше — обычно, их можно молучить командами типа ifconfig, ip route и route -n. Меня же, интересовал вопрос о том, как получить адрес шлюза интерфейса, который не отображается командами ifconfig, ip route и route -n и надеюсь, что помог(у) этим сообщением хотябы одному человеку на земле 🙂

VictorAS
( 30.03.15 00:37:52 MSK )
28 сентября 2016 г.
Ответ на: комментарий от VictorAS 30.03.15 00:37:52 MSK

Подниму тему. И все-таки как вытащить адреса шлюзов, которые выдаются по DHCP на интерфейс. Пример такой. Имеем линукс машину в которую от двух провайдеров воткнуто по аплинку. Оба провайдера выдают адреса по DHCP. Нужно на сервере настроить балансировку трафика в оба канала. Делается это довольно изящно.

 route del default ip ro flush cache ip ro add default scope global nexthop via ip_gateway_1 dev eth0 weight 50 nexthop via ip_gateway_2 dev eth1 weight 50 

Но для этого нужно знать, что выдается по DHCP. Из этого вопрос где, в том же Debian, хранится эта информация? Нужно это для скрипта.

bredis
( 28.09.16 21:06:00 MSK )
Ответ на: комментарий от bredis 28.09.16 21:06:00 MSK

Сразу скажу не Debian, но вроде на него можно накатить dhcpcd, который выдаст например по dhcpcd -T eth0 полную инфу

Форум русскоязычного сообщества Ubuntu

Страница сгенерирована за 0.048 секунд. Запросов: 25.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Просмотр и построение таблиц маршрутизации в Linux

Вся цифровая информация передаётся по сети в виде пакетов данных. По пути от отправителя к адресату они проходят через цепочку промежуточных устройств – маршрутизаторов (роутеров) и/или соответственно настроенных компьютеров.

Маршрутизация – это процесс определения пути (сетевого маршрута) для установки соединения между хост-устройствами. Этот путь настраивается как внутри локального устройства, так и на маршрутизаторе.

Построение сетевого маршрута происходит на основе информации из таблиц маршрутизации. Для их формирования применяются протоколы маршрутизации или инструкции сетевого администратора.

Каждая таблица содержит ряд параметров, позволяющих правильно идентифицировать и читать сетевой маршрут. Таблица содержит минимум 5 разделов:

  • Destination (Target). IP-адрес сети назначения – конечной цели для передаваемых данных.
  • Netmask (Genmask). Маска сети.
  • Gateway. IP-адрес шлюза, через который можно добраться до цели.
  • Interface. Адрес сетевого интерфейса, по которому доступен шлюз.
  • Metric. Числовой показатель, задающий предпочтительность маршрута.

Опционально в таблице также может содержаться следующая информация:

  • адрес отправителя (source);
  • размер TCP-окна (window);
  • максимальная величина пакета (MSS) и типы записей.

Как посмотреть таблицу маршрутизации

Таблицу маршрутизации в Linux (например, в популярных серверных ОС типа Ubuntu или CentOS) можно посмотреть с помощью нескольких команд.

Команда route

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

route -n

Команда netstat

Утилита используется для сбора информации о состоянии сетевых соединений. Вывести таблицу можно с помощью команды:

netstat -r

Построение таблицы маршрутизации

Существует несколько основных утилит для настройки таблицы маршрутизации (добавления, обновления, удаления старых и новых маршрутов):

  • Route. Устаревшая утилита, входящая в состав пакета net-tools. Служит для отображения таблицы маршрутизации и построения статических маршрутов.
  • IP Route. Обновленный инструмент, призванный заменить Route. Имеет большую функциональность, по сравнению со своим предшественником.

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

Route

Команда имеет следующий вид:

route [-f] [-p] command -net [destination] netmask [MASK netmask] gw [gateway] metric [METRIC metric] dev [IF interface]
Ключи
  • -f – очистка таблиц от записей всех шлюзов.
  • -p – сохранение маршрута в качестве постоянного при использовании ADD. По умолчанию все маршруты временные и после перезагрузки системы сбрасываются.
Основные опции (command)
  • add – добавление маршрута.
  • del – удаление маршрута.
  • replace – замена маршрута.
  • change – изменение или настройка параметров маршрута.
Обозначения
  • [destination] – адрес сети назначения.
  • [MASKnetmask] – маска подсети.
  • [gateway] – адрес шлюза.
  • [METRICmetric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
  • [IFinterface] – сетевой интерфейс.
Опции для указания вводных данных

IP Route

Команда имеет следующий вид:

ip route command [destination] netmask [MASK netmask] via [gateway] metric [METRIC metric] dev [IF interface]
Основные опции (command)
  • add – добавление маршрута.
  • del – удаление маршрута.
  • replace – замена маршрута.
  • change – изменение или настройка параметров маршрута.
Обозначения
  • [destination] – адрес сети назначения.
  • [MASKnetmask] – маска подсети.
  • [gateway] – адрес шлюза.
  • [METRICmetric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
  • [IFinterface] – сетевой интерфейс.
Опции для указания вводных данных
  • via – используется в значении «через» для указания шлюза.
  • dev – сетевой интерфейс.
  • netmask – маска подсети.
  • metric – метрика.

Примеры статической маршрутизации

Составление нового маршрута

Можно представить два офиса: A и B. В каждом стоят маршрутизаторы на Linux, которые соединены между собой IP-IP туннелем.

Маршрутизатор A имеет IP-адрес — 192.168.1.1, а маршрутизатор B — 192.168.1.2.

Чтобы подключение к локальной сеть маршрутизатора A стало возможным из локальной сети маршрутизатора B и наоборот, нужно прописать на маршрутизаторе B:

route add -net 172.16.10.0/24 gw 192.168.1.1

Будет произведена установка шлюза «192.168.1.1» для сети «172.16.10.0/24».

Также необходимо прописать на маршрутизаторе A обратный маршрут в локальную сеть маршрутизатора B:

route add -net 172.20.0.0/24 gw 192.168.1.2

Изменение локальной сети

В случае изменения локальной сети маршрутизатора B, необходимо удалить старую запись:

route del -net 172.20.0.0/24 gw 192.168.1.2

А после добавить новый маршрут на маршрутизаторе А:

route add -net 172.20.0.0/24 gw 192.168.1.2

Изменение адреса тоннеля

Если на маршрутизаторе B изменится IP-адрес туннеля, то следует также актуализировать адрес шлюза на маршрутизаторе А:

ip route replace 172.16.10.0/24 via 192.168.1.3

После выполнения команды адрес шлюза для подсети «172.16.10.0/24» будет изменён.

Изменение провайдера

Чтобы перенаправить трафик через другого провайдера («ISP2»), следует изменить маршрут «по умолчанию» («default»):

ip route replace default via 5.215.98.7

Надежный хостинг для сайта. 14 дней — бесплатно!

Мы всегда на связи в соцсетях

Поддержка в привычной среде

Мы в Яндекс Кью

  • Хостинг для сайта
  • CMS хостинг
  • VPS сервер
  • Удалённый рабочий стол
  • Домены
  • Стресс-тест на DDoS

Как добавить или сменить шлюз по умолчанию в Linux

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 10 человек(а).

Количество просмотров этой статьи: 72 004.

В этой статье:

Основной шлюз (шлюз по умолчанию) — это IP-адрес вашего маршрутизатора. Обычно он автоматически определяется операционной системой во время установки, но, возможно, вам нужно изменить его. Это особенно актуально, если в сети есть несколько сетевых адаптеров или маршрутизаторов.

Часть 1 из 2:

С помощью терминала

Step 1 Запустите терминал.

Запустите терминал. Щелкните по нему на боковой панели или нажмите Ctrl + Alt + T .

Step 2 Найдите адрес активного основного шлюза.

Найдите адрес активного основного шлюза. Для этого введите route и нажмите ↵ Enter . В строке «default» (по умолчанию) отобразится адрес основного шлюза, а назначенный ему интерфейс можно найти в правой части таблицы.

Step 3 Удалите активный основной шлюз.

  • Введите sudo route delete default gw IP-адрес Адаптер . Например, чтобы удалить основной шлюз 10.0.2.2 адаптера eth0 , введите sudo route delete default gw 10.0.2.2 eth0 .

Step 4 Введите sudo route add default gw IP-адрес Адаптер.

Введите sudo route add default gw IP-адрес Адаптер . Например, чтобы изменить основной шлюз адаптера eth0 на 192.168.1.254, введите sudo route add default gw 192.168.1.254 eth0 . Вам будет предложено ввести пароль пользователя, чтобы выполнить команду.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *