Просмотр таблицы маршрутизации в Linux
Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:
- – шлюз по умолчанию, в данном примере работающий через интерфейс enp0s3. Если для target адреса в таблице маршрутизации отсутствует маршрут, то такой пакет отправляется через данный шлюз (маршрут по умолчанию)
- — статический маршрут для сети 192.168.1.0/24 через адрес 192.168.1.201, который прописан на интерфейсе
- – маршрут создан ядром ( – маршрут добавлен администратором)
- – приоритет маршрута (чем меньше значение metric, тем выше приоритет). При наличии двух маршрутов с одинаковой метрикой (не стоит так делать!), ядро начинает выбирать маршруты случайным образом.
Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:
192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201
Вы можете использовать ваш Linux сервер с двумя и более интерфейсами как маршрутизатор или интернет-шлюз. Чтобы разрешить маршрутизацию пакетов между несколькими интерфейсами, нужно включить параметр ядра net.ipv4.ip_forward = 1.
Как добавить или удалить статический маршрут?
Чтобы добавить новый маршрут к определенной IP подсети в таблицу маршрутизации Linux, нужно выполнить следующую команду:
Таким образом, мы добавим маршрут для IP сети 192.168.0.0/24 через шлюз 192.168.1.1.
Формат команды ip route очень похоже на синтаксис в Cisco IOS. Здесь также можно исопльзовать сокращений, например вместо можно написать .
Также можно добавить отдельный маршрут для одного IP адреса (хоста):
Можно сделать аналог null route маршрута в Cisco (ip route null0), пакеты в такую сеть удаляются по причине No route to host:
Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.
Чтобы удалить созданный вручную маршрут, выполните:
Как видите, маршрут удален из таблицы маршрутизации.
Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл rc.local (выполняется при загрузке сервера).
Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:
В моем случае, интерфейс enp0s3.
Более подробная статья о настройке сетевых интерфейсов в CentOS.
Далее открываем следующий файл:
И добавляем туда строку с маршрутом:
192.168.0.0/24 via 192.168.1.1
После добавления маршрута в файл нужно перезапустить сервис network:
После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.
Также можно добавить команду добавления нового маршрута в файл rc.local, чтобы он автоматически добавлялся при загрузке сервера. Откройте файл:
И укажите команду добавления маршрута:
Теперь, если ваш сервер будет перезагружен, маршрут пропишется автоматически при загрузке системы.
Способы просмотра таблицы маршрутизации в Линукс
Для просмотра таблицы в ОС Линукс можно использовать команду:
Как видно из скриншота выше, команда показала всего две записи. В первой записи указан шлюз (gateway) 192.168.168.254, вторая запись говорит о наличии доступа в подсеть 192.168.168.0 на интерфейсе eth0.
Другой способ вывести информацию о статических маршрутов — использовать команду «route», однако, как правило утилита просит права супер пользователя, поэтому предварительно введем «su-«.
Бывает, выводимых данных route и netstat недостаточно, так как в них выводится легкая информация, ее не хватает для понимания всей картины. Чтобы получить более подробную таблицу, можно воспользоваться утилитой «routel».
В этой информации содержится:
- target (цель) — IP-адрес.
- gateway — адрес шлюза.
- source — адрес отправителя.
- dev — интерфейс.
Наиболее подходящий метод для просмотра таблицы маршрутизации в ОС Линукс – использовать утилиту «ip».
Подробней про «ip» можно посмотреть в другой статье: https://www.vseprolinux.ru/komanda-ip
Здесь:
- default – IP-адрес по умолчанию.
- via 192.168.168.254 — адрес шлюза, куда будут отправлять пакеты по умолчанию.
- dev eth0 — интерфейс сети, за счёт него открывается доступ к шлюзу.
- proto kernel — обозначает, что маршрут устанавливался ядром, если static, то установка выполняется администратором.
Как настроить сеть Netplan в Ubuntu
Сначала необходимо посмотреть, как называются сетевые интерфейсы в вашей системе. Для этого можно просто изучить содержимое папки /sys/class/net:
У меня есть только Wi-Fi-карта — wlp, у вас же может быть ещё и проводной интерфейс enp. Или устройства могут называться по старому — wlan и eth. Всё зависит от системы.
1. Настройка динамического IP в Netplan
Для настройки динамического IP- адреса для интерфейса enp3s0 создадим новый конфигурационный файл 02-networkd.yaml. Самая простая настройка Netplan для получения IP по DHCP будет выглядеть вот так:
В качестве программы для обработки конфигурации мы используем Networkd, далее мы указываем наш сетевой интерфейс и включаем получение IPv4 адреса по DHCP. Все остальные параметры тоже подтянутся по DHCP. Или мы можем вручную настроить DNS для этого интерфейса:
Теперь осталось проверить эту конфигурацию. Для этого выполните:
Если ошибок нет, программа ничего не выведет и запишет вашу конфигурацию на диск. Если есть ошибки, утилита о них сообщит.
2. Настройка статического IP в Netplan
Статический IP-адрес в Netplan настроить немного сложнее. Поскольку здесь нам нужно будет задать не только непосредственно сам адрес, но и кучу других параметров, которые система раньше получала по DHCP. Нам надо указать шлюз для доступа в интернет и DNS-серверы. Модифицируем тот же конфигурационный файл:
Рассмотрим подробнее, что за что отвечает в этом конфигурационном файле.
- dhcp4 — отключаем получение IP адреса по DHCP;
- addresses — параметр ожидает список IP-адресов, которые нужно присвоить нашей сетевой карте, у нас только один адрес, однако, передавать его надо тоже в формате списка, иначе будет ошибка. В конце адреса указывается префикс маски — /24, который отвечает маске сети 255.255.255.0. Вы можете указать и другую маску, но только с помощью префикса, отдельного параметра для этого нет.
- gateway4 — задаёт адрес роутера, через который наш компьютер сможет получить доступ в интернет;
Остальное вы знаете. Списки можно оформлять не только с помощью черточек, для каждого пункта с новой строки, но и с помощью квадратных скобок, тогда элементы записываются в одну строку через запятую.
3. Настройка Wi-Fi через Netplan на Ubuntu
Кроме проводного подключения, система конфигурации Netplan умеет управлять подключением к Wi-Fi. Это отличная новость, учитывая, насколько сложно всё это раньше настраивалось, если не было NetworkManager. Правда, для работы Wi-Fi через Networkd надо, чтобы в системе был установлен пакет wpasupplicant. Например, у нас есть точка доступа AccessPoint с паролем 12345678? и мы хотим к ней подключаться. Тогда настройка Netplan Ubuntu будет выглядеть так:
Здесь мы указываем, что надо получить IP и другие параметры по DHCP, устанавливаем DNS-сервер вручную, хотя это не обязательно, а затем добавляем точку доступа и пароль к ней.
4. Применение конфигурации netplan
Естественно, что после смены настроек в конфигурационном файле ничего не меняется. Сначала нужно проверить конфигурационный файл на ошибки и создать файлы конфигурации программы-обработчика. Для этого выполните:
Если вы хотите видеть более подробную информацию, используйте опцию —debug:
Если есть ошибки, их надо исправить, если нет, применяем конфигурацию с помощью команды:
Если вы меняли программу-обработчик, например с NetworkManager на networkd, то надо ещё перезапустить компьютер. После этого сеть будет работать на новой конфигурации.
2 и более IP на одном интерфейсе
Достаточно часто возникают ситуации, когда необходимо назначить несколько ip на одном интерфейсе. Сделать это очень просто. В самом начале я показал, как быстро через консоль в Debian можно назначить несколько ip c помощью программы. Теперь сделаем так, чтобы эти настройки сохранялись после перезагрузки. Для этого редактируем наш любимый и ненаглядный /etc/network/interfaces:
С такими настройками я получу 2 ip адреса на сетевом интерфейсе:
- Первый от dhcp сервера.
- Второй адрес на этой же сетевой карте будет указан статически.
Важное замечание. Если после указанного выше добавления к динамическому адресу статического, вы перезапустите сеть, то останется только статический адрес
Если же просто перезагрузите сервер, то все будет правильно — динамика и статика. Почему так происходит — не знаю.
Вы таким образом можете добавить сколько вам необходимо адресов, используя различные параметры.
Изменить hostname (имя хоста)
Во время установки debian вы указывали имя хоста. Посмотреть его текущее значение можно в консоли:
Это значение записано в файле /etc/hostname. Есть 2 способа изменить hostname в debian:
- Простой и быстрый с помощью консольной команды. Результат работает только до перезагрузки компьютера. Потом вернется старое имя.
- С помощью изменения конфигурационного файла результат сохраняется и после перезагрузки. Чтобы сразу применить изменение, потребуется выполнить системный скрипт.
Для первого способа достаточно в консоли ввести команду:
Теперь проверим, что получилось:
Имя хоста изменилось, но в файле /etc/hostname по-прежнему указано прошлое значение. После перезагрузки hostname снова примет старое значение debian. Чтобы сделать постоянное изменение, необходимо ввести новое значение в файл вручную:
Изменение вступит в силу после перезагрузки. Если воспользоваться командой:
то изменения применятся сразу же. Этот способ более правильный, рекомендую использовать именно его. Теперь проверьте текущее значение имени хоста. Оно изменится на то, что вы указали в команде.
Проверка параметров сети
Для проверки внесенных вами исправлений давайте наберем команду
Как видим на запрос ответил systemd-resolver 127.0.0.53
Также можем еще посмотреть вывод команды:
Как видим из данного вывода DNS указан для нашего сетевого интерфейса enp0s3 его же IP адрес.
Но глобальная переменная DNS является все также systemd-resolver.
Для изменения глобальной переменной необходимо проделать следующие действия:
- откройте и отредактируйте следующий файл:
Примените изменения:
Посмотрим еще раз на глобальные переменные DNS
Из вывода видно что наш DNS изменился на 10.5.5.1.
Но вывод nslookup также покажет systemd-resolver.
- Устанавливаем resolvconf
Открываем файл и вносим изменения:
Применим наши изменения
Теперь вывод nslookup покажет наш DNS сервер
На этом Настройка сети в Ubuntu Server 20.04 LTS закончена.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы. Заранее всем спасибо!!!
Как отключить ipv6 в Debian
Пока еще новая версия протокола ip не получила широкого распространения, если он вам специально не нужен, ipv6 можно отключить. Прежде чем отключать, необходимо узнать, какие сервисы в настоящее время его используют и перенастроить их, отключив у них ipv6. Если этого не сделать, то в работе этих программ могут возникнуть ошибки. Скорее всего не критичные, но все равно, сделаем все аккуратно и правильно. Сначала проверим, что у нас работает на ipv6:
На свежеустановленном сервере debian программы ssh, exim, dhclient и rpcbind используют ipv6. Отключим это. Начнем с ssh. Открываем файл /etc/ssh/sshd_config и раскомментируем параметр ListenAddress:
Перезапускаем ssh:
Сделаем то же самое с exim4. Открываем файл конфигурации /etc/exim4/exim4.conf.template и в самом начале, после вступительных комментариев пишем:
Перезапускаем exim:
В dhclient для отключения ipv6 в конфиге убираем все параметры в запросе request, начинающиеся с dhcp6. Должно получиться вот так:
Перезапускаем сеть:
Отключаем ipv6 в rpcbind. Открываем конфигурацию /etc/netconfig и комментируем 2 строки с udp6 и tcp6:
Перезапускаем службу rpcbind и nfs-common, которая от него зависит:
Проверяем, что у нас осталось:
dhclient почему-то остался висеть на ipv6 порту, но ладно, это не страшно, запрашивать по ipv6 он все равно ничего не будет. Теперь полностью отключаем ipv6 в Debian:
Добавьте эти строки в любое место конфига, например, в самый конец. Перезапустим sysctl для применения настроек:
Проверяем свойства сетевых интерфейсов командами ifconfig и ip. Информации об ipv6 быть не должно, мы его полностью отключили.
Как указать DNS сервер
Остался последний из основных сетевых параметров — dns сервер. С ним в debian и ubuntu есть определенная путаница. Традиционно в linux для установки dns серверов используется файл /etc/resolv.conf. Но в какой-то момент в этих дистрибутивах появилась программа resolvconf, которая стала управлять настройками dns в системе. В итоге, файл resolv.conf постоянно перезаписывается этой программой. Нужна она в первую очередь для систем, где dns сервера постоянно меняются
Она следит за их изменением и корректно передает информацию об изменении программам, для которых это важно. Я лично не знаю таких программ и мне не приходилось сталкиваться с ситуацией, когда это было необходимо
Если я не ошибаюсь, то в минимальной конфигурации debian программа resolvconf не устанавливается, а вот в ubuntu она стоит. Проверить наличие программы очень просто:
Если в выводе пусто, значит ее нет. Тогда все очень просто. Для того, чтобы указать dns сервер, достаточно его записать в файл /etc/resolv.conf в следующем виде:
192.168.1.1 | локальный dns сервер |
77.88.8.1 | публичный сервер Яндекса |
8.8.8.8 | публичный сервер Гугла |
1.1.1.1 | публичный сервер cloudflare |
Я на всякий случай указал локальный сервер и 3 внешних. Если у вас стоит resolvconf, то в случае ненадобности, удалите его командой:
После этого сервер надо перезагрузить и удалить сломавшуюся символьную ссылку /etc/resolv.conf, а вместо нее создать файл с нужным содержанием, которое я привел выше.
Если же вам по какой-то причине необходима указанная выше программа, она у вас стоит и вы не хотите ее удалять, то адрес dns сервера необходимо указать в файле /etc/network/interfaces, добавив к параметрам интерфейса еще один:
Этот параметр нужно установить сразу после указания шлюза gateway. Несколько адресов разделяются пробелом.
Настройка сетевой карты
Иногда возникают ситуации, когда необходимо настроить или изменить настройки сетевой карты. Сразу отмечу, что настраивать сетевую карту можно только на реальном железе. На виртуальном, скорее всего, ни одна из предложенных дальше команд не приведет к какому-нибудь результату. У виртуальных сетевых адаптеров просто нет настроек. Для начала посмотрим, какие сетевые карты есть на сервере:
В моем случае это единственная сетевая карта фирмы Qualcomm. Теперь установим утилиту ethtool для настройки сетевой карты:
Посмотрим информацию о сетевой карте:
Указана текущая скорость, на которой работает карточка. Ее можно сменить в случае необходимости:
Этой командой можно изменить скорость сетевой карточки до 100Mb/s в случае, если там стояла другая скорость. Смотрим, что получилось:
Показал просто для примера, вряд ли кому-то понадобится уменьшать скорость. Чаще нужно выполнить обратное преобразование. У меня была ситуация, когда сетевая карта упорно не хотела работать на скорость 1Gb, хотя поддерживала такую работу, и свитч был гигабитный. Долго бился и пробовал различные утилиты для изменения скорости. Оказалось, что патч корд был 4-х жильный из комплекта какого-то роутера
Им воспользовались для подключения и даже не обратили внимание на то, что он не поддерживает работу по гигабиту
У утилиты ethtool много параметров, с помощью которых можно настроить сетевую карту. Пример этих параметров можно посмотреть на сайте redhat.
Настройка сети в Ubuntu Server 20.04
Есть два пути настройки сетевых интерфейсов:
- Получение IP адресов при помощи DHCP — автоматическая настройка
- Настройка статических IP адресов
Если вы используете какой либо маршрутизатор, то идем по первому пути. Но сначала давайте определимся с именами интерфейсов в нашей системе. Для этого воспользуемся командой ifconfig.
Да, на чистой системе данная утилита не установлена по умолчанию. Её необходимо будет установить. Ну или можно воспользоваться командой ip. Я же человек старых правил ))), мне все-таки по душе утилита ifconfig поэтому набираем:
Вывод команды покажет все имеющиеся в системе сетевые интерфейсы. В моей системе команда выдает следующий результат:
Как видим из вывода имеются три сетевых интерфейса: ; ; .
Интерфейс enp0s3 выступает в качестве WAN интерфейса для системы. Остальные два enp0s8 и enp0s9 подключены к двум локальным сетям. В дальнейшем мы их объединим в сетевой мост.
Настройка сети в Ubuntu Server используя networkd и DHCP.
И так с интерфейсами определились, давайте теперь настроим наш интерфейс, который смотрит в инет, на получение автоматических настроек сети по DHCP
Открываем файл настроек Netplan
Файл должен выглядеть следующим образом (если не так, то редактируем):
Далее применим изменения:
Если в синтаксисе нет ошибок, то изменения применятся через 120 секунд, ну или сразу если Вы нажмёте
Настройка сети в Ubuntu Server используя networkd и статические маршруты.
Если Вы пошли вторым путем и хотите настроить все IP адреса сами, то вот пример для настройки статических адресов:
- addresses — это ip адрес который будет назначен вашей сетевой карте.
- gateway4 — ip адрес вашего роутера
- nameservers — тут перечисляются DNS сервера. Первый опять же наш роутер.
- search — тут указываем домен в котором будет произведен поиск. Домен можно настроить при помощи DNS сервера
Далее сохраняем изменения:
Просмотр таблицы маршрутизации в Linux
Чтобы вывести текущую таблицу маршрутизации в Linux выполните команду:
# ip route
1 | # ip route |
- defaultvia192.168.1.1dev enp0s3 – шлюз по умолчанию, в данном примере работающий через интерфейс enp0s3. Если для target адреса в таблице маршрутизации отсутствует маршрут, то такой пакет отправляется через данный шлюз (маршрут по умолчанию)
- 192.168.1.024dev enp0s3 proto kernel scope link src192.168.1.201 — статический маршрут для сети 192.168.1.0/24 через адрес 192.168.1.201, который прописан на интерфейсе
-
proto kernel – маршрут создан ядром (
proto static – маршрут добавлен администратором) - metric – приоритет маршрута (чем меньше значение metric, тем выше приоритет). При наличии двух маршрутов с одинаковой метрикой (не стоит так делать!), ядро начинает выбирать маршруты случайным образом.
Чтобы узнать через какой интерфейс (шлюз) должен маршрутизироваться трафик к определенному IP адресу используется команда:
# ip route get 192.168.2.45
1 | # ip route get 192.168.2.45 |
192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201
1 | 192.168.2.45via192.168.1.1dev enp0s3 src192.168.1.201 |
Вы можете использовать ваш Linux сервер с двумя и более интерфейсами как маршрутизатор или интернет-шлюз. Чтобы разрешить маршрутизацию пакетов между несколькими интерфейсами, нужно включить параметр ядра net.ipv4.ip_forward = 1.
Изменить маршрут по умолчанию
Вы можете удалить маршрут по-умолчаню с помощью команды ip route del:
# ip route del default via 192.168.1.1 dev enp0s3
1 | # ip route del default via 192.168.1.1 dev enp0s3 |
Чтобы указать новый маршрут по-умолчанию в CentOS используется команда:
# ip route add default via 192.168.1.2 (маршрут через IP адрес шлюза)
1 | # ip route add default via 192.168.1.2 (маршрут через IP адрес шлюза) |
# ip route add default via enp0s3 (маршрут через имя устройства)
1 | # ip route add default via enp0s3 (маршрут через имя устройства) |
Чтобы изменить параметры маршрута по умолчанию, используется команда:
# ip route replace default via 192.168.1.2
1 | # ip route replace default via 192.168.1.2 |
Установка шлюза по-умолчанию (default gateway)
Теперь разберемся со шлюзом по-умолчанию. В предыдущих примерах со статическим ip адресом и настройками по dhcp у нас не было необходимости указывать отдельно default gateway. Мы его устанавливали вместе с остальными настройками. Чтобы посмотреть установленный по-умолчанию шлюз в debian, можно воспользоваться следующей командой в консоли:
Это шлюз по-умолчанию (default gateway). Можно воспользоваться другими, более популярными и привычными командами:
Если получите ошибки:
Значит у вас не установлен пакет net-tools. Установить его можно следующей командой.
Сетевые инструменты из пакета net-tools объявлены устаревшими и не включены в состав базовой системы. Я ими продолжаю пользоваться, потому что мне нравится их вывод больше, чем у команды ip. Netstat мне видится более информативным, хотя по сути, они все показывают одно и то же. Отказ в пользу утилиты ip идет по той причине, что она объединяет в себе все основные сетевые инструменты. Удобнее пользоваться только ей одной для настройки сети, нежели разными утилитами для разных целей.
Если нам нужно сменить default gateway, то сначала надо удалить текущий шлюз, а потом назначить новый.
То же самое, только с помощью ip:
Проверяем, что получилось:
Все получилось. Эта настройка будет действовать до перезагрузки. Чтобы ее сохранить, либо меняйте конфигурационный файл interfaces, либо, при необходимости, придумывайте что-то еще.
Получение сетевых настроек по DHCP
Теперь рассмотри вариант, когда вам необходимо получить динамический ip адрес в Debian. Здесь по аналогии с предыдущими настройками можно пойди двумя путями:
- Получить ip адрес по dhcp в консоли с помощью программы dhclient, который будет работать до перезагрузки.
- Отредактировать файл конфигурации сетевых интерфейсов.
Смотрим снова на текущую конфигурацию сети:
Выполним команду на получение ip адреса по dhcp и проверим сеть:
В качестве второго ip мы получили адрес от dhcp сервера. Если у вас несколько сетевых интерфейсов, то необходимо добавлять название после команды, например вот так:
Для того, чтобы сбросить адрес, нужно воспользоваться следующим ключом:
Обращаю внимание, что эта команда сбросит все ip адреса интерфейса, в том числе и статические. Чтобы снова запросить адрес, нужно выполнить предыдущую команду на получение ip с указанием сетевого интерфейса eth0
Все изменения, сделанные в консоли после перезагрузки, исчезнут. Чтобы их сохранить, приведем файл /etc/network/interfaces к следующему виду:
Изменить маршрут в Linux
Чтобы изменить уже существующий маршрут, можно использовать команду ip route replace:
# ip route replace 192.168.0.0/24 via 192.168.1.1
1 | # ip route replace 192.168.0.0/24 via 192.168.1.1 |
Чтобы сбросить все временные маршруты в таблице маршрутизации, просто перезапустите сетевой сервис:
# service network restart
1 | root@localhost~# service network restart |
Restarting network (via systemctl):
1 | Restarting network(via systemctl)OK |
# ip route
1 | root@localhost~# ip route |
default via 192.168.1.1 dev enp0s3 proto static metric 100
192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100
1 |
defaultvia192.168.1.1dev enp0s3 proto staticmetric100 192.168.0.024via192.168.1.1dev enp0s3 proto staticmetric100 192.168.1.024dev enp0s3 proto kernel scope link src192.168.1.201metric100 |
Настройка маршрутов в Linux
Вы можете настраивать таблицу маршрутизации с помощью команды ip. Например, чтобы изменить маршрут по умолчанию достаточно выполнить:
Так вы можете добавить маршрут для любого IP адреса, например, для 243.143.5.25:
Все очень просто, сначала указывается IP адрес цели, а затем шлюз в локальной сети, через который можно достичь этого адреса. Но такие маршруты будут активны только до перезагрузки, после перезагрузки компьютера они будут автоматически удалены. Чтобы маршруты сохранились их нужно добавить в файл конфигурации.
В операционных системах семейства Red Hat используются конфигурационные файлы /etc/sysconfig/network-scripts/route-ethX. Каждый файл может описывать несколько маршрутов, например:
Здесь gateway — шлюз по умолчанию для этого интерфейса, netmask — маска сети, а ipaddr — ip адрес интерфейса. В Debian и основанных на нем дистрибутивах можно настроить маршруты в файле /etc/network/interfaces. Здесь команда route добавляется в секцию iface. Например:
С помощью опции -net мы указываем целевую сеть, netmask — это маска сети, а gw — шлюз. Все очень просто. Теперь добавленные маршруты останутся даже после перезагрузки.
Примеры использования
Определить маршрут к сети, которая должна быть достигнута через сетевой интерфейс eth0:
$ ifconfig eth0 nodeone netmask 255.255.255.0$ route add -net 192.168.1.0
Здесь для команды route не указывается сам интерфейс, поскольку предполагается, что узлу nodeone соответствует адрес 192.168.1.2. Далее, route «узнаёт», что маршрут нужно проложить именно через eth0 благодаря тому, что системное ядро анализирует все доступные интерфейсы на предмет их конфигурации и сравнивает адрес пункта назначения с сетевой частью сетевых (сконфигурированных) интерфейсов. В данном случае ядро обнаруживает, что eth0 – тот интерфейс (с адресом 192.168.1.2), которому соответствует конечный адрес, т. е. 192.168.1.0.
Задание шлюза по-умолчанию:
$ route add default gw 192.168.1.1 eth0
Доступ в локальную сеть Ethernet через сетевой интерфейс eth0:
$ route add -net 192.168.10.0 netmask 255.255.255.0 eth0
Здесь 192.168.10.0 – сеть, к которой нужно установить доступ (маршрут).
Вывод содержимого таблицы маршрутов ядра осуществляется командой route без параметров, для подробных результатов используется опция -ee.
Также можно использовать сокращённую запись для задания маски подсети:
$ route add -net 192.168.10.0/24 eth0
Следует отметить, что шлюзы, установленные командой route будут существовать до перезагрузки системы. Для их использования на постоянной основе необходимо нужные команды прописать в файле. В Ubuntu это /etc/network/interfaces.
Например для настройки маршрутизации сети 192.168.10.0/24 через шлюз 192.168.10.1 интерфейс eth0, это команда
$ route add -net 192.168.10.0/24 gw 192.168.10.1 eth0
файл /etc/network/interfaces будет выглядеть следующим образом
auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.10.8hwaddress ether 00:E0:4C:A2:C4:48netmask 255.255.255.0broadcast 192.168.10.255up route add -net 192.168.10.0/24 gw 192.168.10.1 eth0auto eth1iface eth1 inet staticaddress 172.16.0.34netmask 255.255.255.0gateway 172.16.0.1broadcast 172.16.0.255
В Centos/Redhat это файл /etc/sysconfig/network-scripts/route-eth0 для интерфейса eth0 если же название интерфейса другое, то название файла будет route-<название интерфейса>. Если этого файла нет, то его нужно создать. Для настройки выше указанного примера, добавьте в файл следующие строки
192.168.10.0/24 via 192.168.10.1
Также можно прописать и несколько дополнительных маршрутов, для этого просто указываем их в новой строке. После чего сохраняем файл и рестартуем сетевую службу
systemctl restart network
Работа с утилитой ifconfig
В завершении сетевых настроек хотел немного поговорить об ifconfig. Ранее я упомянул, что более современным средством для настройки сети является утилита ip. В последних релизеах Debian и CentOS ifconfig вообще исключили из базовой установки, ее приходится устанавливать отдельно. IP объединяет в себе два функционала — настройка сетевых интерфейсов и маршрутизации. То есть по сути она заменяет ifconfig + route. В ней реализован функционал обоих программ.
Сам я привык к ifconfig, так как она есть не только в linux, но и в freebsd. Удобно использовать одно и то же средство во всех дистрибутивах. Но последнее время переучиваюсь на ip, так как надо идти в ногу со временем. Тенденция такова, что ip будут продвигать все сильнее и сильнее в силу его большей новизны и, наверное, удобства. Что касается удобства, лично я ничего не могу сказать, мне совершенно все равно, какую команду использовать:
или
Делают они одно и то же. Остальные команды по конфигурированию сетевых интерфейсов тоже не сильно отличаются, просто пишутся немного по-разному. Вот пример работы с маршрутами:
или
В случае с ip мы работаем с одной командой, а не двумя. Чем пользоваться вам, выбирайте сами. Если не привыкли к чему-то конкретному, рекомендую использовать ip. Мне было бы любопытно узнать, кто, что использует. Оставьте свой комментарий на эту тему.
На этом я завершаю свой материал по теме настройки сети в debian. Я рассмотрел все наиболее значимые и необходимые параметры, с которыми приходится сталкиваться во время конфигурирования сервера.
Static routes (статические маршруты)
Следующим важным элементом настройки сети является управление статическими маршрутами (static routes): добавление (route add) и удаление (route del). Вновь воспользуемся консольной командой ip. Для того, чтобы добавить маршрут в debian, достаточно ввести в консоли:
10.0.0.0 | адрес подсети, для которой создаем отдельный маршрут в обход шлюза по-умолчанию |
/24 | маска подсети |
192.168.1.50 | адрес шлюза, который будет роутить трафик в указанную подсеть |
Проверяем таблицу маршрутов:
Чтобы удалить маршрут, выполняем команду:
После перезагрузки все маршруты, добавленные таким способом, исчезнут. Чтобы статический маршрут в Debian сохранялся после перезагрузки, опять редактируем interfaces, добавляя в описание того интерфейса, к которому будут относиться маршруты, следующие строки:
Мы добавили 2 статических маршрута. Перезагружаемся и проверяем.
Мой конфиг целиком стал выглядеть вот так:
С постоянными статическими маршрутами в debian разобрались, ничего сложного. Идем дальше.