Add hardcoded public dns

This commit is contained in:
Owen
2026-03-11 16:47:01 -07:00
committed by Owen Schwartz
parent 9c0e37eddb
commit b3cb3e1c92
9 changed files with 55 additions and 38 deletions

View File

@@ -168,6 +168,7 @@ func (o *Olm) handleConnect(msg websocket.WSMessage) {
SharedBind: o.sharedBind,
WSClient: o.websocket,
APIServer: o.apiServer,
PublicDNS: o.tunnelConfig.PublicDNS,
})
for i := range wgData.Sites {

View File

@@ -31,7 +31,7 @@ type Olm struct {
privateKey wgtypes.Key
logFile *os.File
registered bool
registered bool
tunnelRunning bool
uapiListener net.Listener
@@ -111,7 +111,7 @@ func (o *Olm) initTunnelInfo(clientID string) error {
logger.Info("Created shared UDP socket on port %d (refcount: %d)", sourcePort, sharedBind.GetRefCount())
// Create the holepunch manager
o.holePunchManager = holepunch.NewManager(sharedBind, clientID, "olm", privateKey.PublicKey().String())
o.holePunchManager = holepunch.NewManager(sharedBind, clientID, "olm", privateKey.PublicKey().String(), o.tunnelConfig.PublicDNS)
return nil
}
@@ -222,7 +222,7 @@ func (o *Olm) registerAPICallbacks() {
tunnelConfig.MTU = 1420
}
if req.DNS == "" {
tunnelConfig.DNS = "9.9.9.9"
tunnelConfig.DNS = "8.8.8.8"
}
// DNSProxyIP has no default - it must be provided if DNS proxy is desired
// UpstreamDNS defaults to 8.8.8.8 if not provided
@@ -292,16 +292,19 @@ func (o *Olm) StartTunnel(config TunnelConfig) {
logger.Info("Tunnel already running")
return
}
// debug print out the whole config
logger.Debug("Starting tunnel with config: %+v", config)
o.tunnelRunning = true // Also set it here in case it is called externally
o.tunnelConfig = config
// TODO: we are hardcoding this for now but we should really pull it from the current config of the system
o.tunnelConfig.PublicDNS = []string{"8.8.8.8:53", "1.1.1.1:53"}
// Reset terminated status when tunnel starts
o.apiServer.SetTerminated(false)
fingerprint := config.InitialFingerprint
if fingerprint == nil {
fingerprint = make(map[string]any)
@@ -313,7 +316,7 @@ func (o *Olm) StartTunnel(config TunnelConfig) {
}
o.SetFingerprint(fingerprint)
o.SetPostures(postures)
o.SetPostures(postures)
// Create a cancellable context for this tunnel process
tunnelCtx, cancel := context.WithCancel(o.olmCtx)
@@ -387,7 +390,7 @@ func (o *Olm) StartTunnel(config TunnelConfig) {
if o.registered {
o.websocket.StartPingMonitor()
logger.Debug("Already registered, skipping registration")
return nil
}
@@ -509,6 +512,14 @@ func (o *Olm) StartTunnel(config TunnelConfig) {
logger.Info("Tunnel process context cancelled, cleaning up")
}
func (o *Olm) RestoreDNSOverride() {
// Restore original DNS configuration
// we do this first to avoid any DNS issues if something else gets stuck
if err := dnsOverride.RestoreDNSOverride(); err != nil {
logger.Error("Failed to restore DNS: %v", err)
}
}
func (o *Olm) Close() {
// Stop registration first to prevent it from trying to use closed websocket
if o.stopRegister != nil {

View File

@@ -170,7 +170,7 @@ func (o *Olm) handleWgPeerRelay(msg websocket.WSMessage) {
return
}
primaryRelay, err := util.ResolveDomain(relayData.RelayEndpoint)
primaryRelay, err := util.ResolveDomainUpstream(relayData.RelayEndpoint, o.tunnelConfig.PublicDNS)
if err != nil {
logger.Error("Failed to resolve primary relay endpoint: %v", err)
return
@@ -203,7 +203,7 @@ func (o *Olm) handleWgPeerUnrelay(msg websocket.WSMessage) {
return
}
primaryRelay, err := util.ResolveDomain(relayData.Endpoint)
primaryRelay, err := util.ResolveDomainUpstream(relayData.Endpoint, o.tunnelConfig.PublicDNS)
if err != nil {
logger.Warn("Failed to resolve primary relay endpoint: %v", err)
}

View File

@@ -61,6 +61,7 @@ type TunnelConfig struct {
MTU int
DNS string
UpstreamDNS []string
PublicDNS []string
InterfaceName string
// Advanced