Я пытаюсь настроить некоторые конкретные правила IPTables на хосте ubuntu 14.04.1, на котором работают некоторые гости KVM.
В коробке есть несколько сетевых адаптеров с несколькими IP-адресами, и гости используют разные адреса в зависимости от их функций.
Обычно для этого я использую iptables-persistent, но по какой-то причине правила из /etc/iptables/rules.v4 не загружаются во время загрузки. iptables-persistent корректно работает, если libvirt не установлен.
Если я запускаю '/etc/init.d/iptables-persistent start', тогда загружаются правила и все настройки соответствуют моим ожиданиям. Но при загрузке их нет. Я пробовал создать очень простой файл rules.v4 для отладки, но он все еще не загружен.
Символическая ссылка init для iptables-persistent существует по адресу /etc/rc2.d/S37iptables-persistent.
Я подтвердил, что ufw отключен. Я также удалил правила nwfilter из / etc / libvirt / nwfilter, и virsh nwfilter-list не отображает никаких записей.
Есть идеи, что еще может устанавливать эти правила и как я настраиваю их по своему усмотрению?
вывод состояния ufw
# ufw status
Status: inactive
вывод virsh nwfilter-list
# virsh nwfilter-list
UUID Name
------------------------------------------------------------------
содержимое /etc/iptables/rules.v4
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:LOG_AND_DROP - [0:0]
-A INPUT -s 192.168.10.0/24 -i br0 -j ACCEPT
-A INPUT -s 192.168.11.0/24 -i br0 -j ACCEPT
-A LOG_AND_DROP -j LOG --log-prefix "iptables deny: " --log-level 7
-A LOG_AND_DROP -j DROP
COMMIT
вывод iptables -L -n после загрузки (нежелательный результат)
# iptables -L -n -v
Chain INPUT (policy ACCEPT 12 packets, 912 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
0 0 ACCEPT udp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
0 0 ACCEPT udp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
193 17300 ACCEPT all -- br0 * 192.168.10.0/24 0.0.0.0/0
0 0 ACCEPT all -- br0 * 192.168.11.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- tunnelbr0 tunnelbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * tunnelbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- tunnelbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- mgmtbr0 mgmtbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * mgmtbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- mgmtbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 132 packets, 17456 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ACCEPT udp -- * tunnelbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
0 0 ACCEPT udp -- * mgmtbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
Chain LOG_AND_DROP (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix "iptables deny: "
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Вывод iptables -L -n -v после запуска /etc/init.d/iptables-persistent start (ожидаемый результат)
# iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
13 920 ACCEPT all -- br0 * 192.168.10.0/24 0.0.0.0/0
0 0 ACCEPT all -- br0 * 192.168.11.0/24 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 8 packets, 1104 bytes)
pkts bytes target prot opt in out source destination
Chain LOG_AND_DROP (0 references)
pkts bytes target prot opt in out source destination
0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix "iptables deny: "
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Все «дополнительные» правила, которые вы видите, были добавлены демоном libvirt для поддержки (и безопасности) виртуальных сетей для гостей вашей виртуальной машины. Обычно вам не нужно беспокоиться об этих правилах (и не следует пытаться сохранить их, так как они будут дублироваться при следующей загрузке).
Также ясно, что все ваши постоянные правила брандмауэра мы добавлен в брандмауэр.
Было трудно или невозможно распознать любой из этих фактов без критического -v
переключатель для команды `iptables.
Вы проверяли / etc / network / interfaces на предмет наличия директивы pre-up, которая может выглядеть примерно так:
pre-up iptables-restore < /etc/iptables.rules
Другая возможность в Ubuntu / Debian заключается в том, что сценарии находятся в каталоге /etc/network/if-pre-up.d/, поэтому вы должны перечислить содержимое этого каталога:
# ls -al /etc/network/if-pre-up.d/
Другая возможность заключается в том, что NetworkManager загружает правила, и вы можете проверить это, выполнив поиск firewall / iptables в следующем каталоге:
/etc/NetworkManager/dispatcher.d/
Также проверьте все сценарии в / etc / init и /etc/init.d на наличие «iptables» и «iptables-restore».