Я пытаюсь настроить веб-сервер IPv6 на CentOS 7.2 с NGINX. Я проверил исходящую и входящую связь IPv6 - все работает. Мой IP, записи AAAA и т. Д. Тоже в порядке. По сути, все в порядке, пока я не включу FirewallD.
Я настроил его по умолчанию на зону сброса с интерфейсом eth0. Я включил dhcpv6-client, http, https и ssh (ssh находится на настраиваемом порту). Когда брандмауэр включен, трафик IPv6 не может покидать или входить в машину. Traceroute6 ни к чему (даже шлюзу) идет только на localhost. Если я отключу брандмауэр, все будет хорошо.
Понятия не имею, почему это происходит. Я не смог найти в Интернете ничего, чтобы заставить FirewallD применить ту же конфигурацию IPv4 к трафику IPv6. Я лично думал, что это будет происходить автоматически, поскольку все его команды не зависят от протокола IP.
Любая помощь очень ценится.
Я столкнулся с той же проблемой. Следуя логике правил, которые устанавливает firewalld, я обнаружил, что зона сброса блокировала ipv6 icmp, который необходим для поиска соседей ipv6. Существует правило, позволяющее разрешить все ipv6 icmp, но firewalld помещает его после входных зон, где и идут правила отбрасывания.
Если вы хотите убедиться в этом сами, просто посмотрите на вывод ip6tables -L -n -v
Итак, быстрое и грязное исправление заключается в следующем:
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p icmpv6 -j ACCEPT
Firewalld ставит прямые правила перед другими правилами ввода, так что это произойдет до правил отбрасывания. Если вы хотите заблокировать такие вещи, как ping, вы также можете использовать прямое правило, но оно вам понадобится перед правилом выше.
Вы бы сделали что-то вроде:
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 0 -p icmpv6 --icmpv6-type 128 -j DROP
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 1 -p icmpv6 -j ACCEPT
Приоритеты будут держать их в порядке.
После некоторой возни с экземплярами Vultr (IPv6 работает отлично) и Contabo (IPv6 не работает с firewalld), я обнаружил следующие различия sysctl даже после запуска пользовательского Contabo enable_ipv6
сценарий:
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
Хотя в /etc/sysctl.conf
, /etc/sysctl.d
, /usr/lib/sysctl.d
, /run/sysctl.d
, или где-нибудь еще. Так что это должно быть какой-то странный взлом глубоко-глубоко внутри.
Imo, это не может быть различий между firewalld, потому что это происходит даже после чистой установки, поэтому нет никаких правил. Перечисление всех зон тоже не покажет ничего странного.
Во всяком случае, после помещения трех приведенных выше строк в /etc/sysctl.d/10-ipv6.conf
(назовите его как хотите) и после перезагрузки все заработало как положено.
И нет, не спрашивайте меня, почему IPv6 работает с net.ipv6.conf.all.disable_ipv6 = 1
и firewalld выключили, никакого смысла нет.