Centos 7 исключить подсеть из nat. Сетевой интерфейс Linux. Предварительная настройка сервера

В данной заметке я хочу рассмотреть простой и быстрый вариант настройки шлюза для организации доступа в интернет из локальной сети на базе CentOS 7. Не будет никакого дополнительного функционала, только самое необходимое для доступа к интернету компьютеров за шлюзом.

В нашем распоряжении будет следующий сервер для настройки шлюза:

# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)

Предварительная настройка сервера

# yum -y update

После этого я устанавливаю mc, так как привык к нему и постоянно пользуюсь:

# mcedit /etc/sysconfig/selinux

Приводим строку с соответствующим параметром к следующему виду:

SELINUX=disabled

Чтобы применить изменения, перезагружаем сервер:

# reboot

Если у вас то же самое, значит вы все сделали правильно.

По сути наш шлюз уже готов и может обслуживать клиентов. Но не работает одна важна служба, без которой нормальной работы с интернетом не получится. Нам нужно настроить кэширущий dns сервер для клиентов локальной сети. Можно пойти по простому и очень простому пути. Простой путь это выполнить простейшую настройку dns сервера bind. Как это сделать у меня опять же подробно написано отдельно — . Рекомендую ознакомиться, там рассмотрены интересные нюансы настройки.

Очень простой путь это установить dnsmasq, который помимо dns сервера включает в себя еще и dhcp сервер, который нам может пригодиться.

Установка и настройка dnsmasq в CentOS 7

С большой долей вероятности dnsmasq у вас уже установлен. Проверить это можно следующей командой:

# rpm -qa | grep dnsmasq dnsmasq-2.66-14.el7_1.x86_64

Если вывод такой же, значит пакет уже стоит. Если нет, то устанавливаем dnsmasq командой:

# yum -y install dnsmasq

Редактируем файл конфигурации /etc/dnsmasq.conf и приводим его к очень простому виду:

# mcedit /etc/dnsmasq.conf domain-needed bogus-priv interface=eth1 dhcp-range=192.168.10.50,192.168.10.150,24h

Запускаем dnsmasq:

# systemctl start dnsmasq

Либо перезапускаем, если он был у вас запущен:

# systemctl restart dnsmasq

Добавляем dnsmasq в автозагрузку:

# systemctl enable dnsmasq

Я редактировал конфиг, когда у меня уже был установлен и запущен dnsmasq. И он то ли завис, то ли просто затупил, но я не мог его перезагрузить или остановить с помощью systemctl. Пришлось перезагрузить сервер. После этого все нормально заработало. Клиент на windows получил сетевые настройки. Информация об этом появилась в логе /var/log/messages. Я проверил на клиенте интернет, все было в порядке, он работал.

На этом настройка завершена, шлюзом под CentOS 7 можно пользоваться.

Анализ сетевой активности на шлюзе в linux

В данной конфигурации шлюз может успешно функционировать. Но иногда хочется посмотреть, а что вообще на нем происходит. Например, кто-то занимает весь канал, интернет тормозит, а мы как слепые котята сидим и не видим ничего. Нужно какое-то средство для просмотра загрузки сети на шлюзе. И такое средство есть — программа iftop .

Она отсутствует в стандартном репозитории CentOS 7. Для ее установки необходимо :

# yum -y install epel-release

Устанавливаем iftop на CentOS 7:

# yum -y install iftop

Теперь мы можем смотреть загрузку сети на шлюзе в режиме реального времени. Чтобы увидеть сетевую активность, достаточно запустить iftop:

По-умолчанию она слушает интерфейс eth0. Это внешний интерфейс шлюза, на нем все подключения будут отображены от имени самого шлюза и определить, кто же в сети занимает канал мы не сможем. Чтобы это увидеть, необходимо запустить просмотр сетевой активности на локальном интерфейсе. Сделать это не сложно, достаточно запустить iftop с параметром:

# iftop -i eth1 -P

В моем случае это пользователь с ip 192.168.10.98, на котором я запустил проверку скорости интернета с серверов Яндекса.

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

Заключение

С помощью бесплатного дистрибутива Linux мы смогли за считанные минуты настроить шлюз для организации доступа в интернет компьютеров из локальной сети. У меня ушло минут 10 на настройку шлюза по этой инструкции. Если вы делаете это первый раз, то конечно у вас уйдет гораздо больше времени. Нужно будет разобраться в нюансах, к тому же я дал много ссылок на дополнительный материал.

Давайте разберемся в том, что мы сделали:

  1. Выполнили предварительную настройку сервера, подготовили его к работе.
  2. Включили маршрутизацию.
  3. Настроили firewall.
  4. Включили NAT.
  5. Установили и настроили dnsmasq для организации служб dns и dhcp.
  6. Проанализировали сетевую активность шлюза, узнали кто загружает канал интернета.

Это минимально необходимый функционал для организации работы шлюза на CentOS 7. Следующим этапом может быть настройка прокси сервера, шейпера траффика, настройка 2-х и более провайдеров и много другое. Что-то из этого я рассмотрю в своих будущих статьях.

Онлайн курс "Администратор Linux"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.

Сетевой интерфейс Linux

Сетевой интерфейс – это точка присутствия сервера в локальной сети. В свою очередь, локальная сеть скорее всего будет иметь доступ в глобальные сети. Настройка сетевого интерфейса это типичная задача при установке сервер на colocation и в ней нет нечего сложного. Какие файлы влияют на работу сетевого интерфейса в 5: /etc/modprobe.conf – здесь загружаются модули ядра для различных устройств:

alias eth0 pcnet32
alias eth1 pcnet32

/etc/hosts – здесь находится список ip-адресов и назначенных им имен.

Удобно в отсутствие DNS-сервера или когда нет необходимости сообщать эти имена на всю сеть.

/etc/resolv.conf – в этом файле указываются DNS сервера. DNS-сервер задается директивой nameserver

# cat /etc/resolv.conf
nameserver 192.168.146.2

/etc/host.conf – файл указывает последовательность использования механизмов разрешения имени. В нашем случае сначала используем /etc/hosts а только потом DNS-сервер.

# cat /etc/host.conf
order hosts,bind

/etc/init.d/network – скрипт останавливающий и запускающий работу сети

/proc/sys/net/ipv4/ip_forward – включение маршрутизации для своих интерфейсов, если у вас два или более интерфейсов её нужно включить. Включение осуществляется передачей “1” в этот файл.

# echo "1" > /proc/sys/net/ipv4/ip_forward

/etc/sysconfig/network - здесь мы указываем, является ли наш сервер доступным по сети, если да то по каким протоколам и указываем наш hostname, то есть имя сервера. Default gateway рекомендуется указывать здесь.

# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=centos52
NETWORKING=yes - будет ли наш сервер работать в сети, наверно 99% случаев ответ будет - да, то есть yes Эта директива для Ipv4
NETWORKING_IPV6=no - Ipv6 уже где-то используется но не настолько чтобы переводить сервера на его использование. Пока я не буду его включать.
HOSTNAME=centos52 - имя нашего сервера

В /etc/sysconfig/network-scripts/ находятся различные скрипты влияющие на работу сетевого интерфейса:

# ls -l /etc/sysconfig/network-scripts/
-rw-r--r-- 1 root root 140 Feb 14 19:23 ifcfg-eth0
-rw-r--r-- 1 root root 254 Mar 3 2008 ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-*

Для нас самое большое значение имеют скрипты ifcfg-*. Именно в них описываются настройки сетевых интерфейсов присутствующих в сервере.
Давайте посмотрим что у них внутри.

DHCP iface

Данный интерфейс работает с использованием службы DHCP.

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:0C:29:43:5B:3D
ONBOOT=yes

Мой компьютер работает по DHCP, что отчетливо видно по директиве BOOTPROTO=dhcp. То есть сетевые настройки мы получаем у dhcp-сервера при загрузке нашего сервера. Другие директивы означают следующее:

DEVICE=eth0 - как будет называться наш интерфейс, принято первый интерфейс называть как eth0, второй eth1 и так далее HWADDR=00:0C:29:43:5B:3D - MAC-адрес нашей сетевой карты. Media Access Control - это уникальный идентификатор сетевой карты. У каждой сетевой карты свой MAC-адрес и в идеале он не повторяется больше ни с каким в мире. Иногда MAC-адрес пытаются подменить чтобы выдать свой компьютер за чужой, по каким либо соображениям, обычно враждебным. Длина MAC-адреса составляет 48 бит что позволяет иметь 281 474 976 710 656 уникальных комбинаций. У каждого производителя сетевых плат есть свой диапазон в котором он назначает MAC-адреса своим платам. MAC-адрес пишется в шестнадцатеричной форме счисления.

ONBOOT=yes - включать ли этот интерфейс автоматически при включение сервера. Думаю, что скорее всего это и нужно.

Loopback iface

loopback-интерфейс необходим для нормальной работы ОС.

# cat /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
DEVICE=lo - это loopback интерфейс. Интерфейс есть в любой системе и всегда поднят. Он нужен для нормальной работы ОС.
IPADDR=127.0.0.1 - ip-адрес loopback интерфейса. Он всегда такой.
NETMASK=255.0.0.0 - сетевая маска
NETWORK=127.0.0.0 - сеть в которой находится наш ip-адрес
BROADCAST=127.255.255.255 - адрес широковещательной рассылки
ONBOOT=yes - включать ли интерфейс при загрузке сервера, конечно да!
NAME=loopback - имя сетевого интерфейса. Вывод команды ifconfig будет показывать значение указанное именно в DEVICE.

Custom iface

Выше мы рассмотрели интерфейс работающий по протолу dhcp. Но как правило придется работать именно с custom-интерфейсами, то есть вручную задавать параметры и маршрутизацию о которой мы поговорим немного позже.

Вот custom-интерфейс

DEVICE=eth0
IPADDR=192.168.0.2
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=255.255.255.255
GATEWAY=192.168.0.1
ONBOOT=yes
BOOTPROTO=dhcp здесь отсутствует но есть другие директивы.
IPADDR=192.168.0.2 - здесь мы задаем ip-адрес нашего интерфейса
NETMASK=255.255.255.0 - сетевая маска
NETWORK=192.168.0.0 - сеть в которой находится наш ip-адрес
BROADCAST=255.255.255.255 - адрес широковещательной рассылки
GATEWAY=192.168.0.1 - шлюз через который мы попадаем в другие сети
ONBOOT=yes - включать ли интерфейс при загрузке сервера

Практика

Настроим сетевой интерфейс в Linux. Мы знаем что lo всегда включен и его не нужно вообще трогать. Редактируем /etc/sysconfig/network-scripts/ifcfg-eth0 Мой конфигурационный файл выглядит так:

DEVICE=eth0
HWADDR=00:0C:29:43:5B:3D
IPADDR=192.168.146.130
NETMASK=255.255.255.0
BROADCAST=192.168.146.255
GATEWAY=192.168.146.2
ONBOOT=yes

# service network restart

# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]

Проверим все ли поднялось

# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:43:5B:3D
inet addr:192.168.146.130 Bcast:192.168.146.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe43:5b3d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1327 errors:0 dropped:0 overruns:0 frame:0
TX packets:1340 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:149547 (146.0 KiB) TX bytes:232486 (227.0 KiB)
Interrupt:59 Base address:0x2000

Жирным выделены особенно интересные нам участки в выводе команды ifconfig. Как видим все похоже на правду и интерфейс «поднят», то есть находится в рабочем режиме.
Для большей ясности разберем и некоторые другие параметры сетевого интерфейса:

  • MTU:1500 - это Maximum Transfer Unit. Различные сети и каналы передачи имеют разные скорости обмена. Это определяет максимальную длину пакета, пересылка которого с высокой вероятностью произойдет без ошибок. Для Ethernet - сетей значение MTU составляет 1500 байт.
  • Metric:1 - чем меньше это значение тем лучше считается маршрут до этой сети. На серверах скорее всего это менять не придется. Этот параметр играет большую роль в работе протоколов маршрутизации.
  • Сollisions:0 - нулевое значение говорит о том, что с сетевым интерфейсом все в порядке на физическом уровне.
  • RX bytes - сколько данных принято
  • TX bytes - сколько данных отослано

Так идем дальше. В примере выше, после настройки сетевого интерфейса мы полностью перезагружали службу network. Когда на сервере только один интерфейс это не страшно, но если их несколько и какие-то уже работают и выполняют свои функции прерывать их работу нежелательно. Тут нам на помощь приходит скрипт ifup/ifdown. Он нужен для перезагрузки какого либо одного сетевого интерфейса. Короткий пример.

Шаг 1. Вносим изменения в /etc/sysconfig/network-scripts/ifcfg-eth0

Шаг 2. # ifdown eth0

Шаг 3. # ifup eth0

Маршрутизация

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

netstat – команда позволяющая отслеживать сетевые подключения сервера

# netstat -r
Kernel IP routing table

default 192.168.146.2 0.0.0.0 UG 0 0 0 eth0

В выводе мы увидим список сетей и как до них добраться. То есть какой шлюз использовать для достижения пункта назначения. Помните, когда мы настраивали сетевой интерфейс eth0 мы указали директиву GATEWAY в ifcfg-eth0 ? Этот gateway был помечен как default, то есть шлюз по умолчанию.

Весь трафик в сети, которые явно не описаны в таблице маршрутизации, отправляются через шлюз по умолчанию. В нашем случае default gateway -192.168.146.2

Вывод команды “netstat -r” нам говорит следующее:

Первая строка. Чтобы попасть в подсеть 192.168.146.0 нам не нужен никакой шлюз (*), поскольку мы и так находимся в этой сети

Вторая строка - это default, то есть маршрут по умолчанию. Весь трафик предназначенный по все остальные сети будет уходить через этот шлюз.

Genmask - это сетевая маска, благодаря маске можно отделить сетевую часть адреса от адреса хоста

Flags: U - это UP, то есть маршрут поднят и функционирует сейчас

Flags: UG - UP, Gateway. Маршрут поднят и использует gateway в своей работе

MSS – Maximum Segment Size, определяет максимальный размер пакета для этого маршрута.

Window – размер окна. Максимальный размер пакета, который система готова принять.

irtt - initial round trip time, задает значение которое используется при установке соединения. Round trip time – представляет из себя отрезок времени, если в течение которого от удаленного хоста не пришло подтверждение о получение пакета, пакет будет выслан снова.

Iface – показывает к какому интерфейсу относится маршрут

Прописываем маршруты

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

Приведу пример. У нас два сетевых интерфейса eth0 и eth1. Через eth0 мы получаем доступ во внешние сети и по умолчанию весь трафик направляется через него. Через eth1 мы получаем доступ ко внутренней сети 192.168.147.0/24 но что еще важнее, в этой сети есть сервер 192.168.147.1 у которого есть сетевой интерфейс в подсеть 192.168.148.0/24 и мы очень хотим туда попадать. А для того что туда попадать необходимо прописать правильные маршруты у себя в ОС.

Так выглядит таблица маршрутизации в нашем случае

# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.147.0 * 255.255.255.0 U 0 0 0 eth1
192.168.146.0 * 255.255.255.0 U 0 0 0 eth0
192.168.148.0 192.168.147.1 255.255.255.0 UG 0 0 0 eth1
192.168.146.2 0.0.0.0 UG 0 0 0 eth0 default

То есть в подсеть 192.168.148.0/24 (внутренняя подсеть) мы попадаем через eth1 -> 192.168.147.1, сервер выполняющий роль шлюза в эту подсеть. Все остальное идет через default шлюз. Все очень просто. Ну и собственно как привести настройки к этому.

Шлюз по умолчанию

# cat /etc/sysconfig/network
...
GATEWAY=192.168.146.2
...
eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:43:5B:3D
IPADDR=192.168.146.130
NETMASK=255.255.255.0
BROADCAST=192.168.146.255
ONBOOT=yes
eth1
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
HWADDR=00:0c:29:43:5b:47
IPADDR=192.168.147.2
NETMASK=255.255.255.0

И самое главное, файл в котором мы прописываем статический маршрут для eth1.

# cat /etc/sysconfig/network-scripts/route-eth1
192.168.148.0/24 via 192.168.147.1

Для того чтобы прописать маршруты для какого либо интерфейса, необходимо создать файл route-<название интерфейса> в каталоге /etc/sysconfig/network-scripts/ После того как все готово к работе, мы перезагружаем сетевой сервис.

# service network restart

Теперь подведем итоги, что и как мы сделали.

Есть три вида маршрутов. Динамические – которые динамически назначаются сетевому интерфейсу, например сервером DHCP. Статические – которые вы вручную прописываете и они остаются в настройках после перезагрузки сервера. И маршруты по умолчанию – когда никакие другие маршруты не подходят для того, чтобы отослать по ним пакеты.

Мы могли добавить маршрут в подсеть 192.168.148.0/24 командой route

# route add -net 192.168.148.0/24 gw 192.168.147.1

Но после перезагрузки сервера информация о маршруте пропала бы. Чтобы такого не произошло используется специальный механизм. А именно создание файла вида route-<имя интерфейса> в /etc/sysconfig/network-scripts В него мы вносим список сетей и как до них добраться. Каждая новая запись начинается с новой строки.

Про шлюз

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

  • На сервере корректная таблица маршрутизации благодаря которой он поймет что делать с пакетами дальше;
  • Включена передача пакетов между интерфейсами;
  • Включен маскарадинг (или установлен прокси) для нужной нам сети, например вот так (перенаправлять пакеты для хостов из подсети 192.168.146.0/24):

# iptables -t nat -A POSTROUTING -s 192.168.146.0/24 -j MASQUERADE

Полезные ключи netstat

  • r – показывает таблицу маршрутизации
  • n – выводит статистику по ip-адресу, не пытается определить имя хоста. Это работает несколько быстрее и обычно, вывод команды удобнее читать
  • a – показывает состояние всех сокетов на сервере. Сокет – это конечная точка сетевых коммуникаций. Каждый сокет имеет тип и ассоциированный с ним процесс.
  • t – протокол tcp
  • u – протокол udp
  • i – отображает таблицу сетевых интерфейсов
  • l – отображает сокеты в режиме LISTEN, то есть ожидающие соединения
  • p – показать PID (process ID) и имя программы с которой взаимодействует сокет

netstat на практике

Параметров выше вполне достаточно, чтобы многое узнать из жизни сетевых служб. Слушает ли кто нибудь 25-й порт?

# netstat -nlp | grep:25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2710/sendmail:

Видим что 25-й порт слушает процесс sendmail с PID 2710

# ps ux | grep 2710
root 2710 0.0 0.7 8992 1836 ? Ss 11:17 0:00 sendmail: accepting connections

Посмотрим текущие ESTABLISHED-соединения по tcp, то есть с кем у нас есть подключение и по какому порту

# netstat -nt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0::ffff:192.168.146.130:22::ffff:192.168.146.1:2642 ESTABLISHED
tcp 0 132::ffff:192.168.146.130:22::ffff:192.168.146.1:2027 ESTABLISHED

Как видим это только соединения по ssh
Также, будет полезно знать какие состояния бывают у сокетов:

  • ESTABLISHED – сокет с установленным соединением;
  • SYN_SENT – сокет в процессе установки соединения;
  • SYN_RECV – был принят запрос установки соединения из сети;
  • FIN_WAIT1 – сокет закрыт и соединение закрывается;
  • FIN_WAIT2 – сокет закрыт и сокет ждет закрытия соединения с удаленного хоста;
  • TIME_WAIT – сокет после своего закрытия, еще какое-то время принимает пакеты из сети;
  • CLOSED – сокет не используется;
  • CLOSE_WAIT – удаленный хост отключился, ожидаем закрытия сокета;
  • LAST_ACK – удаленный хост отключился и сокет закрыт. Ожиданиепотдверждения;
  • LISTEN – сокет ожидает входящие подключения;
  • CLOSING – оба сокета отключились но еще не все наши данные отосланы;
  • UNKNOWN – статус сокета неизвестен.

Мы научились настраивать один и более сетевых интерфейсов. Разобрались с маршрутизацией. Узнали какие файлы и как влияют на работу сети в 5. Сейчас мы познакомимся с двумя программами которые играют существенную роль в работе сети. Это программа nmap – которая сканирует порты удаленного хоста и сообщается какие порты на нем открыты. И программа tcpdump, она переводит вашу сетевую плату в режим promiscuous, что позволяет перехватывать весь трафик проходящий через карту.

Nmap позволяет сканировать удаленные компьютеры на предмет открытых портов. С более агрессивными опциями можно узнать версию ОС и некоторые другие вещи. Устанавливаем программу

# yum -y install nmap

Просканируем удаленный хост. Как видим есть кое что интересное.

# nmap -A -T5 192.168.146.132
Starting Nmap 4.11 (http://www.insecure.org/nmap/) at 2009-02-18 19:36 MSK
Interesting ports on unixbox (192.168.146.132):
Not shown: 1677 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
111/tcp open rpcbind 2 (rpc #100000)
935/tcp open status 1 (rpc #100024)
MAC Address: 00:0C:29:25:04:55 (VMware)
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11
Uptime 0.195 days (since Wed Feb 18 14:55:10 2009)
Nmap finished: 1 IP address (1 host up) scanned in 14.239 seconds

У nmap много различных опций, подробнее о них можно прочитать в man nmap

Иногда в целях выявления неисправностей нам нужно выяснить, какие пакеты передаются по сети. Это не сложно сделать с помощью tcpdump. Слушаем весь трафик для MAC-адреса 00:a0:80:00:2f:fe на интерфейсе eth1

# tcpdump -n -i eth1 «ether host 00:a0:80:00:2f:fe»

Слушаем трафик для определенного ip-адреса и порта

# tcpdump -nn host 192.168.146.130 and port 22

Сканируем диапазон портов

# nmap -sT -p 13722-13783 linuxbox

Надеюсь, что данной информации будет достаточно. Если возникли какие-то вопросы, то пишите их в комментарии.

Вся цель сети — получить трафик от точки A до точки B.

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

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

Это называется маршрутизацией.

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

Давайте посмотрим, как настроить статический маршрут в CentOS / RHEL 6,7, используя 2 метода:

1. Использование NetworkManager
2. Использование файлов конфигурации /etc/sysconfig/network-scripts

CentOS / RHEL 7 с NetworkManager

1. Используйте nmcli, nmtui или инструменты GUI для изменения маршрутов сети

2. Чтобы добавить маршрут с помощью nmcli, измените свойство ipv4.routes соединения.

Например, чтобы добавить маршрут к сети 10.20.30.0/24 через 192.168.100.10 для соединения с именем «external»:

# nmcli connection modify external ipv4.routes "10.20.30.0/24 192.168.100.10"

3. Чтобы добавить дополнительные маршруты, используйте модификатор + (плюс) в свойстве ipv4.routes подключения:

# nmcli connection modify external +ipv4.routes "10.0.1.0/24 192.168.100.20"

4. Несколько маршрутов могут быть добавлены сразу, разделенные запятой:

# nmcli connection modify external ipv4.routes "10.20.30.0/24 192.168.100.10, 10.0.1.0/24 192.168.100.20"

Удаление маршрутов с помощью nmcli

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

# nmcli connection modify external -ipv4.routes "10.0.1.0/24 192.168.100.20"

2. Чтобы удалить все маршруты, установите значение свойства ipv4.routes в значение «» (пусто):

# nmcli connection modify external ipv4.routes ""

3. После любых изменений, приведенных выше, подключите соединение, чтобы внести изменения.

Например, после изменения свойств соединения с именем «external»:

# nmcli connection up external

CentOS / RHEL 6,7 без NetworkManager

1. Чтобы добавить статические маршруты, создайте или измените файл route- в каталоге /etc/sysconfig/network-scripts/, где — это имя интерфейса, к которому относятся маршруты.

Каждый маршрут должен отображаться в одной строке и принимать базовую форму [network/prefix с] через , где [network/prefix — это адрес удаленной сети с префиксом, а — это IP-адрес следующего перехода.

Например, чтобы добавить маршрут в сеть 10.20.30.0/24 через 192.168.100.10 и маршрут к сети 10.0.1.0/24 через 192.168.10.20, чтобы оба были активны, когда eth0 поднялся:

# cat /etc/sysconfig/network-scripts/route-eth0 10.20.30.0/24 via 192.168.100.10 10.0.1.0/24 via 192.168.10.20

2. Интерфейс должен быть поднят снова, чтобы изменения вступили в силу:

# ifup eth0

3. Все версии RHEL, не использующие NetworkManager, также распознают старый синтаксис файлов route- :

ADDRESS[N]=X.X.X.X NETMASK[N]=Y.Y.Y.Y GATEWAY[N]=Z.Z.Z.Z

Например:

ADDRESS0=10.10.10.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.1.2 ADDRESS1=20.20.20.0 NETMASK1=255.255.255.0 GATEWAY1=192.168.1.2

Этот формат имеет три поля: GATEWAY, NETMASK и ADDRESS.

В каждом поле должен быть добавлен номер, указывающий, к какому маршруту он относится.

В приведенном выше примере Z.Z.Z.Z является IP-адресом шлюза.

Последующие записи должны быть последовательно пронумерованы (например, ADDRESS1 =, NETMASK1 =, GATEWAY1 =).

Обратите внимание, что несколько записей должны быть последовательно пронумерованы и не должны пропускать значение (за ним следует 1, а не число больше 1).



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: