8-900-374-94-44
[email protected]
Slide Image
Меню

Linux маршрутизатор: Linux . (debian ubuntu linux route iproute iptables nat)

Содержание

Как настроить маршрутизацию в Linux

Маршруты, которые необходимы для поставки пакетов до конечного назначения, настраиваются в интерфейсе или маршрутизаторе. Если перед компьютером стоит задача отправить пакет в сеть, он смотрит таблицу маршрутизации, в которой перечислены IP-адреса пунктов назначения и адреса интерфейсов и роутеров в домашней сети, которые могут отправить пакет по нужному адресу. Если для цели маршрут не указан, то в первую очередь задействуется так называемый шлюз по умолчанию или маршрут по умолчанию. Точно такая же картина наблюдается на роутере. Устройство смотрит на IP-адрес назначения и сверяет его со своей таблицей маршрутизации, а потом отправляет дальше. Дальше на примере рассмотрим, как настроить определенные маршруты и создать новые.

Смотрим таблицу маршрутизации

Прежде чем начать что-либо менять, необходимо понять, какие правила уже используются. Для этого в операционной системе Линукс предусмотрено несколько команд. Для этого используем специальную команду route:

$ route

Именно так выглядит таблица маршрутизации linux. В ней предусмотрена простая информация, которой не всегда достаточно чтобы понять суть дела. Для получения более детальной информации необходимо пользоваться командой routel:

$ routel

Здесь вы сможете увидеть IP адрес (target), IP адрес шлюза (gateway), IP отправителя (source), протокол, и даже сетевой интерфейс. Но есть более удобый способ посмотреть таблицу маршрутизации linux при помощи команды IP:

$ ip route

Мы видим результат, который похож с выводом предыдущей команды. Поскольку результата предоставлен в не самым удобном виде, можно использовать в качестве аргумента для ip route add или ip route del. Поверьте, это очень удобно. Так вы увидите в качестве шлюза по умолчанию везде используется 192.168.1.1. Дальше поговорим, что означает вывод этой команды:

  • default — вариант по умолчанию. Здесь должен быть ip адрес цели или маска подсети;
  • via 192.168.1.1 — указывает через какой шлюз мы можем добраться до этой цели, у нас это 192. 168.1.1;
  • dev enp2s0 — сетевой интерфейс, с помощью которого будет доступен этот шлюз;
  • proto static — означает, что маршрут был установлен администратором, значение kernel значит что он был установлен ядром;
  • metric — это приоритет маршрута, чем меньше значение — тем выше приоритет.

Дальше рассмотрим, как происходит настройка маршрутов Linux.

Настраиваем маршруты

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

$ ip route add default via 192.168.1.1

Так вы можете добавить маршрут для любого IP адреса, например, для 243.143.5.25:

$ sudo ip route add 243.143.5.25 via 192.168.1.1

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

Например, в системах семейства Red Hat есть конфигурационные файлы /etc/sysconfig/network-scripts/route-ethX. Каждый файл может описывать несколько маршрутов, например:

GATEWAY=10.10.0.1

NETMASK=255.0.0.0
IPADDR=10.10.0.22

В этом файле конфигурации используется gateway, это щлюз для интерфейса, netmask — маска сети, а ipaddr — ip адрес интерфейса. В Debian и основанных на нем дистрибутивах можно настроить маршруты в файле /etc/network/interfaces. Здесь команда route добавляется в секцию iface. Например:

up route add -net 10.10.0.0 netmask 255.0.0.0 gw 10.10.0.1

При помощи опии -net мы указываем целевую сеть, netmask — это маска сети, а gw — шлюз. Ничего сложного в этом нет. Теперь добавленные маршруты останутся даже после перезагрузки. 

Так мы рассмотрели как работает маршрутизация в Linux, как выполняется настройка маршрутизации в linux, а также зачем это нужно.

НОУ ИНТУИТ | Лекция | Маршрутизация в Linux

< Лекция 9 || Лекция 10: 123 || Лекция 11 >

Аннотация: Даны краткие сведения об использовании компьютера с Linux в качестве маршрутизатора и расширенных возможностях маршрутизации, в частности маршрутизация по IP-адресу источника; описаны особенности выбора локального исходящего IP-адреса. Приведены примеры маршрутизации виртуальных локальных сетей, объединения локальных сетей на основе маршрутизаторов, задания локального исходящего IP-адреса и добавление альтернативного маршрута для узла-источника на шлюзе

Ключевые слова: операционная система, сетевой пакет, компьютер, удаление узла, ПО, параметр, таблица маршрутизации, локальный адрес, дамп, маршрутизация, балансировка нагрузки, расширение функции, множества, значение, команда, операции, TOS, таблица, table, Local, имя таблицы, адрес, порт, шлюз, маршрут, ARP, протокол arp, MAC-адрес, сеть, внутренняя сеть, анализ трафика, интерфейс, ICMP, ping

Содержание

  1. intuit.ru/2010/edi»>Включение функции пересылки проходящих пакетов.
  2. Выбор IP-адреса для исходящих соединений.
  3. Маршрутизация на основе правил и таблиц.

Включение функции пересылки проходящих пакетов

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

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

По умолчанию сетевая подсистема Linux обрабатывает пакеты, предназначенные данному узлу или созданные данным узлом;

функция обработки пакетов, в которых не указан IP-адрес данной станции как источник или приемник (forwarding, пересылка пакетов ) отключена. Для включения функции пересылки проходящих пакетов необходимо установить в 1 значение, записанное в файле ip_forward псевдофайловой системы proc:

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

Данная настройка будет действовать до перезагрузки компьютера. Для восстановления конфигурации нужно после перезагрузки выполнять указанную команду (указать ее в файле /etc/rc.local ) или лучше установить в файле /etc/sysctl.conf следующий параметр:

net.ipv4.ip_forward=1
Пример 10.1.Объединение виртуальных локальных сетей с помощью маршрутизатора на основе Linux.

Для того, чтобы в примере 5.6. «Постоянные сетевые конфигурации (на примере Debian/GNU Linux)» «Постоянные сетевые конфигурации» подсети 192.168.1.0/24 и 192.168.2.0/24 могли взаимодействовать друг с другом через указанный в примере компьютер Linux (выступает в качестве шлюза для данных подсетей) необходимо:

  • intuit.ru/2010/edi»>на данном компьютере включить функцию пересылки пакетов одним из описанных выше способов;
  • на всех компьютерах первой подсети указать в качестве шлюза для второй подсети адрес 192.168.1.4 (разумеется, также можно указать данный адрес как шлюз по умолчанию), а для компьютеров второй подсети — шлюз для первой подсети 192.168.2.4.

Таблица маршрутизации шлюза:

# ip route show
192.168.2.0/24 dev vlan2  proto kernel  scope link  src 192.168.2.4 
192.168.1.0/24 dev vlan1  proto kernel  scope link  src 192.168.1.4

Эти записи добавляются в таблицу маршрутизации шлюза автоматически (например, если на интерфейсе vlan1 установлен IP-адрес 192.168.1.4/24, то система полагает, что сеть 192.168.1.0/24 непосредственно подключена к данному интерфейсу). Таким образом, если на интерфейс vlan1 шлюза приходят сетевые пакеты, в которых адрес назначения принадлежит второй подсети, то шлюз, согласно таблицы маршрутизации, передает эти пакеты в сеть с интерфейса vlan2.

Пример 10.2.Объединение двух сетей на основе маршрутизаторов

Пусть необходимо обеспечить взаимодействие сетей 192.168.1.0/24 и 192.168.2.0/24 (рис. 10.1.), соединенных интерфейсами маршрутизаторов, установленных в каждой из сетей (интерфейсы маршрутизаторов в сетях имеют адреса 192.168.1.1 и 192.168.2.1 соответственно).

Рис. 10.1.

Объединение двух сетей на основе маршрутизаторов

Для решения данной задачи ( рис. 10.1.) необходимо установить на интерфейсы, связывающие маршрутизаторы друг с другом адреса из одной произвольно выбранной подсети (192.168.3.0/24, на первый — 192.168.3.1, на второй — 192.168.3.2) и добавить статические маршруты в таблицы маршрутизаторов (для первого маршрутизатора — для сети 192.168.2.0/24 через узел 192.168.3.2, для второго — для сети 192.168.1.0/24 через узел 192. 168.3.1).

К примеру таблица маршрутизации первого маршрутизатора (при использовании Linux) будет иметь вид:

# ip route show
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1 
192.168.3.0/24 dev eth2  proto kernel  scope link  src 192.168.3.1
192.168.2.0/24 via 192.168.3.2 dev eth2

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

Дальше >>

< Лекция 9 || Лекция 10: 123 || Лекция 11 >

Настройка Linux в качестве маршрутизатора (IP-переадресация) | Linode

&nbspresults match&nbsp

&nbspresults

Нет результатов

Фильтры

Фильтры ( )

Все

0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox. count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>

Добавить теги

Все

0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>

Добавить авторов

Все

0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>

Обновлено , от Linode

Traducciones al Español

Estamos traduciendo nuestros guías y tutoriales al Español. Эс posible que usted esté viendo una traducción generada автоматический. Estamos trabajando con traductores profesionales пункт verificar лас traducciones де нуэстро ситио сети. Эсте проект es un trabajo en curso.

Создать учетную запись Linode чтобы попробовать это руководство с кредитом в долларах США.

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

Компьютерная сеть представляет собой совокупность компьютерных систем, которые могут взаимодействовать друг с другом. Для связи с компьютером, находящимся в другой сети , системе нужен способ подключения к этой другой сети. Маршрутизатор — это система, которая действует как посредник между несколькими различными сетями. Он получает трафик из одной сети, который в конечном итоге предназначен для другой. Он может определить, куда должен быть доставлен конкретный пакет, а затем переслать этот пакет через соответствующий сетевой интерфейс.

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

Вместо того, чтобы использовать одно из этих готовых решений, вы можете создать свое собственное, используя любой сервер Linux, например экземпляр Linode Compute. Используя программное обеспечение для маршрутизации, такое как iptables, вы полностью контролируете настройку маршрутизатора и брандмауэра в соответствии с вашими индивидуальными потребностями. В этом руководстве рассказывается, как настроить систему Linux в качестве базового маршрутизатора, включая включение переадресации IP и настройку iptables.

Варианты использования облачного маршрутизатора

Многие рабочие нагрузки выигрывают от настраиваемых решений маршрутизации или переадресации портов, включая рабочие нагрузки, размещенные на облачных платформах, таких как Linode. Например, для приложений, ориентированных на безопасность, обычной практикой является соединение большинства своих систем через частную сеть, такую ​​как VLAN. Этим системам может потребоваться доступ к внешней сети, такой как другие VLAN или общедоступный Интернет. Вместо того, чтобы предоставлять каждому свой собственный интерфейс к другой сети, одна система в частной сети может действовать как маршрутизатор. Маршрутизатор настроен с несколькими сетевыми интерфейсами (один для частной VLAN и один для другой сети) и перенаправляет пакеты с одного интерфейса на другой. Это может значительно упростить мониторинг, контроль и защиту трафика, поскольку все это можно сделать из одной системы. Вычислительные экземпляры Linode могут быть настроены с использованием до 3 интерфейсов, каждый из которых подключается либо к общедоступному Интернету, либо к частной VLAN.

  • Подключите системы в частной VLAN к общедоступному Интернету.
  • Соедините системы в двух отдельных частных VLAN.
  • Переадресация IPv6-адресов из маршрутизируемого диапазона /56 .

Настройка системы Linux в качестве маршрутизатора

  1. Развертывание не менее 2 вычислительных экземпляров (или других виртуальных машин) в том же центре обработки данных. Все системы должны быть подключены к одной и той же частной сети, такой как VLAN. Одна система должна быть назначена маршрутизатором и также должна быть подключена к общедоступному Интернету или другой частной сети. См. Развертывание вычислительных экземпляров.
  2. Включить переадресацию IP-адресов на вычислительном экземпляре, назначенном маршрутизатором. См. Включение IP-переадресации.
  3. Настройте программное обеспечение маршрутизации на том же экземпляре (маршрутизаторе). В этом руководстве рассматривается использование iptables, но вы также можете использовать другое программное обеспечение. См. Настройка iptables.
  4. Определите шлюз в каждой системе кроме маршрутизатора. Этот шлюз должен указывать на IP-адрес маршрутизатора в этой сети. См. Определение шлюза.

Развертывание вычислительных экземпляров

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

  1. Разверните 2 или более вычислительных экземпляра и назначьте один из них в качестве маршрутизатора. Каждый из них должен быть развернут в одном и том же регионе. На странице развертывания вы можете пока пропустить раздел VLAN. См. Создание вычислительного экземпляра, чтобы узнать, как развернуть вычислительные экземпляры Linode.

  2. На каждом вычислительном экземпляре , кроме маршрутизатора , отредактируйте профиль конфигурации экземпляра. Информацию о просмотре и редактировании профилей конфигурации см. в разделе Управление профилями конфигурации.

    • На вычислительном экземпляре, обозначенном как маршрутизатор , оставьте eth0 в качестве общедоступного Интернета и настройте eth2 как VLAN. Введите имя для VLAN и назначьте ей IP-адрес из любого диапазона подсети, который вы хотите использовать. Например, если вы хотите использовать 10.0.2.0/24 диапазон подсети, назначьте IP-адрес 10.0.2.1/24 . По соглашению маршрутизатору должно быть присвоено значение 1 в последнем сегменте.
    • На каждом вычислительном экземпляре , отличном от маршрутизатора , удалите все существующие сетевые интерфейсы. Установите eth0 в качестве VLAN, выберите только что созданную VLAN и введите другой IP-адрес в желаемой подсети (например, 10.0.2.2/24 и 10.0.2.3/24 ).
  3. Убедитесь, что Network Helper включен, и перезагрузите каждый вычислительный экземпляр, чтобы изменения вступили в силу.

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

    • Пропингуйте IPv4-адрес VLAN другой системы в той же VLAN. Каждый вычислительный экземпляр должен иметь возможность пинговать IP-адреса всех других экземпляров в этой VLAN.

       эхо-запрос 10.0.2.1
       
    • Пропингуйте IP-адрес или веб-сайт системы в общедоступном Интернете. Этот эхо-запрос должен быть успешным только для вычислительного экземпляра, настроенного в качестве маршрутизатора.

       ping linode.com
       

Включить переадресацию IP

Переадресация IP играет фундаментальную роль на маршрутизаторе. Это функция, которая позволяет маршрутизатору перенаправлять трафик с одного сетевого интерфейса на другой сетевой интерфейс. Таким образом, он позволяет компьютерам в одной сети подключаться к компьютеру в другой сети (при настройке вместе с программным обеспечением маршрутизации). Переадресация адресов IPv4 и IPv6 контролируется ядром Linux. Следующие параметры ядра используются для включения или отключения переадресации IPv4 и IPv6 соответственно.

  • IPv4: net. ipv4.ip_forward или net.ipv4.conf.all.forwarding
  • IPv6: net.ipv6.conf .all.forwarding

По умолчанию переадресация отключен в большинстве систем Linux. Чтобы настроить Linux в качестве маршрутизатора, это необходимо включить. Чтобы включить переадресацию, соответствующий параметр должен быть установлен на 1 . Значение 0 указывает, что переадресация отключена. Чтобы обновить эти параметры ядра, отредактируйте файл /etc/sysctl.conf , как показано в шагах ниже.

  1. Войдите в систему Linux, которую вы собираетесь использовать в качестве маршрутизатора. Вы можете использовать SSH или Lish (если вы используете вычислительный экземпляр Linode).

  2. Определите, включена или отключена переадресация IPv4 в данный момент. Команда ниже выводит значение данного параметра. Значение 1 указывает, что параметр включен, а 0 указывает, что он отключен. Если вы собираетесь настроить переадресацию IPv6, проверьте также этот параметр ядра.

     судо sysctl net.ipv4.ip_forward
     

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

  3. Откройте файл /etc/sysctl.conf с помощью предпочитаемого редактора командной строки, например nano.

     судо нано /etc/sysctl.conf
     
  4. Найдите строку, соответствующую типу переадресации, которую вы хотите включить, раскомментируйте ее и установите значение 1 . Кроме того, вы можете добавить строки в любом месте файла.

    Файл: /etc/sysctl.conf
     1
    2
    3
    4
    5
    6
    7
     
     ...
    ## Настроить переадресацию IPv4
    net.ipv4.ip_forward = 1
    ## Настроить переадресацию IPv6
    net.ipv6.conf.all. forwarding = 1
    ... 
  5. После сохранения изменений примените их, выполнив следующую команду или перезагрузив компьютер.

     судо sysctl -p
     

Настройка iptables

Утилита iptables может служить как брандмауэром (через стандартную таблицу filter ), так и маршрутизатором (например, при использовании таблицы nat ). В этом разделе рассказывается, как настроить iptables для работы в качестве базового маршрутизатора. При желании вы можете использовать любой другой брандмауэр или программное обеспечение для маршрутизации, например nftables или коммерческое приложение.

  1. Войдите в систему Linux, которую вы собираетесь использовать в качестве маршрутизатора. Вы можете использовать SSH или Lish (если вы используете вычислительный экземпляр Linode).

  2. Просмотрите существующие правила iptables. Если вы используете новую установку Linux и у вас нет предварительно настроенных правил, вывод приведенной ниже команды должен быть пустым.

     iptables-сохранить
     

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

     iptables-F
    iptables -X
    iptables -t физ -F
    iptables -t физ -X
    iptables -t мангл -F
    iptables -t мангл -X
    iptables -P ВВОД ПРИНЯТЬ
    iptables -P ВЫВОД ПРИНЯТЬ
    iptables -P ПЕРЕДАТЬ ПРИНЯТЬ
     
  3. Настройте iptables, чтобы разрешить переадресацию портов. Это настройка по умолчанию для многих систем.

     iptables -A ВПЕРЕД -j ПРИНЯТЬ
     
  4. Далее настройте NAT (преобразование сетевых адресов) на iptables. Это изменяет детали IP-адреса в сетевых пакетах, позволяя всем системам в частной сети использовать один и тот же общедоступный IP-адрес маршрутизатора. Добавьте следующее правило iptables, заменив 10. 0.2.0/24 с подсетью вашей частной VLAN.

     iptables -t nat -s 10.0.2.0/24 -A POSTROUTING -j MASQUERADE
     

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

     iptables -t nat -A POSTROUTING -j MASQUERADE
     
  5. По умолчанию правила iptables эфемерны. Чтобы сделать эти изменения постоянными, установите пакет iptables-persistent . Когда вы делаете это, правила сохраняются в течение /etc/iptables/rules.v4 rules.v6 для IPv6) загружаются при загрузке системы. Вы можете продолжать вносить изменения в iptables как обычно. Когда вы будете готовы к сохранению, сохраните вывод iptables-save в файл /etc/iptables/rules.v4 (или rules.v6 ). Дополнительные сведения см. в соответствующем разделе руководства «Управление сетевым трафиком с помощью iptables».

     iptables-сохранить | судо тройник /etc/iptables/rules. v4
     

Определение шлюза

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

  1. Войдите в Cloud Manager и отключите Network Helper для каждого развернутого вами вычислительного экземпляра без маршрутизатора. Хотя Network Helper был полезен для автоматической настройки IP-адресов VLAN, файлы конфигурации, контролируемые Network Helper, теперь необходимо редактировать вручную.

  2. Войдите в каждую систему Linux, которая , а не , назначенный маршрутизатором. Вы можете использовать SSH или Lish (если вы используете вычислительный экземпляр Linode).

  3. Отредактируйте файл конфигурации, содержащий настройки интерфейса частной VLAN. Это имя и расположение этого файла зависят от используемого вами дистрибутива Linux. См. серию руководств по настройке сети вручную в вычислительном экземпляре и выберите конкретное руководство для своего дистрибутива. Для системы, работающей с ifupdown в Debian 10, сетевая конфигурация обычно хранится в течение /etc/network/interfaces .

     sudo nano /etc/network/interfaces
     
  4. В этом файле настройте параметр, определяющий шлюз для интерфейса VLAN. Значение должно быть установлено на IP-адрес, назначенный интерфейсу VLAN маршрутизатора , например 10.0.2.1 , если вы использовали пример в этом руководстве. Для системы, работающей с ifupdown в Debian 10, вы можете добавить параметр gateway в расположение, показанное в примере ниже.

    Файл: /etc/network/interfaces
     1
    2
    3
    4
     
     ...
    iface eth0 инет статический
        адрес 10.0.2.2/24
        gateway 10.0.2.1 
  5. После сохранения этих настроек перезапустите вычислительный экземпляр или выполните соответствующую команду, чтобы применить изменения. Продолжая использовать ifupdown в качестве примера, выполните приведенную ниже команду, чтобы применить новые параметры конфигурации сети.

     sudo ifdown eth0 && sudo ip addr flush eth0 && sudo ifup eth0
     

Проверка подключения

Чтобы убедиться в правильности параметров конфигурации, запустите те же тесты, которые использовались на последнем шаге раздела «Развертывание вычислительных экземпляров». В частности, отправьте эхо-запрос на общедоступный IP-адрес или домен из вычислительного экземпляра в частной VLAN (которая не назначена маршрутизатором). Теперь этот пинг должен завершиться успешно, указывая на то, что сетевой трафик был успешно перенаправлен через маршрутизатор в общедоступный Интернет.

 ping linode.com 

Эта страница была первоначально опубликована на

сеть платформа linode



Присоединяйтесь к беседе.

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

Система комментариев Disqus для Linode Docs требует принятия Функциональные файлы cookie, которые позволяют нам анализировать использование сайта, чтобы мы могли измерять и улучшать производительность. Для просмотра и создания комментариев к этому статью, пожалуйста обновить настройки файлов cookie на этом веб-сайте и обновите эту веб-страницу. Обратите внимание: у вас должен быть В вашем браузере включен JavaScript.

Включите JavaScript для просмотра комментарии от Disqus.comments от Disqus Маршрутизатор Disqus

— ArchWiki

Эта статья представляет собой руководство по превращению компьютера в интернет-шлюз/маршрутизатор. Чтобы усилить свою безопасность, он не должен запускать какие-либо службы , доступные для внешнего мира. В локальной сети запускайте только службы, специфичные для шлюза; особенно не запускайте httpd, ftpd, samba, nfsd и т. д., поскольку они принадлежат серверу в локальной сети, поскольку они представляют угрозу безопасности.

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

Примечание: На протяжении всей статьи в качестве имен сетевых интерфейсов используются intern0 и extern0 . Обоснование этого далее объясняется в разделе #Persistent именования интерфейсов.

Требования к оборудованию

  • Не менее 1 ГБ свободного места на жестком диске. Базовая установка займет около 500 МБ места, и если вы хотите использовать кеширующий веб-прокси, вам также потребуется зарезервировать место для кеша.
  • Минимум два физических сетевых интерфейса: шлюз соединяет две сети друг с другом (на самом деле маршрутизатор можно сделать с помощью одного физического интерфейса, лежащего в основе двух интерфейсов VLAN и подключенного к коммутатору с поддержкой VLAN, так называемому router-on- a-stick, но в этой статье она не рассматривается). Вам нужно будет подключить эти сети к одному и тому же физическому компьютеру. Один интерфейс должен подключаться к внешней сети, а другой — к внутренней сети.
  • Концентратор, коммутатор или кабель UTP: вам нужен способ подключения других компьютеров к шлюзу

Конфигурация сетевого интерфейса

Постоянное присвоение имен интерфейсам

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

  • intern0 : сетевая карта подключена к локальной сети. На реальном компьютере он, вероятно, будет иметь имя enp2s0, enp1s1 и т. д.
  • .
  • extern0 : сетевая карта подключена к внешней сети (или WAN). Вероятно, он будет иметь имя enp2s0, enp1s1 и т. д.

Вы можете изменить назначенные имена ваших устройств через файл конфигурации, используя Systemd-networkd, описанный в Systemd-networkd#Переименование интерфейса, или с помощью правила udev, следующего за конфигурацией сети. #Изменить имя интерфейса. Из-за того, что эта статья богата примерами, вы можете выбрать приведенные выше имена.

Конфигурация IP

С помощью netctl

Теперь вам нужно настроить сетевые интерфейсы. Один из способов сделать это — использовать профили netctl. Вам нужно будет создать два профиля.

Примечание: Если вы будете подключаться к Интернету только через PPPoE (у вас есть один порт WAN), вам не нужен для настройки или включения профиля extern0. Подробнее о настройке PPPoE см. ниже.

 /etc/netctl/extern0-profile 
 Описание='Общий интерфейс.'
Интерфейс=extern0
Соединение = Ethernet
IP='dhcp' 
 /etc/netctl/intern0-profile 
 Описание='Частный интерфейс'
Интерфейс=интерн0
Соединение = Ethernet
IP='статический'
Address=('10. 0.0.1/24') 

Примечание: В приведенном выше примере конфигурации предполагается полная подсеть. Если вы строите шлюз для небольшого количества людей, вам нужно будет изменить суффикс CIDR, чтобы он соответствовал меньшему диапазону. Например, /27 даст вам от 10.0.0.1 до 10.0.0.30 . Существует множество калькуляторов CIDR, онлайн и оффлайн, например sipcalc.

Совет: Используйте SkipNoCarrier=yes в профиле LAN, чтобы убедиться, что соединение включено, даже если гость в LAN еще не подключен.

Далее настраиваем интерфейсы с помощью netctl:

 # netctl включить профиль extern0
# netctl включить профиль intern0
 
С помощью systemd-networkd

Прямой и простой способ настройки сетевых интерфейсов — через systemd-networkd.

  • Применить конфигурацию DHCP-клиента для внешний0 интерфейс.
  • Применить статическую IP-конфигурацию для интерфейса intern0 .

См. systemd-networkd#Файлы конфигурации для получения сведений о конфигурации и обзора доступных параметров. Запустите networkctl reload , чтобы применить изменения конфигурации.

ADSL-соединение/PPPoE

Используя rp-pppoe, мы можем подключить ADSL-модем к интерфейсу extern0 брандмауэра, и Arch будет управлять соединением. Не забудьте поставить модем на в режиме моста (либо полумост, либо RFC1483), в противном случае модем также будет действовать как маршрутизатор. Установите пакет rp-pppoe.

Следует отметить, что если вы используете только PPPoE для подключения к интернету (т.е. у вас нет другого WAN порта, кроме того, который подключается к вашему модему) вам не нужно настраивать extern0-профиль в качестве внешнего псевдоинтерфейса будет ppp0.

Конфигурация PPPoE

Для настройки соединения PPPoE можно использовать netctl. Для начала сделайте

 # cp /etc/netctl/examples/pppoe /etc/netctl/
 

и приступайте к редактированию. Для конфигурации интерфейса выберите интерфейс, который подключается к модему. Если вы подключаетесь к Интернету только через PPPoE, это, вероятно, будет extern0 . Заполните остальные поля информацией о вашем провайдере. См. раздел PPPoE на справочной странице netctl.profile(5) для получения дополнительной информации о полях.

DNS и DHCP

Мы будем использовать dnsmasq в качестве DNS-сервера и, при необходимости, в качестве демона DHCP для локальной сети. Он был специально разработан для небольших сайтов. Установите его с пакетом dnsmasq.

Dnsmasq можно настроить как DHCP-сервер с конфигурацией, подобной следующей:

 /etc/dnsmasq.conf 
 interface=intern0 # заставить dnsmasq прослушивать запросы только на intern0 (наша локальная сеть)
#no-dhcp-interface=intern0 # при желании отключите функцию DHCP dnsmasq и используйте вместо нее systemd-networkd
expand-hosts # добавить домен к простым именам хостов в /etc/hosts
domain=foo. bar # разрешить полное доменное имя для хостов DHCP (необходимо, когда
                  # используется "expand-hosts")
dhcp-range=10.0.0.2,10.0.0.255,255.255.255.0,1h # определяет DHCP-диапазон для локальной сети:
                  # от 10.0.0.2 до .255 с маской подсети 255.255.255.0 и
                  # Аренда DHCP на 1 час (измените на свои предпочтения)
 

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

Теперь запустите и включите dnsmasq.service .

DHCP через systemd-networkd

Чтобы использовать systemd-networkd вместо dnsmasq в качестве DHCP-сервера, добавьте [DHCPServer] в файл конфигурации для интерфейса intern0 . Доступные параметры см. в разделе Systemd-networkd#[DHCPServer].

Общий доступ к соединению

Пришло время связать вместе два сетевых интерфейса.

Руководство

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

Предполагая, что net.**forwarding установлен правильно (т. е. равен 1 ), пакеты по-прежнему необходимо правильно отправлять и получать. Следовательно, необходимо преобразовывать IP-адреса между внешней сетью и локальной подсетью. Техника называется , маскирующаяся под . Нам также нужны два правила переадресации, чтобы поддерживать соединение и включить переадресацию из локальной сети в глобальную. Для этой задачи мы будем использовать iptables.

Обратитесь к разделу Общий доступ к Интернету # Включить NAT, чтобы узнать, как замаскировать extern0 интерфейс и пакеты от intern0 до extern0 . После этого сохраните вновь добавленные правила с помощью iptables-save -f /etc/iptables/iptables.rules , подробности см. в разделе iptables#Configuration and use.

Запустить и включить iptables.service . Теперь маршрутизатор должен быть полностью функциональным и направлять ваш трафик. Поскольку он обращен к общедоступному Интернету, имеет смысл дополнительно защитить его с помощью простого межсетевого экрана с отслеживанием состояния.

С помощью systemd-networkd

Измените или создайте ранее обсуждавшуюся конфигурацию сети для intern0 , включив параметр IMasquerade=ipv4 в раздел [Сеть] . Эта конфигурация неявно активирует пересылку пакетов на всех интерфейсах, см. systemd.network(5). См. Systemd-networkd#[DHCPServer] для примера конфигурации.

Совместное использование соединения с Shorewall

Подробное руководство по настройке см. в Shorewall.

Советы по IPv6

Эта статья или раздел являются кандидатами на слияние с IPv6.

Примечания: Слить в основную статью, тема не специфична для конфигурации маршрутизатора . Формулировку, вероятно, следует изменить по ходу дела. (Обсудить в Talk: Router)

Полезное чтение: IPv6 и википедия: IPv6.

Уникальные локальные адреса

Вы можете использовать свой маршрутизатор в режиме IPv6, даже если у вас нет адреса IPv6 от вашего интернет-провайдера. Если вы не отключите IPv6, всем интерфейсам должны были быть назначены уникальные fe80::/10 адрес.

Эта статья или раздел нуждается в дополнении.

Причина: Добавьте автономный метод для создания ULA. (Обсудить в Talk: Router)

Для внутренней сети зарезервирован блок fc00::/7 . Эти адреса гарантированно уникальны и не маршрутизируются из открытого Интернета. Адреса, принадлежащие блоку fc00::/7 , называются уникальными локальными адресами. Для начала создайте блок ULA/64 для использования в вашей сети. Для этого примера мы будем использовать fd00:aaaa:bbbb:cccc::/64 . Во-первых, мы должны назначить статический IPv6 на внутреннем интерфейсе. Измените созданный выше профиль intern0-profile , включив в него следующую строку:

 Address6=('fd00:aaaa:bbbb:cccc::1/64')
 

Это добавит ULA во внутренний интерфейс. Что касается маршрутизатора, это все, что вам нужно настроить.

Глобальные одноадресные адреса

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

Статический префикс IPv6

Если ваш интернет-провайдер предоставил вам статический префикс, отредактируйте /etc/netctl/extern0-profile и просто добавьте IPv6 и префикс IPv6 (обычно /64), которые вы предоставили

 Адрес6=('2002:1:2:3:4:5:6:7/64')
 

Вы можете использовать это в дополнение к адресу ULA, описанному выше.

Получение префикса IPv6 через DHCPv6-PD

Если ваш интернет-провайдер обрабатывает IPv6 через делегирование префикса, вы можете следовать инструкциям в делегировании префикса IPv6# (DHCPv6-PD) по правильной настройке маршрутизатора. Следуя соглашениям этой статьи, интерфейс WAN — это extern0 (или ppp0 , если вы подключаетесь через PPPoE) и интерфейс LAN intern0 .

Объявление маршрутизатора и автоконфигурация без сохранения состояния (SLAAC)

Чтобы правильно раздавать IPv6 сетевым клиентам, нам потребуется использовать рекламный демон. Следуйте подробностям основной статьи IPv6 о том, как настроить radvd . В соответствии с соглашением, принятым в этом руководстве, интерфейс, обращенный к локальной сети, — intern0 . Вы можете объявить все префиксы или выбрать, какие префиксы будут назначены для локальной сети.

Дополнительные дополнения

UPnP

Эта статья или раздел нуждается в дополнении.

Причина: Укажите альтернативный протокол переадресации портов NAT-PMP, поддерживаемый miniupnpd. (Обсудить в Talk:Router)

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

Чтобы включить UPnP на маршрутизаторе, необходимо установить демон протокола UPnP Internet Gateway Device (IGD). Чтобы получить его, установите пакет miniupnpd.

Дополнительные сведения см. в руководстве Shorewall по UPnP.

Удаленное администрирование

OpenSSH можно использовать для удаленного администрирования маршрутизатора. Это полезно для запуска в автономном режиме (без монитора или устройств ввода).

Кэширующий веб-прокси

См. Squid для настройки веб-прокси для ускорения просмотра и/или добавления дополнительного уровня безопасности.

Сервер времени

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *