mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-18 00:06:38 +00:00
- Add IPv6 router dispatch to AddOutputDNAT/RemoveOutputDNAT in both nftables and iptables managers (was hardcoded to v4 router only). - Fix all DNAT and AddDNATRule dispatch methods to check Is6() first, then error with ErrIPv6NotInitialized if v6 components are missing. Previously the hasIPv6() && Is6() pattern silently fell through to the v4 router for v6 addresses when v6 was not initialized. - Add ErrIPv6NotInitialized sentinel error, replace all ad-hoc "IPv6 not initialized" format strings across both managers. - Rename sourcePort/targetPort to originalPort/translatedPort in all DNAT method signatures to reflect actual DNAT semantics. - Remove stale "localAddr must be IPv4" comments from interface.
31 lines
761 B
Go
31 lines
761 B
Go
package dns
|
|
|
|
import (
|
|
"net/netip"
|
|
|
|
"github.com/miekg/dns"
|
|
|
|
firewall "github.com/netbirdio/netbird/client/firewall/manager"
|
|
)
|
|
|
|
const (
|
|
DefaultPort = 53
|
|
)
|
|
|
|
// Firewall provides DNAT capabilities for DNS port redirection.
|
|
// This is used when the DNS server cannot bind port 53 directly
|
|
// and needs firewall rules to redirect traffic.
|
|
type Firewall interface {
|
|
AddOutputDNAT(localAddr netip.Addr, protocol firewall.Protocol, originalPort, translatedPort uint16) error
|
|
RemoveOutputDNAT(localAddr netip.Addr, protocol firewall.Protocol, originalPort, translatedPort uint16) error
|
|
}
|
|
|
|
type service interface {
|
|
Listen() error
|
|
Stop() error
|
|
RegisterMux(domain string, handler dns.Handler)
|
|
DeregisterMux(key string)
|
|
RuntimePort() int
|
|
RuntimeIP() netip.Addr
|
|
}
|