LINUX.ORG.RU
ФорумAdmin

iptables-restore ошибка (которой нет) в правилах

 ,


0

1

добрый день

debian9, правила добавлены через терминал, далее iptables-save. Через if-pre-up.d выполняется iptables-restore. Все началось после первой перезагрузки и не поднятия интерфейса. Логи указывают на COMMIT в правилах. Много раз всё перепроверил - корректно. Выставил вручную в нули счетчики пакетов (никогда не обращал на это внимания, на действующих машинах такой проблемы нет, а правила выгружены с установленными счетчиками на момент iptables-save) - при перезагрузке интерфейс стал подниматься, правила загружаются, но в логах следующее

Sep 25 16:26:01 debian1c ifup[266]: iptables-restore: line 15 failed
Sep 25 16:26:01 debian1c ifup[266]: run-parts: /etc/network/if-pre-up.d/iptables exited with return code 1
Sep 25 16:26:01 debian1c ifup[266]: ifup: pre-up script failed
Sep 25 16:26:01 debian1c systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Sep 25 16:26:01 debian1c systemd[1]: Failed to start Raise network interfaces.
Sep 25 16:26:01 debian1c systemd[1]: networking.service: Unit entered failed state.
Sep 25 16:26:01 debian1c systemd[1]: networking.service: Failed with result 'exit-code'.
Sep 25 16:26:01 debian1c systemd[1]: Reached target Network.
Sep 25 16:26:01 debian1c systemd[1]: Reached target Network is Online.
вот сами правила:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i enp6s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i vboxnet0 -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A INPUT -i enp6s0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i enp6s0 -p tcp -m tcp --dport 3794 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5201 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5486 -j ACCEPT
COMMIT
iptables -F && iptables-restore < iptables.rules ошибок не дает

ifdown if && ifup if отрабатывает корректно, предварительно сброшенные правила добавляет, ошибок в логи не пишет.


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

Правила iptables положил в исполняемый скрипт. Его работу легко проверить, запустив на исполнение. Убедиться, что правила применяются. Далее в файле /etc/network/interfaces у нужного(правильного) интерфейса дописал:

pre-up /путь_к_скрипту/имя_скрипта Все работает!

kerby
()
Ответ на: комментарий от kerby

так или иначе это костыли. есть стандартный способ с iptables-restore в if-pre-up.d, который у меня работает на куче серверов. но тут какая-то абсолютно не понятная ерунда.

byy
() автор топика
Ответ на: комментарий от byy

Так её нет :(

Sep 25 16:26:01 debian1c ifup[266]: iptables-restore: line 15 failed
  1. *filter
  2. :INPUT DROP [0:0]
  3. :FORWARD DROP [0:0]
  4. :OUTPUT ACCEPT [0:0]
  5. -A INPUT -p icmp -j ACCEPT
  6. -A INPUT -i lo -j ACCEPT
  7. -A INPUT -i enp6s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
  8. -A INPUT -i vboxnet0 -j ACCEPT
  9. -A INPUT -i tun+ -j ACCEPT
  10. -A INPUT -i enp6s0 -p tcp -m tcp --dport 80 -j ACCEPT
  11. -A INPUT -i enp6s0 -p tcp -m tcp --dport 3794 -j ACCEPT
  12. -A INPUT -p tcp -m tcp --dport 5201 -j ACCEPT
  13. -A INPUT -p tcp -m tcp --dport 5486 -j ACCEPT
  14. COMMIT

От «балды»: оно (не)хочет перевод строки?

anymouze ★★
()
Ответ на: Так её нет :( от anymouze

перевод строки. Если есть - убрать, если нет - добавить.

zgen ★★★★★
()
Ответ на: Так её нет :( от anymouze

когда вставлял правила, вырезал первую и последнюю строки - комменты. соответственно 15 строка - COMMIT.

перевода нет, добавление - картины не меняет.

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

отсутствие интерфейса, упоминаемого в правилах, никак не влияет же на iptables?

byy
() автор топика
Ответ на: комментарий от byy

если перенести iptables-restore в параметр pre-up описания интерфейса - всё корректно отрабатывает.

но все же хотелось бы докопаться до истины..

byy
() автор топика
Ответ на: комментарий от byy

отсутствие интерфейса, упоминаемого в правилах, никак не влияет же на iptables?

Правила прописать можно. Скорее влияет (вот вопрос как именно). Правил(а)о прописан(ы)о, а «объект» отсутствует. Либо это ошибка, либо правило «ненужное».

Все началось после первой перезагрузки и не поднятия интерфейса

на это намекает.

правила iptables применяются при этом всегда! независимо от ругани в логах.

«Всё работает, но временами матерится»

Самый скверный случай, когда не понятно игнорировать ошибку или «копать». Причина может быть «где-то рядом» с источником ошибок

anymouze ★★
()

Так правильно на 15 строку ругается, после COMMIT надо пустую строку делать, иначе не заработает.

Dimarius
()
Ответ на: комментарий от anymouze

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

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

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

byy
() автор топика
Ответ на: комментарий от byy

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

Когда не поднимается ошибки в логах есть?

Посмотрим внимательней на ошибку

Sep 25 16:26:01 debian1c ifup[266]: iptables-restore: line 15 failed
Sep 25 16:26:01 debian1c ifup[266]: run-parts: /etc/network/if-pre-up.d/iptables exited with return code 1
Sep 25 16:26:01 debian1c ifup[266]: ifup: pre-up script failed
Sep 25 16:26:01 debian1c systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Sep 25 16:26:01 debian1c systemd[1]: Failed to start Raise network interfaces.
Sep 25 16:26:01 debian1c systemd[1]: networking.service: Unit entered failed state.
Sep 25 16:26:01 debian1c systemd[1]: networking.service: Failed with result 'exit-code'.

iptables-restore можно посмотреть?

/etc/network/if-pre-up.d/iptables в каком случае возвращает 1

anymouze ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.