
Как мы и ожидали в предыдущих уроках этого LFCE (Сертифицированный инженер Linux Foundation), в этой статье мы обсудим статическую и динамическую маршрутизацию IP-трафика для конкретных приложений.
Перво-наперво, давайте дадим несколько определений:
В iproute Пакет предоставляет набор инструментов для управления сетью и трафиком, которые мы будем использовать в этой статье, поскольку они представляют собой замену устаревших инструментов, таких как ifconfig и маршрут.
Центральное коммунальное предприятие в iproute люкс называется просто ip. Его основной синтаксис следующий:
# ip object command.
Где объект может быть только одним из следующих (показаны только наиболее часто встречающиеся объекты - вы можете обратиться к man ip для полного списка):
В то время как команда представляет собой конкретное действие, которое может быть выполнено с объектом. Вы можете запустить следующую команду, чтобы отобразить полный список команд, которые можно применить к определенному объекту:
# ip object help.
Например,
# Справка по IP-ссылке.
На изображении выше показано, например, что вы можете изменить статус сетевого интерфейса с помощью следующей команды:
# ip link set interface {вверх | вниз}
Для таких дополнительных примеров "ip‘Команда, прочтите 10 полезных команд ip для настройки IP-адреса
В этом примере мы отключим и включим eth1:
# IP link show. # ip link отключил eth1. # IP link show.
Если вы хотите снова включить eth1,
# ip link устанавливает eth1.
Вместо отображения всех сетевых интерфейсов мы можем указать один из них:
# ip link show eth1.
Что вернет всю информацию для eth1.
Вы можете просмотреть свою текущую основную таблицу маршрутизации с помощью любой из следующих 3 команд:
# ip route show. # маршрут -n. # netstat -rn.
Первый столбец в выходных данных трех команд указывает на целевую сеть. Выход IP-маршрут показать (после ключевого слова разработчик) также представляет сетевые устройства, которые служат физическим шлюзом к этим сетям.
Хотя в наши дни команда ip предпочтительнее маршрута, вы все равно можете обратиться к мужчине IP-маршрут и человек маршрут для подробного объяснения остальных столбцов.
Мы хотим проложить маршрут icmp (ping) пакеты от dev2 до dev4 и наоборот (обратите внимание, что обе клиентские машины находятся в разных сетях). Имя каждой сетевой карты вместе с соответствующим IPv4-адресом приводится в квадратных скобках.
Наша тестовая среда выглядит следующим образом:
Клиент 1: CentOS 7 [enp0s3: 192.168.0.17/24] - dev1. Маршрутизатор: Debian Wheezy 7.7 [eth0: 192.168.0.15/24, eth1: 10.0.0.15/24] - dev2. Клиент 2: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4.
Давайте посмотрим на таблицу маршрутизации в dev1 (поле CentOS):
# ip route show.
а затем измените его, чтобы использовать его enp0s3 Сетевая карта и подключение к 192.168.0.15 для доступа к хостам в сети 10.0.0.0/24:
# ip route добавить 10.0.0.0/24 через 192.168.0.15 dev enp0s3.
По сути, это гласит: «Добавьте маршрут к сети 10.0.0.0/24 через сетевой интерфейс enp0s3, используя 192.168.0.15 в качестве шлюза».
Аналогично в dev4 (поле openSUSE) для проверки связи с хостами в сети 192.168.0.0/24:
# ip route добавить 192.168.0.0/24 через 10.0.0.15 dev enp0s3.
Наконец, нам нужно включить пересылку в нашем маршрутизаторе Debian:
# эхо 1> / proc / sys / net / ipv4 / ip_forward.
А теперь пингуем:
и,
Чтобы сделать эти настройки постоянными при разных загрузках, отредактируйте /etc/sysctl.conf на маршрутизаторе и убедитесь, что net.ipv4.ip_forward переменная устанавливается в значение true следующим образом:
net.ipv4.ip_forward = 1.
Кроме того, настройте сетевые адаптеры на обоих клиентах (найдите файл конфигурации в /etc/sysconfig/network на openSUSE и /etc/sysconfig/network-scripts в CentOS - в обоих случаях он называется ifcfg-enp0s3).
Вот файл конфигурации из окна openSUSE:
BOOTPROTO = статический. РАССЫЛКА = 10.0.0.255. IPADDR = 10.0.0.18. NETMASK = 255.255.255.0. ШЛЮЗ = 10.0.0.15. ИМЯ = enp0s3. СЕТЬ = 10.0.0.0. ONBOOT = да.
Другой сценарий, в котором компьютер с Linux можно использовать в качестве маршрутизатора, - это когда вам нужно совместно использовать подключение к Интернету с частной локальной сетью.
Маршрутизатор: Debian Wheezy 7.7 [eth0: общедоступный IP-адрес, eth1: 10.0.0.15/24] - dev2. Клиент: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4.
В дополнение к настройке пересылки пакетов и статической таблицы маршрутизации в клиенте, как в предыдущем примере, нам нужно добавить несколько правил iptables в маршрутизатор:
# iptables -t nat -A РАЗМЕЩЕНИЕ -o eth0 -j МАСКЕРАД. # iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED, ESTABLISHED -j ACCEPT. # iptables -A ВПЕРЕД -i eth1 -o eth0 -j ПРИНЯТЬ.
Первая команда добавляет правило к РАЗМЕЩЕНИЕ в таблице nat (преобразование сетевых адресов), указывая, что сетевая карта eth0 должна использоваться для исходящих пакетов.
МАСКАРАД указывает, что эта сетевая карта имеет динамический IP и что перед отправкой пакета на «дикий дикий мир”Интернета, частный адрес источника пакета должен быть изменен на публичный IP-адрес маршрутизатора.
В локальной сети с большим количеством хостов маршрутизатор отслеживает установленные соединения в /proc/net/ip_conntrack поэтому он знает, куда отправить ответ из Интернета.
Только часть вывода:
# cat / proc / net / ip_conntrack.
показано на следующем снимке экрана.
Где выделены источник (частный IP-адрес openSUSE box) и пункт назначения (Google DNS) пакетов. Это результат бега:
# curl www.tecmint.com.
в окне openSUSE.
Как я уверен, вы уже догадались, маршрутизатор использует Google 8.8.8.8 в качестве сервера имен, что объясняет, почему пункт назначения исходящих пакетов указывает на этот адрес.
Примечание: Входящие пакеты из Интернета принимаются только в том случае, если они являются частью уже установленного соединения (команда №2), в то время как исходящие пакеты разрешены »свободный выход»(Команда №3).
Не забудьте сделать свои правила iptables постоянными, выполнив действия, описанные в Часть 8 - Настройка межсетевого экрана Iptables из этой серии.
В настоящее время наиболее часто используемым инструментом для динамической маршрутизации в Linux является квагга. Это позволяет системным администраторам реализовать на относительно недорогом сервере Linux те же функции, которые предоставляются мощными (и дорогостоящими) маршрутизаторами Cisco.
Сам инструмент не обрабатывает маршрутизацию, а скорее изменяет таблицу маршрутизации ядра, поскольку он изучает новые лучшие маршруты для обработки пакетов.
Поскольку это форк zebra, программы, разработка которой прекратилась некоторое время назад, по историческим причинам она поддерживает те же команды и структуру, что и zebra. Вот почему с этого момента вы увидите много упоминаний о зебре.
Обратите внимание, что невозможно охватить динамическую маршрутизацию и все связанные протоколы в одном статьи, но я уверен, что представленный здесь контент послужит вам отправной точкой для создания на.
Чтобы установить quagga в выбранный вами дистрибутив:
# aptitude update && aptitude install quagga [В Ubuntu] # yum update && yum install quagga [CentOS / RHEL] # zypper refresh && zypper install quagga [openSUSE]
Мы будем использовать ту же среду, что и в примере № 3, с той лишь разницей, что eth0 подключен к главному шлюзу-маршрутизатору с IP 192.168.0.1.
Далее редактируем /etc/quagga/daemons с,
зебра = 1. ripd = 1.
Теперь создайте следующие файлы конфигурации.
# /etc/quagga/zebra.conf. # /etc/quagga/ripd.conf.
и добавьте эти строки (замените на имя хоста и пароль по вашему выбору):
перезапуск службы квагги. имя хоста dev2. пароль quagga.
# перезапуск службы quagga.
Примечание: Тот ripd.conf - это файл конфигурации для протокола информации о маршрутизации, который предоставляет маршрутизатору информацию о том, какие сети могут быть достигнуты и как далеко (с точки зрения количества переходов) они находятся.
Обратите внимание, что это только один из протоколов, который можно использовать вместе с quagga, и я выбрал его для этого урока из-за простота использования и то, что большинство сетевых устройств поддерживают его, хотя у него есть недостаток в передаче учетных данных в простой форме. текст. По этой причине вам необходимо назначить соответствующие разрешения для файла конфигурации:
# chown quagga: quaggavty /etc/quagga/*.conf. # chmod 640 /etc/quagga/*.conf
В этом примере мы будем использовать следующую настройку с двумя маршрутизаторами (обязательно создайте файлы конфигурации для роутер # 2 как объяснялось ранее):
Важный: Не забудьте повторить следующую настройку для обоих маршрутизаторов.
Подключиться к зебре (прослушивание порта 2601), который является логическим посредником между маршрутизатором и ядром:
# telnet localhost 2601.
Введите пароль, который был установлен в /etc/quagga/zebra.conf файл, а затем включите конфигурацию:
включить. настроить терминал.
Введите IP-адрес и сетевую маску каждой сетевой карты:
меж eth0. IP-адрес 192.168.0.15. меж eth1. IP-адрес 10.0.0.15. выход. выход. написать.
Теперь нам нужно подключиться к РВАТЬ терминал демона (порт 2602):
# telnet localhost 2602.
Введите имя пользователя и пароль, как настроено в /etc/quagga/ripd.conf файл, а затем введите следующие команды полужирным шрифтом (комментарии добавлены для пояснения):
включить включает команду привилегированного режима. настроить терминал переходит в режим конфигурации. Эта команда - первый шаг к настройке. роутер включает RIP. сеть 10.0.0.0/24 устанавливает интерфейс включения RIP для сети 10.0.0.0/24. выходвыходнаписать записывает текущую конфигурацию в файл конфигурации.
Примечание: В обоих случаях конфигурация добавляется к строкам, которые мы добавили ранее (/etc/quagga/zebra.conf и /etc/quagga/ripd.conf).
Наконец, снова подключитесь к сервису zebra на обоих маршрутизаторах и обратите внимание на то, что на каждом из них есть «научился”Маршрут к сети, которая находится позади другой, и которая является следующим переходом, чтобы добраться до этой сети, путем выполнения команды показать IP-маршрут:
# показать IP-маршрут.
Если вы хотите попробовать разные протоколы или настройки, вы можете обратиться к Сайт проекта Quagga для дальнейшей документации.
В этой статье мы объяснили, как настроить статическую и динамическую маршрутизацию с помощью маршрутизатора (ов) Linux. Не стесняйтесь добавлять столько маршрутизаторов, сколько хотите, и экспериментируйте, сколько хотите. Не стесняйтесь обращаться к нам, используя контактную форму ниже, если у вас есть какие-либо комментарии или вопросы.