Компьютер с linux как маршрутизатор

Содержание
  1. Настройка Linux-шлюза/маршрутизатора, руководство для не сетевых администраторов
  2. Предварительная работа, настройка оборудования
  3. Если у вас нет всего этого оборудования …
  4. Настройка Linux GW: NATting и пересылка
  5. Сохранение правил пересылки
  6. Как превратить Linux-сервер в маршрутизатор для статической и динамической обработки трафика — Часть 10
  7. Содержание:
  8. Знакомство с программой сертификации Linux Foundation
  9. Расширенная настройка IP и сетевых устройств
  10. Пример 1: Отключение и включение сетевого интерфейса
  11. Пример 2: Отображение основной таблицы маршрутизации
  12. Пример 3: Использование сервера Linux для маршрутизации пакетов между двумя частными сетями
  13. Пример 4: Использование сервера Linux для маршрутизации пакетов между частной сетью и Интернетом
  14. Динамическая маршрутизация с Quagga
  15. Установка Quagga в Linux
  16. Пример 5: Настройка quagga для динамической маршрутизации IP-трафика
  17. Вывод

Настройка Linux-шлюза/маршрутизатора, руководство для не сетевых администраторов

Главное меню » Linux » Настройка Linux-шлюза/маршрутизатора, руководство для не сетевых администраторов

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

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

  • DHCP для управления арендой
  • DNS для перевода доменов в IP
  • NAT, чтобы мультиплексировать одно соединение
  • Переадресация сервиса, выставление внутренних сервисов во внешнюю сеть

К счастью, Linux поддерживает все это:

  • ISC для DHCP
  • bind9 для DNS
  • iptables для NAT
  • снова iptables, для пересылки услуг

Мы будем настраивать каждую из этих служб в следующих постах, а пока:

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

Перед настройкой каких-либо служб вам понадобятся две вещи: две сетевые карты, одна для исходящего соединения, а другая для (коммутируемой) локальной сети, и способ сообщить серверу, что вы хотите, чтобы весь трафик из сети 1 был перенаправлен в сеть 2. Возможно, вы захотите установить более двух карт на случай, если вам потребуется маршрутизировать несколько локальных сетей. Мы увидим это позже.

Вам также понадобится ОС. Мы выбрали Ubuntu, потому что она очень проста в установке и содержит все необходимое программное обеспечение в репозиториях, но вы можете использовать любой другой дистрибутив, если вам это нужно.

Кроме того, в этой статье мы будем использовать такую ​​настройку:

  • WAN доступ через eth0, адрес DHCP
  • LAN маршрутизация в eth1, сеть 192.168.25.1/24

Если у вас нет всего этого оборудования …

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

  1. Начните с создания того, что будет вашим маршрутизатором VM.
  2. Включите первый сетевой адаптер. Этот должен видеть ваш физический маршрутизатор (т.е. подключаться к глобальной сети).
  3. Включите второй сетевой адаптер. Используйте опцию «Внутренняя сеть» в поле «Прикреплено к». Это будет ваш интерфейс локальной сети.
  4. Создайте вторую виртуальную машину. Этот будет вашим клиентом.
  5. Включите один сетевой адаптер, также подключенный к внутренней сети. Имя этой сети должно совпадать с именем другой виртуальной машины.

Теперь все готово, с помощью этой виртуальной настройки вы можете начать настройку маршрутизатора.

Настройка Linux GW: NATting и пересылка

Для нашего Linux GW такие сервисы, как DNS и DHCP, хороши, но реальное подключение намного важнее. Давайте настроим функции NAT и переадресации соединений нового маршрутизатора, затем мы можем проверить, правильно ли работает наша установка, пропингуя IP одной локальной сети из другой.

Мы сделаем это, настроив NAT с помощью iptables. Нам также нужно будет настроить ОС для переадресации соединений с одной сетевой карты на другую:

Нам также нужно будет настроить IP для eth0, так как не будет DHCP-сервера (мы являемся сервером!). Откройте/etc/network/interfaces и добавьте что-то вроде этого:

После того, как все проверено, перезапустите сетевые сервисы, как ниже:

Все готово, теперь просто подключите ваш компьютер к новому маршрутизатору и протестируйте его. Не забудьте вручную установить IP-адрес в том же диапазоне сети, что и у маршрутизатора, поскольку в данный момент DHCP отсутствует. Это может быть полезно для устранения проблемы.

Читайте также:  Линукс для андроид разработчика

На своем клиентском ПК установите свой IP-адрес:

Проверьте, установлен ли у вас IP:

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

Обратите внимание, что вам может потребоваться обновить все (т.е. перезапустить сеть и вручную назначить свой IP-адрес) после подключения кабеля.

Опять же, если вы получите ответ, у вас есть связь с маршрутизатором. До сих пор мы не тестировали ни правила iptables, ни переадресацию, поэтому любая проблема на этом этапе должна иметь конфигурацию IP. Если все прошло хорошо, пришло время проверить правила NAT и переадресацию.

Это должно дать вам ошибку. Конечно, поскольку нет DHCP, маршрут не установлен. Давайте вручную установим маршрут в клиенте:

Магия! Работает! Если это не так, у вас есть проблема либо в конфигурации NAT, либо в IP-пересылке маршрутизатора. Вы можете проверить это с помощью wireshark: если эхо-запросы достигают сервера, но они никогда не получают ответ, тогда это NAT, то есть он может пересылать IP-пакеты на eth1 на eth0, но у маршрутизатора нет NAT, и он не знает, как направить ответ обратно. Если эхо-запросы никогда не достигают eth0, тогда у вас проблема с пересылкой IP.

Сохранение правил пересылки

Чтобы правила пересылки сохранялись после перезагрузки, нам нужно сначала изменить /etc/sysctl.conf, чтобы разрешить пересылку IP. Это просто вопрос раскомментирования этой строки:

У нас также будет много правил iptables, которые нам нужно настроить во время загрузки. Мы создали скрипт в /home/router/set_forwarding.sh, который также связали с /etc/init.d/rc.local, поэтому он запускается всякий раз, когда загружается система.

В следующий раз мы перейдем к чему-то более сложному: установке DNS-сервера и использованию доменов вместо IP-адресов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Как превратить Linux-сервер в маршрутизатор для статической и динамической обработки трафика — Часть 10

Как мы и ожидали в предыдущих уроках этого LFCE (Сертифицированный инженер Linux Foundation), в этой статье мы обсудим статическую и динамическую маршрутизацию IP-трафика для конкретных приложений.Зна

Содержание:

Как мы и ожидали в предыдущих уроках этого LFCE (Сертифицированный инженер Linux Foundation), в этой статье мы обсудим статическую и динамическую маршрутизацию IP-трафика для конкретных приложений.

Знакомство с программой сертификации Linux Foundation

Перво-наперво, давайте определимся прямо:

  1. Проще говоря, пакет это базовая единица, которая используется для передачи информации в сети. Сети, использующие TCP / IP в качестве сетевого протокола, следуют тем же правилам передачи данных: фактическая информация разбивается на пакеты, состоящие как из данных, так и из адреса, на который она должна быть отправлена.
  2. Маршрутизация это процесс «руководство»Данные от источника до места назначения внутри сети.
  3. Статическая маршрутизация требует настраиваемого вручную набора правил, определенных в таблице маршрутизации. Эти правила являются фиксированными и используются для определения пути, через который должен проходить пакет при передаче от одной машины к другой.
  4. Динамическая маршрутизация, или умная маршрутизация (при желании) означает, что система может автоматически изменять при необходимости маршрут, по которому следует пакет.

Расширенная настройка IP и сетевых устройств

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

Центральное коммунальное предприятие в iproute люкс называется просто ip. Его основной синтаксис выглядит следующим образом:

# команда ip object

где объект может быть только одним из следующих (показаны только наиболее часто встречающиеся объекты — вы можете обратиться к man ip для полного списка):

  1. ссылка: сетевое устройство.
  2. адрес: протокол (IP или IPv6) адрес устройства.
  3. маршрут: запись в таблице маршрутизации.
  4. правило: правило в базе данных политик маршрутизации.

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

# справка по IP-ссылке

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

# настройка интерфейса ip link

Для таких дополнительных примеров «ip‘, Прочтите 10 полезных команд‘ ip ’для настройки IP-адреса

Пример 1: Отключение и включение сетевого интерфейса

В этом примере мы отключим и включим eth1:

Читайте также:  Приложение calendars для windows

# ip link show # ip link set eth1 down # ip link show

Если вы хотите снова включить eth1,

# ip link set eth1 up

Вместо отображения всех сетевых интерфейсов мы можем указать один из них:

# ip link show eth1

Что вернет всю информацию для eth1.

Пример 2: Отображение основной таблицы маршрутизации

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

# ip route show # route -n # netstat -rn

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

Хотя в наши дни команда ip предпочтительнее маршрута, вы все равно можете обратиться к мужчине ip-маршрут а также человек маршрут для подробного объяснения остальных столбцов.

Пример 3: Использование сервера Linux для маршрутизации пакетов между двумя частными сетями

Мы хотим проложить маршрут 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):

а затем измените его, чтобы использовать его 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 следующим образом:

Кроме того, настройте сетевые адаптеры на обоих клиентах (найдите файл конфигурации в / и т.д. / sysconfig / сеть на openSUSE и / и т.д. / sysconfig / сетевые сценарии в CentOS — в обоих случаях он называется ifcfg-enp0s3).

Вот файл конфигурации из окна openSUSE:

BOOTPROTO = статический BROADCAST = 10.0.0.255 IPADDR = 10.0.0.18 NETMASK = 255.255.255.0 GATEWAY = 10.0.0.15 NAME = enp0s3 NETWORK = 10.0.0.0 ONBOOT = да

Пример 4: Использование сервера Linux для маршрутизации пакетов между частной сетью и Интернетом

Другой сценарий, в котором компьютер с 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 POSTROUTING -o eth0 -j MASQUERADE # iptables -A FORWARD -i eth0 -o eth1 -m state —state RELATED, ESTABLISHED -j ACCEPT # iptables -A FORWARD -i eth1 -o eth0 -j ПРИНЯТЬ

Первая команда добавляет правило к РАЗМЕЩЕНИЕ в таблице nat (преобразование сетевых адресов), указывая, что сетевая карта eth0 должна использоваться для исходящих пакетов.

МАСКАРАД указывает, что эта сетевая карта имеет динамический IP и что перед отправкой пакета на «дикий дикий мир”Интернета, частный адрес источника пакета должен быть изменен на публичный IP-адрес маршрутизатора.

В локальной сети с большим количеством хостов маршрутизатор отслеживает установленные соединения в / proc / net / ip_conntrack так что он знает, куда отправить ответ из Интернета.

Только часть вывода:

# cat / proc / net / ip_conntrack

показано на следующем снимке экрана.

Где выделены источник (частный IP-адрес openSUSE box) и пункт назначения (Google DNS) пакетов. Это результат бега:

в окне openSUSE.

Как я уверен, вы уже догадались, маршрутизатор использует Google 8.8.8.8 в качестве сервера имен, что объясняет, почему пункт назначения исходящих пакетов указывает на этот адрес.

Запись: Входящие пакеты из Интернета принимаются только в том случае, если они являются частью уже установленного соединения (команда №2), в то время как исходящие пакеты разрешены »свободный выход»(Команда №3).

Читайте также:  Windows defender как разрешить java

Не забудьте сделать свои правила iptables постоянными, выполнив действия, описанные в части 8 — Настройка брандмауэра Iptables этой серии.

Динамическая маршрутизация с Quagga

В настоящее время наиболее часто используемым инструментом для динамической маршрутизации в Linux является квагга. Это позволяет системным администраторам реализовать на относительно недорогом сервере Linux те же функции, что и мощные (и дорогие) маршрутизаторы Cisco.

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

Поскольку это форк zebra, программы, разработка которой прекратилась некоторое время назад, по историческим причинам она поддерживает те же команды и структуру, что и zebra. Вот почему с этого момента вы увидите много упоминаний о зебре.

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

Установка Quagga в Linux

Чтобы установить 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.

Далее редактируем / и т. д. / quagga / демоны с,

зебра = 1 рипд = 1

Теперь создайте следующие файлы конфигурации.

и добавьте эти строки (замените имя хоста и пароль на ваш выбор):

сервис quagga перезапустить имя хоста dev2 пароль quagga

# перезапуск службы quagga

Запись: Который ripd.conf — это файл конфигурации для протокола информации о маршрутизации, который предоставляет маршрутизатору информацию о том, какие сети могут быть доступны и как далеко (с точки зрения количества переходов) они находятся.

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

# chown quagga: quaggavty /etc/quagga/*.conf # chmod 640 /etc/quagga/*.conf

Пример 5: Настройка quagga для динамической маршрутизации IP-трафика

В этом примере мы будем использовать следующую настройку с двумя маршрутизаторами (обязательно создайте файлы конфигурации для роутер # 2 как объяснялось ранее):

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

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

# telnet localhost 2601

Введите пароль, который был установлен в /etc/quagga/zebra.conf файл, а затем включите конфигурацию:

включить настроить терминал

Введите IP-адрес и сетевую маску каждой сетевой карты:

inter eth0 ip адрес 192.168.0.15 inter 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-маршрут:

Если вы хотите попробовать другие протоколы или настройки, вы можете обратиться к сайту проекта Quagga для получения дополнительной документации.

Вывод

В этой статье мы объяснили, как настроить статическую и динамическую маршрутизацию с помощью маршрутизатора (ов) Linux. Не стесняйтесь добавлять столько роутеров, сколько хотите, и экспериментируйте сколько хотите. Не стесняйтесь обращаться к нам, используя контактную форму ниже, если у вас есть какие-либо комментарии или вопросы.

Станьте сертифицированным инженером Linux

Источник

Оцените статью