Мои правила nftables блокируют IPv6
Мой nftables.conf
просто бежит flush ruleset
затем include
мои правила брандмауэра. Я скопировал их из Arch wiki. Так что включены firewall.rules
содержит:
# An iptables-like firewall
table firewall {
chain incoming {
type filter hook input priority 0;
# established/related connections
ct state established,related accept
# invalid connections
ct state invalid drop
# loopback interface
iifname lo accept
# icmp
icmp type echo-request accept
# open tcp ports
tcp dport {http, https, ...} accept
# open udp ports
udp dport {...} accept
# drop everything else
drop
}
}
table ip6 firewall {
chain incoming {
type filter hook input priority 0;
# established/related connections
ct state established,related accept
# invalid connections
ct state invalid drop
# loopback interface
iifname lo accept
# icmp
icmpv6 type {echo-request,nd-neighbor-solicit,nd-router-solicit,mld-listener-query} accept
# open tcp ports
tcp dport {http, https, ....} accept
# open udp ports
udp dport {...} accept
# drop everything else
drop
}
}
Поэтому, когда все загружено, я не могу использовать IPv6, ping6
ошибки с
From ams16s21-in-x0e.1e100.net icmp_seq=1 Destination unreachable: Address unreachable
Однако, если я бегу sudo nft flush table ip6 firewall
, ping6
сразу начинает работать как положено. Если я затем заново установлю таблицу брандмауэра ip6, подключение к IPv6 не произойдет немедленно, но через несколько минут я найду ping6
команда, возвращающая вышеупомянутую ошибку.
Мой хостинг-провайдер не предоставляет никакой автоматической настройки IPv6 или рекламы на маршрутизаторах на уровне сети fwiw.
Кто-нибудь видел что-нибудь подобное раньше?
2 ответа
Подключение к IPv6 не происходит сразу же, но через несколько минут я обнаружил, что команда ping6 возвращает вышеупомянутую ошибку.
Я предполагаю, что вы сломали открытие соседки. Первоначально все продолжает работать, потому что у вас уже есть что-то в кэше обнаружения соседей, но позже время записи истекает.
Похоже, что вы разрешаете соседним запросам сообщения, но не соседние рекламные сообщения.
Вы отбрасываете слишком много типов ICMPv6. Большинство сообщений об ошибках должно быть разрешено из-за state established,related
, но вы отбрасываете рекламу соседей и рекламу роутеров. Попробуй это:
icmpv6 type {echo-request,nd-neighbor-solicit,nd-neighbor-advert,nd-router-solicit,
nd-router-advert,mld-listener-query} accept
Это позволит незапрошенные NA и RA, что, вероятно, решит вашу проблему.
Если вы хотите убедиться, что сообщения об ошибках также проходят (я не проверял, если state established,related
действительно работает для всех сообщений об ошибках ICMPv6), затем также добавьте те:
icmpv6 type {echo-request,nd-neighbor-solicit,nd-neighbor-advert,nd-router-solicit,
nd-router-advert,mld-listener-query,destination-unreachable,
packet-too-big,time-exceeded,parameter-problem} accept
В этом нет необходимости, но на всякий случай:) Удаление сообщений об ошибках ICMPv6 приведет к серьезным задержкам или даже блокированию соединений, поэтому лучше избегайте этого:)