Я не могу понять, как iptables загружаются при загрузке в системе centos7.7. Iptables-services не устанавливается. Я знаю о переходе на Firewalld, но хочу знать как ядро настраивает правила iptables.
Для меня важно то, что цепочка FORWARD имеет правило отклонения откуда угодно:
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
который отбрасывает все пакеты из не упомянутых в предыдущих правилах:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 192.168.100.0/24 ctstate RELATED,ESTABLISHED
ACCEPT all -- 192.168.100.0/24 anywhere
...
ACCEPT all -- anywhere 192.168.101.0/24
ACCEPT all -- 192.168.101.0/24 anywhere
Исправить достаточно просто - я просто запускаю это:
iptables -I FORWARD 2 -j ACCEPT -s 192.168.0.0/16
Но я хотел бы знать, как загружаются эти правила - и, если возможно, как изменить этот процесс.
Рекурсивный поиск в / etc / systemd и в / usr / lib / systemd для iptables ничего не возвращает. Я пришел к выводу, что ядро выбирает набор правил по умолчанию при загрузке на основе конфигурации сети. (Я отключил NetworkManager). Ничего в иерархии rc.d. Говорит ли ядро: «Ага, у меня есть эти интерфейсы, я разрешаю пересылку между ними»?
Я экспериментировал, перезагружался довольно много раз (на самом деле, виртуальная машина может быть лучшей платформой для экспериментов, мне приходит в голову), читал справочную страницу для iptables и различные интернет-ресурсы, которые в основном говорят, как загружать нужные вам правила , обычно с помощью iptables-services. Я не против создавать те правила, которые мне нужны, но не понимаю, где создаются правила по умолчанию.
В / etc / sysconfig / network-scripts также нет ничего, относящегося к iptables.
Чтобы уточнить: Firewalld не установлен. Сервисный файл присутствует, но замаскирован в / etc / systemd / system