Мой nftables.conf
просто бежит flush ruleset
затем include
мои правила брандмауэра. Я скопировал их из вики Arch. Итак, включенный 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.
Кто-нибудь видел что-нибудь подобное раньше?
Вы отбрасываете слишком много типов 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 приведет к серьезным задержкам или даже блокировке соединений, так что лучше этого избегайте :)
Подключение по IPv6 происходит не сразу, но подождав несколько минут, я обнаружил, что команда ping6 возвращает вышеупомянутую ошибку.
Думаю, вы сломали открытие соседки. Первоначально все продолжает работать, потому что у вас уже есть вещи в кеше обнаружения соседей, но позже время ожидания записей истекает.
Вы, кажется, разрешаете сообщения запроса соседа, но не сообщения объявления соседа.