У меня также есть эта проблема, и я решил ее, добавив конфигурацию в gpg -агент, вы можете найти ее здесь:
https://stackoverflow.com/questions/49491679/how-to-enter-gnupg-agent-key-passhprase-from-cli
Ну, я понял. И это охуенно.
CentOS 8 использует nftables , что само по себе неудивительно. Он поставляется с версией nft
команд iptables
, что означает, что когда вы используете команду iptables
, она фактически поддерживает набор таблиц совместимости в nftables.
Однако...
Firewalld --, который устанавливается по умолчанию, --имеет встроенную поддержку nftables, поэтому он не использует уровень совместимости iptables.
Пока iptables -S INPUT
показывает вам:
# iptables -S INPUT
-P INPUT ACCEPT
То, что у вас на самом деле есть:
chain filter_INPUT {
type filter hook input priority 10; policy accept;
ct state established,related accept
iifname "lo" accept
jump filter_INPUT_ZONES_SOURCE
jump filter_INPUT_ZONES
ct state invalid drop
reject with icmpx type admin-prohibited <-- HEY LOOK AT THAT!
}
Решение здесь (и, честно говоря, вероятно, хороший совет в целом ):
systemctl disable --now firewalld
Без использования firewalld правила iptables, видимые с помощью iptables -S
, будут вести себя должным образом.
Если вы не собираетесь отключать firewalld, решение состоит в том, чтобы добавить указанное ниже правило nftables на хосте гипервизора.
Сначала добавьте docker0 во внутреннюю зону, если вы не использовали другую конкретную зону:
firewall-cmd --zone=internal --change-interface=docker0 --permanent
firewall-cmd --reload
Запустите nftables, чтобы применить правило для приема TCP-трафика на порт 80 на интерфейс virbr0 с пунктом назначения 192.168.122.217:
/sbin/nft добавить правило inet firewalld filter _FWDI _внутренний _разрешить oifname "virbr0" ip ddr 192.168.122.217 tcp dport 80 counter accept comment "comment something"
Также необходимо добавить правило iptables (или преобразовать его в nftables для согласованности, см. ниже):
/usr/sbin/iptables -t filter -I FORWARD -p tcp -o virbr0 -d 192.168.122.217 --dport 80 -j ACCEPT -m comment --comment "comment something"
Эти два правила можно обернуть скриптом оболочки и добавить служебную единицу systemd с задержкой, установленной на 5 секунд. Чтобы он запускался автоматически во время загрузки.
Также можно преобразовать правило iptables в nftables и сохранить оба правила в наборе правил nftables. Но как только вы запустите преобразованное правило iptables, iptables будут заблокированы, и любые новые изменения в iptables можно будет делать только с помощью firewalld и nftables.
Кроме того, необходимо иметь настроенные настраиваемые таблицы ядра, чтобы пакеты, проходящие через мост, не проходили через iptables. Net.bridge.bridge -nf -вызов и sysctl.conf
sysctl net.bridge.bridge-nf-call-iptables=0
sysctl net.bridge.bridge-nf-call-arptables=0
sysctl net.bridge.bridge-nf-call-ip6tables=0
Обратите внимание: если вы добавите его в sysctl.conf, он может не применяться автоматически во время перезагрузки, так как это известная ошибка (в зависимости от вашего дистрибутива Linux ).