snazim se podle navodu IPv6-only síť s NAT64 zprovoznit na Turris Omnia 2020 (DNS resolver KNOT) preklad IPv6 na IPv4.
Resolver KNOT mi bohuzel i po nastaveni dle navodu stale vraci originalni IPv6 misto fiktivni 64:ff9b::/96. Mate prosim nekdo zkusenost s nastavenim DNS64 ?
Jinak pro doménová jména, která mají nativní IPv6 adresu se DNS64 nepoužije, takže to, že resolver vrací originální IPv6 místo fiktivní 64:ff9b::/96 není závada, ale vlastnost. Abyste dostal tuto syntetickou adresu, je třeba se zeptat na doménové jméno bez IPv6 adresy, například:
Nase sit (provider) nema IPv6, bohuzel SW, ktery je na vnitrni siti vyzaduje IPv6, takze potrebuju veskery IPv6 provoz (vcetne napr. seznamu, googlu …) prevezt na IPv4.
options {
# Ubuntu BIND's default options.
# Might need to tweak this if you use some other distribution.
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
# Make sure our nameserver is not abused by external
# malicious users.
allow-query { any; };
# This enables DNS64.
dns64 64:ff9b::/96 {
clients { any; };
exclude { any; };
};
};
Aha, ten návod jaksi předpokládá router Turris s IPv6 konektivitou.
V takovém případě opravdu potřebujete BIND, ten jediný je možné nastavit tak, aby syntetizoval AAAA záznamy i v případě, kdy dané jméno má AAAA záznam – to dělá právě ta volba exclude { any; };
Ostatní DNS resolvery tuto funkci nemají.
Druhá možnost je zavést do dané sítě IPv6, třeba tunelem.
Když o tom tak přemýšlím, napadá mě, že bez IPv6 konektivity nebude router nabízet výchozí bránu do lokální sítě, takže zařízení v lokální síti se nejspíš s NAT64 stejně nebudou chtít spojit.
No, přidat tu vlastnost do kresd je relativně jednoduché, jen patchnutím dns64.lua (při zachování ostatních vlastností/nedostatků dns64 modulu). Ale není mi jasné jestli tohle je extrémní případ (který má možná navíc jiné lepší řešení), nebo se skutečně občas stává že se taková věc hodí.
Myslím, že to je dost okrajový požadavek. Já osobně bych mnohem víc ocenil podporu pro PTR záznamy a možnost provádět syntézu jen pro určitou část klientů.
Což to samozřejmě, v tom modulu chybí části které jsou dle RFC povinné (třeba to PTR). Akorát ty nejsou jako tenhle případ, kdy jsem napsal nějaké řešení za minutu (které neovlivňuje normální nastavení).
Nastavení samo o sobě nestačí. Upravit/přepsat lokálně /usr/lib/knot-resolver/kres_modules/dns64.lua naštěstí není těžké, jen to každý update přemaže, takže to určitě nebude uspokojivé (pokud se to nedostane do skutečného releasu).
Tu force = true volbu jsem nakonec vyhodil. RFC vyžaduje (MUST) možnost pro zákaz některých IPv6 prefixů v odpovědích, což je teď implementováno výše a tak se zákaz pro ::/0 chová stejně jako ta navrhovaná implementace force = true. Takže výsledkem bude i situace konzistentnější s BIND.