Iptables FORWARD работает только с избыточными правилами

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

Модератор: SLEDopit

uscr
Сообщения: 152
ОС: Fedora

Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Здравствуйте.
Есть шлюз, который маршрутизирует несколько сетей. Для обяснения вопроса хватит трёх:

Код: Выделить всё

192.168.0.0/24
192.168.1.0/24
192.168.100.0/24


Задача следующая:

Сети 192.168.0.0 и 192.168.1.0 должны ходить в интернет.
Из сети 192.168.0.0 помимо интернета, должен быть доступ во все сети.
Из сети 192.168.1.0 должен быть доступ только к сети 192.168.100.0.

Из сети 192.168.100.0 не должно быть доступа никуда. Только если в неё стукнутся из 192.168.0.0 или 192.168.1.0.

Вот интерфейсы на шлюзе:

Код: Выделить всё

enp1s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.1  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::21b:21ff:fe98:98c  prefixlen 64  scopeid 0x20<link>
        ether 00:1b:21:98:09:8c  txqueuelen 1000  (Ethernet)
        RX packets 150691686  bytes 48123777316 (44.8 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 173453652  bytes 188693398226 (175.7 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xfbee0000-fbefffff

enp1s0f0:5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 00:1b:21:98:09:8c  txqueuelen 1000  (Ethernet)
        device memory 0xfbee0000-fbefffff

enp1s0f0:100: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 00:1b:21:98:09:8c  txqueuelen 1000  (Ethernet)
        device memory 0xfbee0000-fbefffff


192.168.1.1 и 192.168.100.1 - алиасы на одном физическом интерфейсе.
В интернет смотрит enp2s0.

Для реализации задачи добавил вот такие нехитрые правила iptables:

Код: Выделить всё

# Generated by iptables-save v1.6.0 on Wed Sep 13 15:03:47 2017
*nat
:PREROUTING ACCEPT [28146:2000758]
:INPUT ACCEPT [134:26457]
:OUTPUT ACCEPT [10:1298]
:POSTROUTING ACCEPT [77:8345]
-A POSTROUTING -s 192.168.0.0/24 -o enp2s0 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24 -o enp2s0 -j MASQUERADE
COMMIT
# Completed on Wed Sep 13 15:03:47 2017
# Generated by iptables-save v1.6.0 on Wed Sep 13 15:03:47 2017
*filter
:INPUT DROP [4483:305219]
:FORWARD DROP [29:13484]
:OUTPUT ACCEPT [551:86334]
-A INPUT -i enp2s0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp1s0f0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.0.0/24 -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -d 192.168.100.0/24 -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -o enp2s0 -j ACCEPT
COMMIT


В такой конфигурации из сети 192.168.0.0 доступно всё, как и задумывалось.
Но из 192.168.1.0 нет доступа к сети 192.168.100.0.

Зато при добавлении ещё одного правила:

Код: Выделить всё

-A FORWARD -s 192.168.100.0/24 -d 192.168.1.0/24 -j ACCEPT


Доступ к сети 100 появляется.

На мой взгляд, это правило избыточное, так как ожидаю, что

Код: Выделить всё

 -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT


всё разрулит и при обращении в 192.168.100.0 обратные пакеты пролетят через шлюз, как это и работает для сети 192.168.0.0.

Полагаю, проблема где-то в районе использования алиасов вместо полноценных физических интерфейсов. Или я не прав?
Спасибо сказали:

Institut
Сообщения: 281
ОС: mint

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Institut »

Но из 192.168.1.0 нет доступа к сети 192.168.100.0.

Вы отправляете новый (статус NEW) пакет из сети 192.168.1.0 к сети 192.168.100.0 на установку соединения с ней.
Ваша дефолтная политика :FORWARD DROP
Поэтому правило
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

не срабатывает. Нельзя установить соединение, так как все пакеты NEW отбрасываются.
Зато при добавлении ещё одного правила:
-A FORWARD -s 192.168.100.0/24 -d 192.168.1.0/24 -j ACCEPT
Доступ к сети 100 появляется.

Вы разрешили прохождение пакетов между этими сетями с любым состоянием, статусом.
Или я не прав?

Я объяснил, как я понимаю.
Если хотите, могу более подробно рассказать.
Спасибо сказали:

Аватара пользователя
lone_wolf
Сообщения: 204

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение lone_wolf »

Institut писал(а):
13.09.2017 16:35
Spoiler
Но из 192.168.1.0 нет доступа к сети 192.168.100.0.

Вы отправляете новый (статус NEW) пакет из сети 192.168.1.0 к сети 192.168.100.0 на установку соединения с ней.
Ваша дефолтная политика :FORWARD DROP
Поэтому правило
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

не срабатывает. Нельзя установить соединение, так как все пакеты NEW отбрасываются.
Зато при добавлении ещё одного правила:
-A FORWARD -s 192.168.100.0/24 -d 192.168.1.0/24 -j ACCEPT
Доступ к сети 100 появляется.

Вы разрешили прохождение пакетов между этими сетями с любым состоянием, статусом.
Или я не прав?

Я объяснил, как я понимаю.
Если хотите, могу более подробно рассказать.

Так же думаю, но если не затруднит раскажите подробней (думаю новичкам, в какой то степени и мне вспомнить поможет :blush: ) :drinks:
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18635
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Bizdelnick »

uscr писал(а):
13.09.2017 15:10
Но из 192.168.1.0 нет доступа к сети 192.168.100.0.

Покажите, как проверяете. И таблицы маршрутизации на обеих машинах, связь между которыми проверяется.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

uscr
Сообщения: 152
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Bizdelnick писал(а):
13.09.2017 20:59
uscr писал(а):
13.09.2017 15:10
Но из 192.168.1.0 нет доступа к сети 192.168.100.0.

Покажите, как проверяете. И таблицы маршрутизации на обеих машинах, связь между которыми проверяется.



Проверяю просто пингом.

Таблица маршрутизации выглядит незатейливо:

Код: Выделить всё

Таблица маршутизации ядра протокола IP

Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp4s0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp4s0
Спасибо сказали:

uscr
Сообщения: 152
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Institut писал(а):
13.09.2017 16:35
Вы отправляете новый (статус NEW) пакет из сети 192.168.1.0 к сети 192.168.100.0 на установку соединения с ней.
Ваша дефолтная политика :FORWARD DROP
Поэтому правило
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

не срабатывает. Нельзя установить соединение, так как все пакеты NEW отбрасываются.


Насколько я понимаю conntrack, после отправки NEW, обратный пакет будет считаться уже ESTABLISHED.

Таким образом, у меня NEW разрешён правилом -A FORWARD -s 192.168.1.0/24 -d 192.168.100.0/24 -j ACCEPT
А обратные пакеты полетят уже по -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Если почитать правила для 192.168.0.0/24 можно увидеть, что там так всё и работает, что и вызывает недоумение. Разве только разрешено форвардить всё из этой сети.
Спасибо сказали:

Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение s.xbatob »

uscr писал(а):
14.09.2017 13:09
Насколько я понимаю conntrack, после отправки NEW, обратный пакет будет считаться уже ESTABLISHED.

Нет, сначала им надо поговорить в состояниях SYN_SENT и SYN_RECEIVED
Спасибо сказали:

Institut
Сообщения: 281
ОС: mint

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Institut »

Насколько я понимаю conntrack, после отправки NEW, обратный пакет будет считаться уже ESTABLISHED

Это если соединение установлено. А до установки соединения применяются првила из iptables, и если у Вас в правилах не указано явное
разрешение на установления соединения, то тогда будет применяться Ваша дефолтная политика для цепочки FORWARD DROP.
Таким образом, у меня NEW разрешён правилом -A FORWARD -s 192.168.1.0/24 -d 192.168.100.0/24 -j ACCEPT
А обратные пакеты полетят уже по -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

У Вас в правиле -A FORWARD -s 192.168.1.0/24 -d 192.168.100.0/24 -j ACCEPT разрешены не только NEW, а все 4 имеющихся в iptables состояния соединения.
-A FORWARD -s 192.168.0.0/24 -j ACCEPT
Если почитать правила для 192.168.0.0/24 можно увидеть, что там так всё и работает, что и вызывает недоумение.

А простите, в чем недоумение, в том что Вы разрешили forward src 192.168.0.0/24 для любого конечного адреса?
Я на Ваш вопрос дал очень подробный ответ.
Вы просто поясните, что именно нужно.

lone_wolf
Так же думаю, но если не затруднит раскажите подробней (думаю новичкам, в какой то степени и мне вспомнить поможет

Новичкам наверное проще спросить.
Если подробней - любое соединение например по протоколу TCP начинается с того, что Вы посылаете пакет tcp (с определенным флагом на установку соединение, хотя можно послать пакет и с другим флагом).
Для того, кому Вы отправили пакет, он будет иметь статус NEW.
Сначала действует политика для цепочки, потом уже действуют правила из цепочки.
Дальше все определяется политикой для каждой из цепочек, например INPUT - входящие.
Если используется политика внутри цепочки DROP (запрет,блокировка) - то все что явно не разрешено в этой цепочке, будет отброшено.
Но для того-же TCP соединения ещё существуют флаги TCP пакета, и их можно использовать.
Самый простой пример для ssh на "любимом" 22 порту.
Например дефолтная политика цепочки INPUT DROP
Правило -A INPUT -p tcp -m tcp -m conntrack --ctstate RELATED,ESTABLISHED --dport 22 -j ACCEP
не разрешит подключения по SSH (пакеты SSH имеют статус NEW, и следовательно будут отброшены дефолтной политикой цепочки INPUT DROP).
Добавим првило, что-бы было так
-A INPUT -p tcp --tcp-flags SYN,FIN SYN -m conntrack --ctstate NEW --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp -m conntrack --ctstate RELATED,ESTABLISHED --dport 22 -j ACCEPT
Те разрешим только новые соеденения с установленным флагом SYN,FIN SYN - и все.
Как-то так.
Спасибо сказали:

uscr
Сообщения: 152
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Institut писал(а):
14.09.2017 17:00
Это если соединение установлено. А до установки соединения применяются првила из iptables, и если у Вас в правилах не указано явное
разрешение на установления соединения, то тогда будет применяться Ваша дефолтная политика для цепочки FORWARD DROP.

Но как тогда работает соединение из 192.168.0.0 в 192.168.100.0 ?

Institut писал(а):
14.09.2017 17:00
Я на Ваш вопрос дал очень подробный ответ.
Вы просто поясните, что именно нужно.


Очень подробный, но противоречивый. Всё, что вы написали, должно применяться и к пакетам из 192.168.0.0 в 192.168.100.0. И ничего не должно работать. Но нет. Из 192.168.0.0 есть доступ куда угодно.
Спасибо сказали:

Institut
Сообщения: 281
ОС: mint

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Institut »

Но как тогда работает соединение из 192.168.0.0 в 192.168.100.0

-A FORWARD -s 192.168.0.0/24 -j ACCEPT
Так и работает, куда угодно, так как -d (destination) не указан.
Из 192.168.0.0 есть доступ куда угодно.
Правильно, так как у Вас -d (destination) не указан.

но противоречивый
В чем именно?
Спасибо сказали:

uscr
Сообщения: 152
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Institut писал(а):
14.09.2017 17:20
В чем именно?


Вы пишете, что у меня нет доступа из 1.0 в 100.0 потому, что когда соединение ещё не установлено, для обратного пакета из 100.0 нет разрешающего правила.

Но такого правила нет и для 0.0.

Я, разумеется, уже прорабатывал вариант с моим сумашествием и менял правило

Код: Выделить всё

-A FORWARD -s 192.168.1.0/24 -d 192.168.100.0/24 -j ACCEPT


на

Код: Выделить всё

-A FORWARD -s 192.168.1.0/24 -j ACCEPT


Предсказуемо, ничего не заработало. Потому что применительно к сетям 192.168.1.0 и 192.168.100.0 эти правила будут работать совершенно одинаково.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18635
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Bizdelnick »

Странно. Единственное, что приходит в голову, — запрос от машины 192.168.1.x каким-то образом идёт на машину 192.168.100.y в обход шлюза (или в обход цепочки FORWARD), тогда как ответ — через шлюз.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Institut
Сообщения: 281
ОС: mint

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Institut »

Но такого правила нет и для 0.0

Есть правило -
-A FORWARD -s 192.168.0.0/24 -j ACCEPT

1 Вы спрашиваете -
На мой взгляд, это правило избыточное, так как ожидаю, что
Код
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Я ответил, на примерах.
Доступ к сети 100 появляется.
Это я или Вы написали?

2 Как вариант - измените правила - например
-A FORWARD -s 192.168.0.0/24 - j ACCEPT
-A FORWARD -s 192.168.1.0/24 - j ACCEPT
-A FORWARD -s 192.168.100.0/24 - j ACCEPT
-A FORWARD -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
Если не заработает, попробуйте поменяйте политику :FORWARD ACCEPT
Просто по Вашему первому вопросу, про избыточность я ответил.
Теперь выясняется, что ещё что-то не работает.
Напишите точно, что именно не получается.
Да и ведение лога должно помочь.
Но возможно, что проблема в маршрутизации.
Спасибо сказали:

uscr
Сообщения: 152
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Вопрос мой сформулирован в одной фразе в первоначальном посте:

>>В такой конфигурации из сети 192.168.0.0 доступно всё, как и задумывалось.
>>Но из 192.168.1.0 нет доступа к сети 192.168.100.0.


Ещё раз: при указании идентичных правил и для 0.0 и для 1.0 - работает только 0.0

Потом уже я написал, что при добавлении разрешения форвардить из 100.0 всё работает.
Ну так это равносильно -P FORWARD -j ACCEPT. И это не допустимо.
Задача - ограничить 100.0 таким образом, что бы соединения с хостами в сети 100.0 могли быть инициированы только из других сетей.


Institut писал(а):
14.09.2017 21:59
Но такого правила нет и для 0.0

Есть правило -
-A FORWARD -s 192.168.0.0/24 -j ACCEPT



Ну нет! Это правило разрешает форвардинг ИЗ сети 0.0 (src 0.0). Но В сеть 0.0 (dst 0.0) по нему не сматчится ни одного пакета.

Institut писал(а):
14.09.2017 21:59
2 Как вариант - измените правила - например
-A FORWARD -s 192.168.0.0/24 - j ACCEPT
-A FORWARD -s 192.168.1.0/24 - j ACCEPT
-A FORWARD -s 192.168.100.0/24 - j ACCEPT
-A FORWARD -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT


Выше ещё раз описал задачу. Такие правила, фактически, заменяются -P FORWARD -j ACCEPT
Спасибо сказали:

Institut
Сообщения: 281
ОС: mint

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Institut »

Сети 192.168.0.0 и 192.168.1.0 должны ходить в интернет.
Из сети 192.168.0.0 помимо интернета, должен быть доступ во все сети.
Из сети 192.168.1.0 должен быть доступ только к сети 192.168.100.0.
Ещё раз: при указании идентичных правил и для 0.0 и для 1.0 - работает только 0.0
Из сети 192.168.100.0 не должно быть доступа никуда. Только если в неё стукнутся из 192.168.0.0 или 192.168.1.0.
Задача - ограничить 100.0 таким образом, что бы соединения с хостами в сети 100.0 могли быть инициированы только из других сетей.
Ну нет! Это правило разрешает форвардинг ИЗ сети 0.0 (src 0.0). Но В сеть 0.0 (dst 0.0) по нему не сматчится ни одного пакета.


У Вас фактически несколько вопросов - давайте попробуем последовательно.

1 Задача - ограничить 100.0 таким образом, что бы соединения с хостами в сети 100.0 могли быть инициированы только из других сетей.
Из сети 192.168.100.0 не должно быть доступа никуда. Только если в неё стукнутся из 192.168.0.0 или 192.168.1.0.
Так давайте её прибьем во входной цепочке.
-A INPUT -s 192.168.100.0/24 -m conntrack --ctstate NEW -J LOG --log-prefix "iptables 100 NEW"
-A INPUT -s 192.168.100.0/24 -m conntrack --ctstate NEW - J DROP и добавим во входную цепочку
-A INPUT -d 192.168.100.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j LOG --log-prefix "iptables 100 !NEW"
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Проверяем, что из сети 100 пакеты NEW все-таки приходят,
потом заблокируем все попытки открыть новое соединение из 192.168.100.0/24,
но если соединение установлено, из других сетей, то разрешаем его работу,
и проверяем, что пакеты идут в 100 сеть.
Это работает при добавлениии или нет? (не забудьте пререзапусить слубу iptables)

2 Ещё раз: при указании идентичных правил и для 0.0 и для 1.0 - работает только 0.0 Добавим во входную цепочку правило -A INPUT -s 192.168.1.0/24 -j ACCEPT
Это работает при добавлениии или нет?

3 Это правило разрешает форвардинг ИЗ сети 0.0 (src 0.0). Но В сеть 0.0 (dst 0.0) по нему не сматчится ни одного пакета. -A FORWARD -d 192.168.0.0/24 -j ACCEPT
Это работает при добавлениии или нет?

Приложите пожалуйста итоговый конфиг iptables.

На край - надо пробовать ведение лога. Но для этого надо видеть всю Вашу iptables.

4 Можно попробовать для FORWARD. Хотя возможно надо поменять порядок.

-A FORWARD -s 192.168.100.0/24 -m conntrack --ctstate RELATED,ESTABLISHED - j ACCEPT
-A FORWARD -s 192.168.0.0/24 - j ACCEPT
#[-A FORWARD -d 192.168.0.0/24 -j ACCEPT]
-A FORWARD -s 192.168.1.0/24 - j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Спасибо сказали:

uscr
Сообщения: 152
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Institut писал(а):
16.09.2017 11:03
У Вас фактически несколько вопросов - давайте попробуем последовательно.

У меня один вопрос: почему шлюз для 0.0 и 100.0 применяет правила, фактически, по разному.

Institut писал(а):
16.09.2017 11:03
1 Задача - ограничить 100.0 таким образом, что бы соединения с хостами в сети 100.0 могли быть инициированы только из других сетей.
Из сети 192.168.100.0 не должно быть доступа никуда. Только если в неё стукнутся из 192.168.0.0 или 192.168.1.0.
Так давайте её прибьем во входной цепочке.
-A INPUT -s 192.168.100.0/24 -m conntrack --ctstate NEW -J LOG --log-prefix "iptables 100 NEW"
-A INPUT -s 192.168.100.0/24 -m conntrack --ctstate NEW - J DROP и добавим во входную цепочку
-A INPUT -d 192.168.100.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j LOG --log-prefix "iptables 100 !NEW"
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Проверяем, что из сети 100 пакеты NEW все-таки приходят,
потом заблокируем все попытки открыть новое соединение из 192.168.100.0/24,
но если соединение установлено, из других сетей, то разрешаем его работу,
и проверяем, что пакеты идут в 100 сеть.
Это работает при добавлениии или нет? (не забудьте пререзапусить слубу iptables)

Я понимаю, что я написал в "Администрирование для начинаюих" и вообще, вопрос такой "характерный". Но это боевой шлюз боевого офиса, который я поднял в ожидании "железного" шлюза. Я не очень сильно могу разгуляться в плане экспериментов. и конфигурация ваша, опять же, не отличается от моей. Разве что тут запрещающие правила указаны явно (и перепутаны INPUT и FORWARD).

Institut писал(а):
16.09.2017 11:03
2 Ещё раз: при указании идентичных правил и для 0.0 и для 1.0 - работает только 0.0 Добавим во входную цепочку правило -A INPUT -s 192.168.1.0/24 -j ACCEPT
Это работает при добавлениии или нет?

Тут я запутался. Вот в таком виде это правило никак не повлияет на форвардинг, а с досутпом к шлюзу у меня проблемы и не возникало.
Institut писал(а):
16.09.2017 11:03
3 Это правило разрешает форвардинг ИЗ сети 0.0 (src 0.0). Но В сеть 0.0 (dst 0.0) по нему не сматчится ни одного пакета. -A FORWARD -d 192.168.0.0/24 -j ACCEPT
Это работает при добавлениии или нет?

Это работает. Конечно работает. Оно разрешает форвардить всё в сеть 192.168.0.0. Но зачем?

Приложите пожалуйста итоговый конфиг iptables.

Сейчас, вместе со всеми "ща быстро пофикшу" и "а и так сойдёт", он выглядит так. Зато, это реальный конфиг, который сейчас загружен. Без правок.

Код: Выделить всё

# Generated by iptables-save v1.6.0 on Tue Oct  3 17:02:08 2017
*filter
:INPUT DROP [178:18511]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [2267:750112]
-A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
-A INPUT -i enp3s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp1s0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp3s0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i tun+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.0.0/24 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j ACCEPT
-A INPUT -s 192.168.100.2/32 -p tcp -m multiport --dports 139,445 -j ACCEPT
-A INPUT -s 192.168.100.3/32 -p tcp -m multiport --dports 139,445 -j ACCEPT
-A INPUT -s 192.168.100.97/32 -j ACCEPT
-A INPUT -s 192.168.100.162/32 -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.0.0/16 -d 192.168.0.0/16 -p tcp -m multiport --sports 80,443,8080,8443 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -j ACCEPT
-A FORWARD -d 192.168.10.0/24 -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -d 192.168.100.0/24 -j ACCEPT
-A FORWARD -s 192.168.100.0/24 -d 192.168.1.0/24 -j ACCEPT
-A FORWARD -s 192.168.1.0/24 -o enp1s0 -j ACCEPT
-A FORWARD -s 192.168.10.0/24 -o enp1s0 -j ACCEPT
-A FORWARD -s 192.168.101.0/24 -o enp1s0 -j ACCEPT
-A FORWARD -s 192.168.201.0/24 -o enp1s0 -j ACCEPT
-A FORWARD -s 192.168.100.97/32 -j ACCEPT
-A FORWARD -s 192.168.100.162/32 -j ACCEPT
-A FORWARD -s 192.168.100.248/32 -o enp1s0 -j ACCEPT
-A FORWARD -s 192.168.100.232/32 -o enp1s0 -j ACCEPT
-A FORWARD -s 192.168.200.0/24 -p tcp -m multiport --dports 5900 -j ACCEPT
-A FORWARD -s 192.168.200.0/24 -j ACCEPT
COMMIT
# Completed on Tue Oct  3 17:02:08 2017
# Generated by iptables-save v1.6.0 on Tue Oct  3 17:02:08 2017
*nat
:PREROUTING ACCEPT [1046:117072]
:INPUT ACCEPT [207:14146]
:OUTPUT ACCEPT [21:4216]
:POSTROUTING ACCEPT [74:8387]
-A POSTROUTING -o tun+ -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24 -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.10.0/24 -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.101.0/24 -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.201.0/24 -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.100.97/32 -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.100.162/32 -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.100.248/32 -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 192.168.100.232/32 -o enp1s0 -j MASQUERADE
COMMIT
# Completed on Tue Oct  3 17:02:08 2017
# Generated by iptables-save v1.6.0 on Tue Oct  3 17:02:08 2017
*raw
:PREROUTING ACCEPT [47670:22421308]
:OUTPUT ACCEPT [2289:754667]
COMMIT
# Completed on Tue Oct  3 17:02:08 2017
# Generated by iptables-save v1.6.0 on Tue Oct  3 17:02:08 2017
*mangle
:PREROUTING ACCEPT [47671:22421360]
:INPUT ACCEPT [2537:828644]
:FORWARD ACCEPT [45134:21592716]
:OUTPUT ACCEPT [2290:755075]
:POSTROUTING ACCEPT [47420:22347364]
COMMIT
# Completed on Tue Oct  3 17:02:08 2017
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18635
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Bizdelnick »

Извините, запутался в марсианских обозначениях интерфейсов. enp1s0 — это кто? А enp3s0?
Покажите ip a.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

uscr
Сообщения: 152
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Bizdelnick писал(а):
03.10.2017 18:01
Извините, запутался в марсианских обозначениях интерфейсов. enp1s0 — это кто? А enp3s0?
Покажите ip a.


Ну конечно:

Код: Выделить всё

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:22:15:c7:e7:35 brd ff:ff:ff:ff:ff:ff
    inet ОЙ/25 brd ОЙ scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::222:15ff:fec7:e735/64 scope link
       valid_lft forever preferred_lft forever
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1b:21:27:98:8e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.1/24 brd 192.168.0.255 scope global enp3s0
       valid_lft forever preferred_lft forever
    inet 192.168.1.1/24 brd 192.168.1.1 scope global enp3s0:1
       valid_lft forever preferred_lft forever
    inet 192.168.100.1/24 brd 192.168.100.255 scope global enp3s0:100
       valid_lft forever preferred_lft forever
    inet 192.168.200.1/24 brd 192.168.200.255 scope global enp3s0:200
       valid_lft forever preferred_lft forever
    inet 192.168.10.1/24 brd 192.168.10.255 scope global enp3s0:10
       valid_lft forever preferred_lft forever
    inet 192.168.201.1/24 brd 192.168.201.255 scope global enp3s0:201
       valid_lft forever preferred_lft forever
    inet 192.168.101.1/24 scope global enp3s0:101
       valid_lft forever preferred_lft forever
    inet6 fe80::21b:21ff:fe27:988e/64 scope link
       valid_lft forever preferred_lft forever


enp1s0 - интернет

enp3s0 - локалка
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18635
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Bizdelnick »

Я правильно понимаю, что в таком виде всё работает (за исключением условия "Из сети 192.168.100.0 не должно быть доступа никуда"), а если убрать

Код: Выделить всё

-A FORWARD -s 192.168.100.0/24 -d 192.168.1.0/24 -j ACCEPT
то из 192.168.1.0/24 перестаёт пинговаться 192.168.100.0/24?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

uscr
Сообщения: 152
ОС: Fedora

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение uscr »

Bizdelnick писал(а):
03.10.2017 18:56
Я правильно понимаю, что в таком виде всё работает (за исключением условия "Из сети 192.168.100.0 не должно быть доступа никуда"), а если убрать

Код: Выделить всё

-A FORWARD -s 192.168.100.0/24 -d 192.168.1.0/24 -j ACCEPT
то из 192.168.1.0/24 перестаёт пинговаться 192.168.100.0/24?


Верно.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18635
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Iptables FORWARD работает только с избыточными правилами

Сообщение Bizdelnick »

Код: Выделить всё

-A INPUT -i enp3s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
можно (и нужно) убрать, то же самое делается здесь:

Код: Выделить всё

-A INPUT -i enp3s0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT


Вот это правило добавлено потому что без него что-то не так работало, или случайно? По идее для HTTP-серверов оно не нужно:

Код: Выделить всё

-A FORWARD -s 192.168.0.0/16 -d 192.168.0.0/16 -p tcp -m multiport --sports 80,443,8080,8443 -j ACCEPT


По поводу основной проблемы могу сказать только, что по моему разумению всё должно работать без избыточного правила. Можно посмотреть, что реально происходит в таблице conntrack. Например с машины 192.168.1.x попингуйте несуществующий адрес 192.168.100.y и сделайте на шлюзе grep -F 192.168.100.y /proc/net/nf_conntrack
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: