LINUX.ORG.RU
решено ФорумAdmin

Как победить iptables-restore при загрузке в CentOS 7? rc.local и systemd не помогли

 , , , ,


0

1

Всем привет,

Действия производятся на centos7. Задача: вызов скрипта при загрузке для восстановления iptables:

#!/bin/sh
iptables-restore /etc/sysconfig/iptables_working
echo `date` ": iptables restored! Source: /etc/sysconfig/iptables_working" >> ~/logs/scripts
-rwxr-xr-x 1 root    root     152 Oct  4 12:35 iptables-restore-on-boot.sh
Что пробовал:

1. /etc/rc.d/rc.local (chmod +x делал): Как через добавление строчки «iptables-restore /etc/sysconfig/iptables_working» в сам файл, так и напрямую:

iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
...
В лог пишет, но iptables не восстанавливает :(

2. Запуск при помощи systemd:

/etc/systemd/system/restore-iptables.service

-rw-rw-r-- 1 root root 191 Oct  4 12:11 /etc/systemd/system/restore-iptables.service

[Unit]
Description=Restore iptables on boot or reboot
After=network.target

[Service]
Type=oneshot
User=root
ExecStart=/root/iptables-restore-on-boot.sh

[Install]
WantedBy=multi-user.target

В лог пишет, но iptables не восстанавливает :(

systemctl start restore-iptables
systemctl enable restore-iptables
systemctl status -l restore-iptables

* restore-iptables.service - Restore iptables on boot or reboot
   Loaded: loaded (/etc/systemd/system/restore-iptables.service; enabled; vendor preset: disabled)
   Active: inactive (dead)

Oct 04 12:14:56 centos systemd[1]: Starting Restore iptables on boot or reboot...
Oct 04 12:14:57 centos systemd[1]: Started Restore iptables on boot or reboot.

# удаляем лишнее
systemctl stop restore-iptables
systemctl disable restore-iptables
rm /etc/systemd/system/restore-iptables.service
rm /root/iptables-restore-on-boot.sh
rm /etc/rc.d/rc.local

# ставим то, что действительно нужно
yum install iptables-services

# выключаем firewalld, раз он использоваться не будет
systemctl stop firewalld.service
systemctl disable firewalld.service

# перемещаем правила в правильное место
mv /etc/sysconfig/iptables_working /etc/sysconfig/iptables

# включаем сервисы
systemctl enable iptables.service
systemctl start iptables.service
Deleted ()
Ответ на: комментарий от Deleted

Спасибо!

1.iptables установлены и работают до перезагрузки.

[root@centos ~]
# systemctl status -l iptables.service
* iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
   Active: active (exited) since Tue 2016-10-04 13:19:34; 11min ago
  Process: 134 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
 Main PID: 134 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/iptables.service

Oct 04 13:19:34 centos systemd[1]: Starting IPv4 firewall with iptables...
Oct 04 13:19:34 centos iptables.init[134]: iptables: Applying firewall rules: [  OK  ]
Oct 04 13:19:34 centos systemd[1]: Started IPv4 firewall with iptables.

2. firewalld, каюсь, был включен.
3. Правила в правильном месте: "iptables_working" - резервная копия файла "/etc/sysconfig/iptables"

Появилась проблема: сейчас выключил firewalld 
systemctl stop firewalld.service
systemctl disable firewalld.service

и пропал доступ к dnsmasq... (коннект через openvpn). Сервер не пингуется, сайты на клиентах не открываются, с самого сервера всё ок. При этом при перезагрузке правила стали загружаться - есть, по крайней мере, доступ к openvpn, ssh, а до отключения firewalld после перезагрузки приходилось заходить через виртуальную консоль и делать вручную iptables-restore.

Куда копать?

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

Пока откатил как было (да, неправильно и криво, но пока пусть работает до выяснения причины):

systemctl start firewalld.service
systemctl enable firewalld.service
dnsmasq заработал, страницы открываются.

При перезагрузке правила опять не восстанавливаются и приходится вручную восстанавливать.

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

Да, прописаны. Выключаю firewalld - правила частично восстанавливаются после загрузки: порты vpn и ssh открываются. Но в таком случае dnsmasq почему-то отваливается :/ Включаю firewalld, при перазагрузке правила НЕ восстанавлиаются, но dnsmasq работает.

JohnnyW ()

Как по мне, так самый простой вариант добавить post-up скрипт в настройки интерфейсов.

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

Почти победил: всё снес, остановил firewalld, убрал его из загрузки. Сервис iptables был уже включен и загружался. Доступ к ssh, openvpn после перезагрузки есть, с ноута на Win7 сайты открывается, dnsmasq «мусор» фильрует (рекламу), но на клиентах iOS (планшет, телефон) сайты не открываются (не проходит dns lookup) лечится только

service dnsmasq restart[\code]. Ни отключение включение wifi на девайсах ни их перезагрузка ситуацию не исправляет. Причем проблема на разных версиях iOS - фиксит только перазапуск службы dnsmasq.

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

Ура, проблема решена: после сноса всего лишнего и переустановки dnsmasq всё работает после перезагрузки: iptables восстанавливаются, dnsmasq работает, на всех девайсах сайты открываются.

Всем спасибо и хорошего дня/вечера!

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