Linux masquerade что это

Linux masquerade что это

Маскарадинг (masquerading) и трансляции ip-адресов (NAT)

Проблема маскарада (masquerading) и трансляции ip-адресов в Линуксе. Что это такое, что там можно и что нельзя.

Автор оригинала Иван Н. Песин

Но так как статья морально устарела, то она будет взята лишь за основу. (претензии автора принимаются). Каждому Linux админу рано или поздно приходится сталкиваться с проблемой маскарада (masquerading) и трансляции ip-адресов на Линуксе (кроме тех у кого есть куча реальных адресов и они раздают их всем компам в локальной сети :-)). Если у Вас есть локальная сеть, подключенная к сети Интернет через linux сервер, то без маскарада не обойтись.
Начнем, пожалуй, с определений.
1. Маскарад (masquerade) и трансляция адресов (NAT) в мире Linux не являются синонимами.
2. Маскарад — замена адреса на адрес машины, выполняющей маскарад.
3. Трансляция адресов — замена адреса на любой указанный.
Если вы используете ОС Linux с ядром 2.0 или 2.2, Вам нужно будет опустить глаза вниз — в конце этой статьи находится авторское описание настроек ipfwadm и ipchains.
Я же опишу настройку NAT, masquerading для ОС Linux с ядром 2.4- 2.6, де используются iptables.
Для чего это вообще нужно? Вы имеете сеть с адресами:
10.0.0.0-10.255.255.255 — сеть класса А
172.16.0.0 — 172.31.255.255 — сеть класса B
192.168.0.0-192.168.255.255 — сеть класса С
Эти сети зарезервированы для использования в локальных сетях (intranet) и в сети Интернет не используются.
Допустим ваш компьютер в локальной сети с ip 192.168.0.2 получает доступ к Интернет через сервер с внутренним ip адресом 192.168.0.1 (eth1) и внешним адресом 111.111.111.111 (eth0).
Если пакет с вашего компьютера будет иметь ваш адрес источника (192.168.0.2) то он просто не придет обратно, так как удаленный хост не будет знать по какому маршруту отослать его обратно. Для того, чтобы этого не случилось и придуманы NAT и masquerading.
Итак как работает маскарад.
Ваш пакет (например на проходит через сервер и в нем адрес источника меняется на адрес сервере (111.111.111.111). Пакет приходит на и хост отвечает по адресу в пакете (111.111.111.111). Так как Ваш сервер запомнил, что пакет для посылали вы, то он принимает пакет и отдает его вашему компьютеру.
Вот и все пакет ушел и вернулся.
Включается маскарад в iptables очень просто:
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
(этой командой вы разрешили прохождение пакетов между сетевыми интерфейсами из локальной сети 192.168.0.0/24)
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT
(этой командой вы разрешили прохождение пакетов между сетевыми интерфейсами в локальную сеть 192.168.0.0/24)
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
(и последняя команда — ей вы включили маскарад для сети 192.168.0.0/24).
Еще вам нужно проверить чтобы был включен forward ip в вашем ядре.
Сделать это можно командой
cat /proc/sys/net/ipv4/ip_forward
если Вы получили 1 на выходе значит все в порядке, если 0, тогда вам нужно включить ip forward командой
echo 1 >/proc/sys/net/ipv4/ip_forward
Как работает NAT ?
Ваш пакет (например на проходит через сервер и в нем адрес источника меняется на указанный адрес (мы укажем адрес сервера (111.111.111.111). Пакет приходит на и хост отвечает по адресу в пакете (111.111.111.111). Пакет приходит на Ваш сервер и происходит обратная замена.
Включается NAT в iptables так:
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
(этой командой вы разрешили прохождение пакетов между сетевыми интерфейсами из локальной сети 192.168.0.0/24)
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT
(этой командой вы разрешили прохождение пакетов между сетевыми интерфейсами в локальную сеть 192.168.0.0/24)
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT —to-source 111.111.111.111
(и последняя команда — ей вы включили трансляцию адресов сети 192.168.0.0/24 на адрес 111.111.111.111).
Еще вам нужно проверить чтобы был включен forward ip в вашем ядре.
Сделать это можно командой
cat /proc/sys/net/ipv4/ip_forward
если Вы получили 1 на выходе значит все в порядке, если 0, тогда вам нужно включить ip forward командой
echo 1 >/proc/sys/net/ipv4/ip_forward
Вот собственно и все. Дальше идет статья Ивана Песина
Решение проблемы маскарада, на ядрах разных версий отличается, и потому мы разделим нашу повесть на две части, ядра версии от, если не ошибаюсь, 2.0.29 до 2.2.9ас, и от 2.2.10 до 2.4.0. Ядра версии 2.4.х я обсуждать не буду, потому как там имеется вполне сносное описание. Итак,

Ядра версий 2.0.29 — 2.2.9

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

ipchains -A forward -i ethX -s 192.168.1.0/24 -j MASQ

результатом этой команды будет замена исходных адресов пакетов из сети 192.168.1.0 класса С, при маршрутизации их через интерфейс ethX, на адрес машины на которой выполнены команды.

Перейдем теперь к более сложным случаям. Допустим, вам необходимо, в зависимости от адреса источника/назначения маскарадить под разными адресами. Как же это выполнить? Тут нам придется обратиться к нестандартным средствам.

Для начала посмотрим урл Хотя там написано не очень много, зато содержательно. После прочтения остается лишь вытащить соответствующий архив с программой и патчем ядра. Пропатчив ядро, его надо перекомпилировать (прочитать почитайки обязательно!) с соответствующими изменениями в конфигурации. Устанавливаем скомпилированное ядро, при этом не забываем про «ядро на всякий случай» (рабочее ядро, которое вы будете загружать, если новое ядро не загрузится). После перезагрузки станет возможным использование команды ipnatadm. Название говорит само за себя ;). Теперь легко можно изобразить команды вроде:

ipnatadm -O -i -b -S 192.168.1.1/24 -M 207.46.230.219
ipnatadm -O -i -b -S 192.168.1.2/24 -M 207.46.230.229

ну и так далее, думаю, разобраться можно. Есть еще полезная опция -W, позволяющая задавать интерфейс. Да, не забудьте, что псевдонимы интерфейсов не понимаются ни ipchains, ни ipfwadm, ни ipnatadm. Перейдем теперь к теме

Ядра версий 2.2.10 — 2.4.0

На этих версиях, к сожаленью, программа ipnatadm предательски перестает функционировать. Почему предательски? Потому что удается пропатчить ядро, скомпилировать, загрузиться и даже приконнектиться с помощью telnet, например. Но при попытке выполнить, допустим, даже вышеописанные команды, интерфейс подвисает. Ну что ж, значит нужно искать другие ходы. Если нужно, значит надо.

Читайте также:  Открыть смайлы mac os

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

Ну а я попробую, насколько это возможно, сжато рассмотреть стандартный и нестандартные методы маскарада, и NAT´а. Стандартный случай: необходимо маскарадить исходящие пакеты хоста 192.168.1.1 в 207.46.230.219. Подход к решению этой задачи полностью аналогичен случаю с более ранними ядрами. Необходимо лишь учесть, что в системах с этими ядрами утилиты ipfwadm нет, вместо нее используется ipchains. Сразу перейдем к рассмотрению более сложных случаев. Допустим, как и в предыдущем примере, пакеты с разных машин, необходимо транслировать в разные адреса.

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

ip rule add from 192.168.1.1 nat 207.46.230.219
ip rule add from 192.168.1.2 nat 207.46.230.229

ip route add nat 207.46.230.219 via 192.168.1.1
ip route add nat 207.46.230.229 via 192.168.1.2

Результатом этих действий будет маскарад и демаскарад адресов 192.168.1.1 и 192.168.1.2, соответственно в 207.46.230.219 и 229.

Вот такие пирожки. Это все теория и стандартные случаи, давайте рассмотрим более интересный и совсем реальный пример. Имеется сеть на

250 машин, линукс красная шапочка версии 6.2, в роли маршрутизатора, и выполняющий маскарад внутренних машин под адрес, допустим, 207.46.230.219. Линукс включен в машину провайдера витой парой, из сетевой в сетевую. Кроме того, провайдер, естественно, не желает тратить отдельный ip-адрес на сетевую в которую включен наш линукс. Другими словами (рисунком) ситуация следующая

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

route add -host 192.168.100.1 eth1

что означает: машина 192.168.100.1 подсоединена непосредственно к интерфейсу eth1. Далее, укажем, что все пакеты, предназначенные для интернета отсылать через машину провайдера:

route add default gw 192.168.100.1

и остается лишь прописать правила маскарада. Допустим, я хочу, что бы машины с адресами 192.168.1.101-105 ходили в интернет, а другие нет:

ipchains -A forward -s 192.168.1.101 -j MASQ
ipchains -A forward -s 192.168.1.102 -j MASQ
ipchains -A forward -s 192.168.1.103 -j MASQ
ipchains -A forward -s 192.168.1.104 -j MASQ
ipchains -A forward -s 192.168.1.105 -j MASQ

ipchains -A forward -j REJECT -l

Ну вот, в общем, на сегодня и все.

Copyright (С) 2001, Иван Песин.
Лицензия

Источник

Что такое MASQUERADE в контексте iptables?

Во iptables много раз я вижу цель Маскарад . Что это? Я искал и нашел много вещей. Но мне нужно, чтобы кто-нибудь объяснил мне, что такое MASQUERADE простым для понимания способом?

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

Я использую алгоритм маскарада, когда хочу создать виртуальный адаптер Wi-Fi и поделиться своим Wi-Fi.

Я НЕ говорю о совместном использовании Ethernet-соединения через ваш wifi, я говорю о совместном использовании wifi-соединения через ваш wifi, маскируя его под виртуальный адаптер. По сути, это позволяет вам поделиться своим Wi-Fi соединение через Wi-Fi.

Прочитайте это и прокрутите вниз до MASQUERADE: http://billauer.co.il/ipmasq-html.html

Все эти вопросы о «Connectify для Linux» можно решить с помощью алгоритма MASQUERADE.

Я НЕ ЧИТАЛ ПОСЛЕДНЮЮ ССЫЛКУ . Но ниже приведен точный отрывок / пример.

Мне действительно не нравится, как поисковые системы делают алгоритм каким-то злым взломом . Я использую его просто для того, чтобы поделиться своим интернетом с моими телефонами Android.

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: эта ссылка самая лучшая http://gsp.com/cgi-bin/man.cgi?section=3&topic=libalias

MASQUERADE — это цель iptables, которую можно использовать вместо цели SNAT (исходный NAT), когда внешний ip интерфейса inet неизвестен на момент написания правила (когда сервер динамически получает внешний ip).

IP Masquerade также известен как трансляция сетевых адресов (NAT) и совместное использование сетевых подключений некоторых других популярных операционных систем. Это в основном метод, позволяющий компьютеру, который не имеет общедоступного IP-адреса в Интернете, обмениваться данными с другими компьютерами в Интернете с помощью другого компьютера, расположенного между ним и Интернетом.

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

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

Обратите внимание, что это не ограничивается маскарадом сети Интернет / NAT может использоваться для маршрутизации трафика из одной сети в другую, скажем, 10.0.0.0/24 и 192.168.0.0/24.

Правило маскарада Iptables можно заменить на правило SNAT

И маскарад, и snat требуют, чтобы ip_forward был включен на уровне ядра с помощью echo «1» > /proc/sys/net/ipv4/ip_forward или навсегда, отредактировав файл настроек nano /etc/sysctl.conf .

IP Forward заставляет машину действовать как маршрутизатор и, таким образом, перенаправлять / пересылать пакеты со всего активного интерфейса логически по целевой сети (локальная / net / other / etc) или следуя таблице маршрутов. Обратите внимание, что включение ip_forward может представлять значительную угрозу безопасности, если ip_forward нельзя избежать, его необходимо контролировать / защищать с помощью дополнительных правил iptables / route.

Источник

Настройка iptables, разбираемся вместе.(Часть 1)

Определение iptables — утилита командной строки, является стандартным интерфейсом управления работой межсетевого экрана (брандмауэра) netfilter для ядер Linux версий 2.4, 2.6, 3.x, 4.x . Для использования утилиты iptables требуются привилегии суперпользователя (root).

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

Что бы правильно составлять правила брандмауэра нужно понимать как вообще идут пакеты и что с ними происходит.

Читайте также:  Где звуковые устройства windows 10

Порядок движения транзитных пакетов

Шаг Таблица Цепочка Примечание
1 Сетевой интерфейс (например, eth0)
2 mangle PREROUTING Обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр..
3 nat PREROUTING Эта цепочка используется для трансляции сетевых адресов ( Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке.
4 Принятие решения о дальнейшей маршрутизации, т.е. в этой точке решается куда пойдет пакет — локальному приложению или на другой узел сети.
5 mangle FORWARD Далее пакет попадает в цепочку FORWARD таблицы mangle.
6 Filter FORWARD В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит траффик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации.
7 mangle POSTROUTING Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации.
9 nat POSTROUTING Эта цепочка предназначена в первую очередь для Source Network Address Translation. Здесь же выполняется и маскарадинг (Masquerading).
9 Выходной сетевой интерфейс (например, eth1).

Для локального приложения(входящие пакеты)

Шаг Таблица Цепочка Примечание
1 Входной сетевой интерфейс (например, eth0)
2 mangle PREROUTING Обычно используется для внесения изменений в заголовок пакета, например для установки битов TOS и пр.
3 nat PREROUTING Преобразование адресов ( Destination Network Address Translation).
4 Принятие решения о маршрутизации.
5 mangle INPUT Пакет попадает в цепочку INPUT таблицы mangle. Здесь вносятся изменения в заголовок пакета перед тем как он будет передан локальному приложению.
6 filter INPUT Здесь производится фильтрация входящего трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили.
7 Локальный процесс/приложение (т.е., программа-сервер или программа-клиент)

От локальных процессов(исходящие пакеты)

Шаг Таблица Цепочка Примечание
1 Локальный процесс (т.е., программа-сервер или программа-клиент).
2 Принятие решения о маршрутизации. Здесь решается куда пойдет пакет дальше — на какой адрес, через какой сетевой интерфейс и пр.
3 mangle OUTPUT Здесь производится внесение изменений в заголовок пакета. Выполнение фильтрации в этой цепочке может иметь негативные последствия.
4 nat OUTPUT Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов брандмауэра.
5 Filter OUTPUT Здесь фильтруется исходящий траффик.
6 mangle POSTROUTING Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет брандмауэр, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами брандмауэра.
7 nat POSTROUTING Здесь выполняется Source Network Address Translation. Не следует в этой цепочке производить фильтрацию пакетов во избежание нежелательных побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по-умолчанию DROP.
8 Сетевой интерфейс (например, eth0)

Как мы поняли есть основные три таблицы :

  • mangle — Данная таблица предназначена для операций по классификации и маркировке пакетов и соединений, а также модификации заголовков пакетов (поля TTL и TOS).
  • filter — основная таблица для фильтрации пакетов, используется по умолчанию. Собственно в этой таблице и происходит фильтрация пакетов.
  • nat — обеспечивает работу nat, если вы хотите использовать компьютер в качестве маршрутизатора. Здесь задаются правила для маршрутизации.

Для таблицы nat применимы действия:

Действие DNAT (Destination Network Address Translation) производит преобразование адресов назначения в заголовках пакетов. Другими словами, этим действием производится перенаправление пакетов на другие адреса, отличные от указанных в заголовках пакетов.

SNAT (Source Network Address Translation) используется для изменения исходных адресов пакетов. С помощью этого действия разделить единственный внешний IP адрес между компьютерами локальной сети для выхода в Интернет. В этом случае брандмауэр, с помощью SNAT, автоматически производит прямое и обратное преобразование адресов, тем самым давая возможность выполнять подключение к серверам в Интернете с компьютеров в локальной сети.

Маскировка ( MASQUERADE) применяется в тех же целях, что и SNAT, но в отличие от последней, MASQUERADE дает более сильную нагрузку на систему. Происходит это потому, что каждый раз, когда требуется выполнение этого действия — производится запрос IP адреса для указанного в действии сетевого интерфейса, в то время как для SNAT IP адрес указывается непосредственно. Однако, благодаря такому отличию, MASQUERADE может работать в случаях с динамическим IP адресом, т.е. когда вы подключаетесь к Интернет, скажем через PPP, SLIP или DHCP.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Выполнить MASQUERADE для всех пакетов идущих из сети 10.8.0.0 на интерфейс eth0 . Для понятности , допустим у нас две сетевые карточки и две сети. Нам надо что бы сеть 10.8.0.0/24(первая сетевая карточка) могла выйти скажем в интернет через eth0(вторая сетевая карточка)

  • raw — Предназначена для выполнения действий с пакетами до их обработки системой.

Собственно таблица по умолчанию filter .

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

  • INPUT — обрабатывает трафик, поступающий непосредственно самому хосту.
  • FORWARD — позволяет фильтровать транзитный трафик.
  • OUTPUT — позволяет фильтровать трафик, исходящий от самого хоста.

Действие с пакетом.

  • ACCEPT — пропуск пакета. Пакет покидает текущую базовую цепочку и следует дальше.
  • REJECT — заблокировать пакет и сообщить его источнику об отказе.
  • DROP — заблокировать пакет, не сообщая источнику об отказе. Более предпочтительна при фильтрации трафика на интерфейсах, подключенных к интернету, так как понижает информативность сканирования портов хоста злоумышленниками.
  • LOG — сделать запись о пакете в лог файл.

Получается у нас цепочка [ таблица — filter ] — [ трафик — INPUT ] — [ действие — DROP ] логика действий только кажется сложной. Думаю мы с вами на примерах разберемся и станет все просто.

Команд iptables:

  • -A добавить правило в конец цепочки.
  • -D удалить правило.
  • -I вставить правило с нужным номером.
  • -L вывести все правила в текущей цепочке.
  • -S вывести все правила.
  • -F очистить все правила.
  • -N создать цепочку.
  • -X удалить цепочку.
  • -P установить действие по умолчанию.

Начнем разбираться на конкретных примерах.

iptables -A INPUT -p tcp —dport 80 -j ACCEPT

-A добавить новое правило , INPUT для входящих пакетов, -p протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp,
mh, — — dport порт назначения 80(опция только для протокола), -j выбрать действие, если правило подошло, ACCEPT разрешить. То есть разрешить входящий трафик по протоколу tcp на порт 80.

Перечисленные ключи также поддерживают конструкцию с использованием знака ! . Он инвертирует условие, например:

iptables -A INPUT -s ! 192.168.0.50 -j DROP

-s адрес источника — имя хоста(www.help.com), IP-адрес или подсеть в нотации CIDR(192.168.0.1/16) , ! инверсия , DROP запретить. Запретить весь входящий трафик , кроме источника 192.168.0.50 ( если бы не было ! , то запретить только с 192.168.0.50 )

iptables -A INPUT -s 192.168.0.50 -j DROP

Запретить входящий трафик с ip — 192.168.0.50 .

Список критериев правил:

  • -p Протокол, протокол также можно указать с помощью номера или названия согласно перечислению, приведенному в /etc/protocols. Значение «любой протокол» можно указать с помощью слова all или числа 0 . Так же для протокола есть дополнительные параметры : —sport(—source-port) Позволяет указать исходящий порт (или их диапазон). —dport(—destination-port) Позволяет указать порт назначения (или их диапазон).
  • -s Определяет адрес отправителя . В качестве адреса может выступать IP-адрес (возможно с маской), доменное имя (в последних двух случаях перед добавлением правила в цепочку имя резольвится в IP-адрес).
  • -i Определяет входящий сетевой интерфейс. Если указанное имя интерфейса заканчивается знаком «+» (например, eth+), то критерию соответствуют все интерфейсы, чьи названия начинаются на указанное имя(etho,eth1).
  • -d Определяет адрес получателя . Синтаксис аналогичен -s .
  • -o Определяет исходящий сетевой интерфейс. Синтаксис аналогичен -i.

Так же критерия можно комбинировать.

iptables -A INPUT -i eth0 -s 192 .168.0.0 -j DROP

Запретить входящие пакеты с интерфейса eth0 и ip 1 92 .168.0.0. А на интерфейс eth1 пакеты пройдут.

А что делать если вы за ранние не знаете какой порт открывать , например хотите что бы FTP сервер работал в пассивном режиме. Модуль conntrack о состоянии соединения поможет, а конкретней критерий — ctstate. Модуль подключается тэгом -m.

iptables -A INPUT -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m conntrack —ctstate NEW -p tcp —dport 21 -j ACCEPT # Разрешаем открывать соединения на 21 TCP-порт.

  • NEW — соединение не открыто, то есть пакет является первым в соединении.
  • ESTABLISHED — пакет относится к уже установленному соединению. Обычно такие пакеты принимаются без дополнительной фильтрации, как и в случае с RELATED.
  • RELATED — пакет открывает новое соединение, логически связанное с уже установленными, например, открытие канала данных в пассивном режиме FTP. Соединение получает статус RELATED если оно связано с другим соединением, имеющим признак ESTABLISHED.
  • INVALID — Признак INVALID говорит о том, что пакет не может быть идентифицирован и поэтому не может иметь определенного статуса.

iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

S tate и деологический предшественник conntrack, имеет единственный параметр --state, аналогичный параметру --ctstate модуля conntrack (но, в отличие от него, не поддерживающий состояния DNAT и SNAT).

Кратко рассмотрим таблицу таксировщика, которую можно найти в файле /proc/net/ip_conntrack . Здесь содержится список всех активных соединений.

Первое как понятно это протокол, потом десятичное число(что значит не знаю),потом идет время жизни соединения. Далее состояние ESTABLISHED то есть соединение уже установлено, бывает еще UNREPLIED что значит что ответного трафика еще не было. Далее расположены адреса отправителя и получателя, порт отправителя и получателя. Далее все наоборот соответственно, ASSURED этот флаг сообщает о том, что соединение установлено уверенно и эта запись не будет стерта по достижении максимально возможного количества трассируемых соединений.

Некоторые особенности протоколов .

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

Как только трассировщик увидел первый ( SYN ) пакет, то присваивает ему статус NEW. Как только через трассировщика проходит второй пакет ( SYN/ACK ), то соединению присваивается статус ESTABLISHED.

С протоколом UDP немного все по другому этот протокол не предусматривает установления и закрытия соединения, но самый большой недостаток — отсутствие информации об очередности поступления пакетов. Но с точки зрения трасировщика все так же как с TCP. Первому пришедшему пакету присваивает ему статус NEW. Как только вы отправляете ответный пакет присваивается статус ESTABLISHED. Единственное отличия что статут ASSURED присваиваться только когда обменялись уже несколькими пакетами.

Логирование применений правил.

iptables дает возможность вести логи отдельных пакетов и событий. Для этого применяется действие LOG.

iptables -A INPUT -p tcp —syn -j LOG —log-level info —log-prefix «INPUT packets «

—log-level Используется для задания уровня журналирования (log level). Полный список уровней вы найдете в руководстве (man) по syslog.conf. Обычно, можно задать следующие уровни: debug, info, notice, warning, warn, err, error, crit, alert, emerg и panic. Логи пишутся в файл syslog.

—log-prefix Ключ задает текст (префикс), которым будут предварять все сообщения iptables. Сообщения со специфичным префиксом затем легко можно найти, к примеру, с помощью grep . Префикс может содержать до 29 символов, включая и пробелы.

Популярные команды управления iptables.

iptables -L -n —line-numbers Посмотреть список правил.

-n номер портов и ip в цифровом варианте.

—line-numbers номер строки.

iptables -F Полностью сбросить правила.

iptables -P INPUT ACCEPT Правила по умолчанию для таблицы INPUT .
iptables -P OUTPUT ACCEPT Правила по умолчанию для таблицы OUTPUT.
iptables -P FORWARD DROP Правила по умолчанию для таблицы FORWARD.

iptables -D INPUT 1 Удаление правила по его номеру в цепочке.

iptables -D INPUT -s 123.45.67.89 -j DROP Удаление правила на основе того, что оно делает.

iptables -I INPUT … Вставка (insert) правила в начало цепочки.

iptables -I INPUT 3 … Или можно указать конкретную позицию.

REDIRECT

Действие REDIRECT предназначено для перенаправления пакетов с одного набора портов на другой внутри одной системы, не выходя за пределы хоста.
Работает REDIRECT только в цепочках PREROUTING и OUTPUT таблицы nat . Таким образом, область применения сводится только к перенаправлению . Чаще всего это используется для прозрачного прокси, когда клиент из локальной сети коннектится на 80 порт, а шлюз редиректит пакеты на локальный порт прокси:

iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-port 3128

Новые правила автоматически не сохраняются и после перезагрузки сервера не будут действовать. Поэтому после изменения iptables нам нужно сохранить изменения.

iptables-save > /etc/iptables Сохранить текущий настройки в файл iptables.

iptables — restore > /etc/iptables Загрузить правила из файла.

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

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

Источник

Читайте также:  Linux посмотреть порты занятые процессом
Оцените статью