В этом посте делается попытка прояснить, как работают сети и как превратить наше оборудование Linux в маршрутизатор, который обеспечит немного больше работы в нашей сети, будь то дома или даже в офисе. Итак, приступим к делу:
Маршрутизация и фильтрация
Чтобы поговорить и понять о маршрутизации, мы можем сначала определить, какова функция маршрутизатора? Для этого мы можем сказать, что маршрутизатор, помимо создания сети и разрешения соединения с другим оборудованием (зная, что мы можем сделать это с помощью точки доступа, коммутатора, концентратора или других), может соединять две разные сети друг с другом.
Как мы видим на изображении, существует локальная сеть «10.0.1.0», созданная маршрутизатором и достигающая одного из двух его интерфейсов. Затем у маршрутизатора на другом интерфейсе есть другая сеть с его общедоступным IP-адресом, с помощью которого он может подключаться к Интернету. Функция маршрутизации в основном служит посредником между этими двумя сетями, чтобы они могли общаться.
Linux как роутер.
Естественно, ядро Linux уже имеет возможность выполнять «пересылку», но по умолчанию она отключена, поэтому, если мы хотим, чтобы наша Linux выполняла эту работу, мы должны перейти к файлу.
/proc/sys/net/ipv4/ip_forward
Там мы обнаружим, что это файл, содержащий только ноль «0», что мы должны сделать, это изменить его на единицу «1», чтобы активировать это поведение. К сожалению, это удаляется, когда мы перезагружаем компьютер, чтобы оставить его активированным по умолчанию, мы должны использовать команду:
sysctl net.ipv4.ip_forward=1
Или отредактируйте прямо в файле /etc/sysctl.conf. В зависимости от дистрибутива эта конфигурация также может находиться в файле в /etc/sysctl.d/.
По умолчанию в нашем Linux должна быть таблица маршрутизации, которая обычно является конфигурацией нашей локальной сети и подключения к маршрутизатору. Если мы хотим увидеть эту маршрутизацию, мы можем использовать две команды:
route -n
o
netstat -nr
Обе команды должны возвращать то же самое.
В общем, этой конфигурации достаточно для того, чтобы ваш Linux служил шлюзом, а другие компьютеры могли перемещаться по нашему компьютеру. Теперь, если мы хотим, чтобы наш Linux соединял две или более сети, например, локальные или нет, мы можем использовать статические маршруты.
Предположим, у моего Linux есть два сетевых интерфейса: первый имеет подключение к Интернету с сетью 172.26.0.0, а второй (10.0.0.0) имеет несколько компьютеров из другой локальной сети. Если мы хотим направить пакеты в эту другую сеть, мы можем использовать:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8
В общем это:
route add -net REDDESTINO netmask MASCARA gw IPDELLINUX
если мы дадим маршрут -n независимо от того, существует эта сеть или нет, эта маршрутизация будет зафиксирована в нашей таблице.
Если мы хотим устранить указанную маршрутизацию, мы можем использовать
route del -net 10.0.0.0 netmask 255.0.0.0
IP-таблицы.
В основном iptables используется для фильтрации пакетов, исходящих, входящих и других, что делает его отличным инструментом для управления нашим сетевым трафиком. Что ж, iptables, так же, как он позволяет нам фильтровать трафик с того же компьютера, он также позволяет нам фильтровать трафик, который проходит через него. (Пересылка). Iptables можно разделить на таблицы, цепочки и действия.
- Доски: в принципе может быть две таблицы, фильтр, фильтровать пакеты и натуральный переводить адреса, то есть переходить из одной сети в другую.
- Цепи: Цепочка относится к типу трафика, который мы хотим фильтровать или плавать, то есть к какому трафику мы будем применять таблицы? и они могут быть: ВХОД: Входящий трафик, ВЫХОД: исходящий трафик или ВПЕРЕД: Через него проходит трафик, но это неправильное соединение.
- Также может появиться ПОСТРОУТИНГ, который используется для обработки пакета определенным образом после его маршрутизации.
- действия: Действия - это в основном действия, выполняемые с цепочкой. Это действие может быть УРОНИТЬ, это просто уничтожает этот трафик или ACCEPT. который позволяет трафику выполнять это действие.
Правила IPTABLES сохраняются и выполняются в том порядке, в котором они были созданы, и если правило удаляет предыдущее правило, всегда применяется последнее правило в порядке.
Политики межсетевого экрана.
Обычно брандмауэры работают двумя способами:
- Разрешить весь трафик, кроме, или
- Не разрешать трафик, кроме ...
Чтобы применить политики, используйте IPTABLES - ЦЕПЬ ДЕЙСТВИЙ
Где строка представляет тип трафика (INPUT, OUTPUT, FORWARD, POSTROUTING ...), а действие - DROP OR ACCEPT.
Давайте посмотрим на пример.
Здесь мы видим, что сначала я смог выполнить ping, а затем сказал IPTABLES, что весь OUTPUT трафик был DROP или не разрешен. Затем я сказал IPTABLES принять его.
Если мы собираемся создать брандмауэр с нуля, мы всегда должны применять правила (Не разрешать любой трафик, кроме ... Для этого мы применяем правила
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Для возврата пишем то же самое и заменяем DROP на ACCEPT.
На этом этапе, поскольку весь трафик запрещен, мы начинаем сообщать нашим IPTABLES, какой трафик он может иметь.
Синтаксис:
iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción
Где:
Строка = ВХОД, ВЫХОД или ВПЕРЕД
origin_ip = Источник пакетов, это может быть один IP или сеть, и в этом случае мы должны указать маску).
destination_ip = куда идут пакеты. это может быть отдельный IP-адрес или сеть, и в этом случае мы должны указать маску).
протокол = указывает протокол, используемый пакетами (icmp, tcp, udp ...)
порт = порт назначения трафика.
действие = DROP или ACCEPT.
пример:
Применяются ВСЕ ограниченные политики.
Затем мы добавляем правила, чтобы иметь возможность иметь трафик через порт 80 HTTP и 443 HTTPS с протоколом TCP. Затем порт 53 применяется для DNS-клиента для разрешения доменов, иначе вы не будете перемещаться. Это работает с протоколом udp.
Линия:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Это происходит из-за следующего: например, когда вы делаете HTTP-запрос, вы подключаетесь к порту 80 сервера, но серверу для возврата информации необходимо подключиться к вам через любой порт. (Обычно больше 1024).
Поскольку все наши порты закрыты, это не будет достигнуто, если мы не откроем все порты выше 1024 (Плохая идея). Это означает, что весь входящий трафик, исходящий от соединения, которое я установил сам, принимается. То есть связь, которую я в принципе завел.
Надеюсь, вам понравилась эта информация. В следующем я расскажу о NAT, прокси и скриптах для Firewal.
Это основа, которую многие предприниматели берут на себя при производстве собственных межсетевых экранов, поэтому на рынке так много брендов межсетевых экранов со встроенным Linux, одни хорошие, а другие нет.
Отличная статья. С нетерпением жду вторую часть.
Очень хорошее объяснение, оно помогло мне понять суть моей работы. Спасибо
Привет Jlcmux,
Отлично, очень понравилось, когда будет вторая партия?
Приветствую и спасибо, что поделились
Спасибо за комментарий.
Вчера отправил вторую часть, думаю, в течение дня ее опубликуют.
Привет.
Очень хороший друг по статье @ Jlcmux, я действительно научился с ним, так как он прояснил некоторые сомнения, которые у меня были в течение некоторого времени, кстати, вы не возражаете поделиться книгой источника статьи, книги Себастьяна БОБИЛЬЕ, ну, slau2s, а теперь для см. вторую часть, salu2s.
Привет Спасибо за комментарий Израиль.
Оказывается, книга у меня в физическом виде. Но я нашел эту ссылку в Google Книгах. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=
Я думаю, что это завершено.
Очень хорошая статья, я добавляю вопрос: в чем будет преимущество использования Linux в качестве маршрутизатора, если он есть, по отношению к выделенному для него оборудованию? Или это просто для упражнений? Я знаю, что существуют специализированные дистрибутивы, но не знаю, предназначены ли они для восстановления старых компьютеров или обеспечения большей гибкости в конфигурации.
Что ж, я думаю, что преимущества и недостатки зависят от сценария, в котором вы собираетесь это реализовать. Почему вы, конечно, не собираетесь покупать UTM или что-то подобное для своего дома? И, возможно, для малого бизнеса, который тоже не может себе этого позволить. Это также полезно в качестве упражнения, так как помогает понять всю логику этого и лучше настроить специальный FWall. В дополнение к этому почти все эти устройства действительно имеют встроенный Linux.
Привет.
Здравствуйте, вопрос, а можно ли в linux сгенерировать "искусственный" интерфейс для подобной маршрутизации между сетями? (стиль трассировщика пакетов) для работы с виртуальными машинами? например, если у меня есть eth0 (потому что, конечно, у меня одна карта), могу ли я создать eth1 для создания другой сети? Очень хороший репетитор!
В Linux, конечно, можно создавать виртуальные интерфейсы. Если у вас есть eth0, вы можете иметь eth0: 0, eth0: 1, eth0: 2 ... и т. Д.
Так хорошо, спасибо, что поделились