Сохранение/восстановление таблицы маршрутизации (route) в Linux

Первым делом создайте резервную копию таблицы маршрутизации командой:

Рубрики

  • MySQL (5)
  • True Crypt (3)
  • VOIP (52)
    • Asterisk (49)
      • Безопасность в Asterisk (2)
      • диалпланы (2)
      • Запись разговоров (2)
      • Настройка связи с провайдером (1)
      • Установка Asterisk сервера (9)
    • Оборудование (3)
  • Автомобиль (1)
  • Без рубрики (40)
  • Безопасность (2)
  • Деньги (5)
  • Для бизнеса (5)
    • Охрана труда (ОТ) (4)
    • Техника безопасности (ТБ) (4)
  • Звук (1)
  • Здоровье (2)
    • Витамины (1)
  • ИБП (3)
  • Компьютер (199)
    • Антивирусы (2)
    • Железо (15)
      • Блок питания (1)
      • Жесткие диски (4)
        • RAID (2)
      • Оперативная память (1)
    • Ноутбуки (2)
    • Операционные системы (ОС) (153)
      • Linux (133)
        • Bash (19)
        • CentOS (78)
        • Debian (17)
        • Gentoo (57)
        • Gnome (6)
        • LDAP (2)
        • Linux Mint (12)
        • Open SUSE (20)
        • Ubuntu (109)
          • установка программ (44)
            • Firefox (4)
            • Google Chrome (6)
            • mc (1)
            • SAMBA (9)
            • Viber (1)
            • Виртуальные машины (1)
        • Windows-программы (2)
        • Администрирование (12)
          • Скрипты (2)
        • Обработка текстовых файлов (4)
        • Работа с оборудованием (4)
        • Сети (LAN) (7)
        • скрипты Linux (1)
        • Справочник комманд (42)
        • Управление пользователями (1)
      • SSH (8)
      • Windows (29)
        • Server (9)
          • IIS (Internet Information Server) (3)
        • Windows 10 (1)
        • Пароли (1)
        • Удаленный доступ (3)
        • Установка Windows (2)
      • Сеть (11)
    • Планшеты телефоны Android (1)
    • Принтеры (6)
    • Программы (21)
      • Google Crome (3)
      • Mozilla Firefox (4)
      • OpenOffice (1)
      • Photoshop (2)
      • Sublime text 3 (2)
      • Антивирусы (1)
      • обмен сообщениями и звонки (1)
    • Словарь (2)
  • Кухня (1)
    • Приправы (1)
  • обслуживание Asterisk (1)
  • Переферия (2)
  • Покупки (2)
  • Политика (2)
  • Программирование (51)
    • 1С: Предприятие 8.х (39)
      • COM-технологии (1)
      • XML (2)
      • Быстродействие (1)
      • Веб-сервисы (web-сервисы) (3)
      • Запросы (6)
      • Настройки (1)
      • Работа с сетями (1)
      • Работа со строками (1)
      • Формы (7)
        • ОФ (Обычные Формы) (1)
        • УФ (Управляемые Формы) (5)
          • ОбщиеКоманды (1)
    • CSS, Boostrap (8)
    • HTML (8)
    • MS SQL (1)
    • Битрикс (1)
  • Психология (1)
  • Реальная картина мира (3)
  • Ремонт (3)
  • Сайтостроение (6)
    • Apache (1)
    • WordPress (4)
  • Связь (4)
  • Системы верований (2)
  • Соблюдение авторских прав (1)
  • Стройка (1)
  • Телефоны (6)
  • Утилизация и переработка (1)
  • Что на Руси творится? (3)
  • Электрика (1)
  • Электротехника (4)
    • диагностика (2)
    • Конденсаторы (3)

Использование traceroute

В следующих разделах показано, как использовать traceroute в вашей системе Linux.

Основное использование

Основной метод использования traceroute довольно прост. Все, что требуется traceroute, — это пункт назначения для выполнения зондирования. Назначением может быть домен или IP-адрес.

$ traceroute

$ traceroute 8.8.8.8

Если сеть настроена на блокировку сигнала traceroute, то этот зонд будет отмечен звездочками.

IPv4 или IPv6

Использование traceroute

По умолчанию traceroute будет использовать Интернет-протокол по умолчанию, на который настроена ваша система. Чтобы вручную установить версию IP, выполните описанную ниже процедуру.

Читайте также:  Лучшие TWS-наушники 2020 года. AirPods Pro и не только…

Чтобы указать traceroute на использование IPv4, используйте флаг -4:

$ traceroute -4

Чтобы указать traceroute использовать IPv6, используйте флаг -6:

$ traceroute -6

Тестирование портов

Если есть необходимость протестировать конкретный порт, его можно указать с помощью флага -p. Для отслеживания UDP traceroute будет начинаться с заданного значения и увеличиваться с каждым зондом. Для трассировки ICMP значение будет определять начальное значение последовательности ICMP. Для TCP и других это будет постоянный порт назначения для подключения.

$ traceroute -p <порт>

Скрытие имен устройств

В некоторых ситуациях имена устройств в выводе могут сделать вывод беспорядочным. Для большей наглядности вы можете скрыть имена устройств из вывода. Для этого используйте флаг -n:

$ traceroute -n

Предел тайм-аута Traceroute

По умолчанию traceroute ждет 5 секунд, чтобы получить ответ. В определенных ситуациях вы можете изменить время ожидания на больше или меньше 5 секунд. Для этого используйте флаг -w. Обратите внимание, что значение времени — это число с плавающей запятой.

Использование traceroute

$ traceroute -w 6.0

Методы исследования

Есть несколько методов, которые вы можете использовать для проверки удаленного адреса. Чтобы указать traceroute на использование эха ICMP, используйте флаг -I:

Чтобы использовать TCP SYN для зондирования, используйте флаг -T:

$ sudo traceroute -T

Установка максимального количества прыжков

По умолчанию traceroute отслеживает 30 переходов. Traceroute предлагает возможность вручную установить количество отслеживаемых переходов.

Используйте флаг -m для количества переходов:

$ traceroute -I -m 10

Указание интерфейса

Если к компьютеру подключено несколько сетевых интерфейсов, может оказаться полезным указать сетевой интерфейс, который будет использоваться для отправки пакетов. Чтобы указать сетевой интерфейс, используйте флаг -i:

$ sudo traceroute -i enp0s3

Определение количества запросов для прыжка

Использование traceroute

Чтобы определить количество запросов для перехода, укажите это число с помощью флага -q:

$ traceroute -I -q 4

Маршрутизация пакетов через шлюз

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

$ traceroute -I -g

Пакеты брать будете?

Что еще из операций ввода-вывода у нас осталось? Правильно, сетевое взаимодействие. Здесь царит та еще чехарда — «официальные» утилиты меняются от релиза к релизу, что, с одной стороны, круто, потому что удобств становится больше, с другой — надо переучиваться каждый раз.

Скажем, какой утилитой смотреть существующие в системе интерфейсы? Кто сказал ifconfig? На современных системах ifconfig, как правило, уже вообще отсутствует, ибо есть

$ ip a

Пакеты брать будете?

Вроде выглядит немного по-другому, а вроде то же самое. Кстати, для управления сетевыми мостами из консоли часто необходимо ставить пакет bridge-utils. Тогда в консольке появится утилита brctl, с помощью которой можно будет их просматривать (brctl show), ну и менять. Но иногда бывает по-другому. Мне встречался случай, когда бриджи были, а brctl их не показывал. Оказалось, что для их создания использовался Open vSwitch и кастомный модуль ядра, для настройки которого надо взять другую утилиту — ovs-vsctl. Если вдруг у тебя окружение на OpenStack, где эта штука активно используется, — может быть полезно.

Дальше — как насчет таблиц маршрутизации? Как, говоришь, route -n? Нет, мимо. Сейчас чаще используются netstat -nr и ip route show. Ну и самое банальное — как посмотреть открытые порты и процессы, которые их запросили? Например, вот так:

Читайте также:  Выпущена бета-версия iOS 10.1 для разработчиков – как установить

$ sudo netstat -tnlp

Но думаю, ты уже понял, что банальщиной мы ограничиваться не будем. Давай посмотрим теперь в реальном времени, как пакеты бегают по интерфейсам.

$ sar -n DEV 1

Да, sar — это еще одна отличная утилита для мониторинга. Умеет показывать не только сетевые операции, но и диски и активность процессора. Почитать о ней можешь, например, в статье «Простой мониторинг системы с помощью SAR».

Пакеты брать будете?

Также sar позволяет мониторить открытие/закрытие соединений и ретрансмиты (это повторные отправки тех же данных, когда сетевое оборудование сбоит или коннект крайне нестабильный, очень помогает траблшутить) в реальном времени.

$ sar -1 TCP,ETCP 1

Ну и последнее — конечно, по порядку, а не по значению — это просмотр самого сетевого трафика. Чаще всего для этого используют две утилиты: tcpdump и wireshark. Первая — консольная, ей можно, к примеру, запустить прослушивание на всех интерфейсах и записать трафик в дамп-файл в формате pcap:

$ tcpdump -w

Вторая же — графическая. Из нее можно точно так же запустить прослушивание, а можно просто открыть в ней готовый файл дампа, слитый с удаленного сервера. И наслаждаться красотой слоев модели OSI (точнее, TCP/IP).

Wireshark

Пакеты брать будете?

Если тебя окружили демоны — логируй их немедленно!

Один из самых простых и банальных способов проверить, что происходит в системе, — это посмотреть системные логи. Вот тут можно почитать о том, какие секреты скрываются в каталоге /var/log и откуда они там берутся. До недавнего времени основным механизмом записи логов был syslog, точнее, его относительно современная реализация rsyslog. Она до сих пор активно используется, если интересно почитать, где там что, — можно глянуть, например, сюда.

А что в авангарде? В современных дистрибутивах Linux на основе systemd используется свой механизм логирования, которым можно управлять через утилиту journalctl. Там есть крайне удобная фильтрация по разным параметрам и прочие плюшки. Ссылка на хороший обзор.

Сам же systemd до сих пор остается довольно жарким топиком для обсуждения, поскольку «подминает» под себя многие устоявшиеся инструменты и предоставляет альтернативы к существующим решениям. Например, как запускать какой-то процесс регулярно? Crontab? Вовсе не обязательно, теперь у нас есть systemd timers. А как насчет настройки реакций на системные и «железные» события? В systemd есть поддержка watchdog. А что там со сменой корня — старый добрый chroot? Необязательно, теперь есть новенький systemd-nspawn.

Отображение и изменение таблицы маршрутизации

Для назначения, удаления и отображения таблицы маршрутизации ядра используйте объект route . Наиболее часто используемые команды при работе с объектами маршрутов: list , add и del .

Показать таблицу маршрутизации

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

ip route ip route list ip route list SELECTOR

При использовании без SELECTOR команда выведет список всех записей маршрута в ядре:

ip route list

default via dev eth0 proto dhcp src metric 100 dev eth0 proto kernel scope link src dev eth0 proto dhcp scope link src metric 100

Читайте также:  Как сохранить картинку с сайта если она не сохраняется

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

ip r list

dev docker0 proto kernel scope link src linkdown

Добавить новый маршрут

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

Добавьте маршрут к через шлюз

ip route add via

Добавьте маршрут к , который может быть достигнут на устройстве eth0.

ip route add dev eth0

Чтобы добавить маршрут по умолчанию, используйте ключевое слово default . Следующая команда добавит маршрут по умолчанию через локальный шлюз который может быть достигнут на устройстве eth0 .

ip route add default via dev eth0

Удалить маршрут

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

Следующая команда удалит маршрут по умолчанию:

ip route del default

Удалите маршрут для через шлюз

ip route add via

Установка MTU и TTL

TTL (Time To Live) — время жизни ip-пакета в секундах. Нужен чтобы избежать перегрузки сети пакетами. Обычно каждый роутер, через которого прошел пакет, уменьшает TTL на еденицу. Если TTL=0, пакет из системы удаляется. Изначально TTL=128 (для Windows) и TTL=64 (для Ubuntu). Для DNS -записей TTL определяет время актуальности данных при кешировании запросов.

Для изменения величины MTU, отредактируем файл конфигурации /etc/network/interfaces , например так:

Для изменения величины TTL наберите:

ifconfig — настройка сетевого интерфейса

Команда  ifconfig — это, можно сказать одна из основных программ для настройки сети в Linux. Она имеет огромное количество параметров, которые позволят настроить, оптимизировать, а вслучае необходимости — отладить работу сетевого интерфейса. Также эта программа позволяет быстро определить IP дарес компьютера, а также другую информацию о сетевых интерфейсах, включая их имена, скорость и режим подключения и так далее. Для того, чтоб узнать информацию только по конкретному интерфейлу, укажите его имя в качестве парамертра командной строки:

ifconfig ifconfig eth0

Back to top

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

Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:

  • default via dev enp0s3 – шлюз по умолчанию, в данном примере работающий через интерфейс enp0s3. Если для target адреса в таблице маршрутизации отсутствует маршрут, то такой пакет отправляется через данный шлюз (маршрут по умолчанию)
  • dev enp0s3 proto kernel scope link src — статический маршрут для сети через адрес , который прописан на интерфейсе
  • proto kernel – маршрут создан ядром ( proto static – маршрут добавлен администратором)
  • metric – приоритет маршрута (чем меньше значение metric, тем выше приоритет). При наличии двух маршрутов с одинаковой метрикой (не стоит так делать!), ядро начинает выбирать маршруты случайным образом.

Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:

# ip route get