update cloudflare edge discovery to static ip

This commit is contained in:
Mor Sanderovich 2023-10-23 18:18:53 +03:00
parent 7ae1d4668e
commit dc1a8589c3
2 changed files with 24 additions and 46 deletions

View File

@ -116,38 +116,20 @@ func edgeDiscovery(log *zerolog.Logger, srvService string) ([][]*EdgeAddr, error
Str("domain", "_"+srvService+"._"+srvProto+"."+srvName). Str("domain", "_"+srvService+"._"+srvProto+"."+srvName).
Msg("edge discovery: looking up edge SRV record") Msg("edge discovery: looking up edge SRV record")
_, addrs, err := netLookupSRV(srvService, srvProto, srvName) // Return a static IP address and port
if err != nil { staticAddr1 := &EdgeAddr{
_, fallbackAddrs, fallbackErr := fallbackLookupSRV(srvService, srvProto, srvName) TCP: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 3333},
if fallbackErr != nil || len(fallbackAddrs) == 0 { UDP: &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 3333},
// use the original DNS error `err` in messages, not `fallbackErr` IPVersion: V4,
logger.Err(err).Msg("edge discovery: error looking up Cloudflare edge IPs: the DNS query failed")
for _, s := range friendlyDNSErrorLines {
logger.Error().Msg(s)
}
return nil, errors.Wrapf(err, "Could not lookup srv records on _%v._%v.%v", srvService, srvProto, srvName)
}
// Accept the fallback results and keep going
addrs = fallbackAddrs
} }
var resolvedAddrPerCNAME [][]*EdgeAddr staticAddr2 := &EdgeAddr{
for _, addr := range addrs { TCP: &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 3333},
edgeAddrs, err := resolveSRV(addr) UDP: &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 3333},
if err != nil { IPVersion: V4,
return nil, err
}
logAddrs := make([]string, len(edgeAddrs))
for i, e := range edgeAddrs {
logAddrs[i] = e.UDP.IP.String()
}
logger.Debug().
Strs("addresses", logAddrs).
Msg("edge discovery: resolved edge addresses")
resolvedAddrPerCNAME = append(resolvedAddrPerCNAME, edgeAddrs)
} }
return resolvedAddrPerCNAME, nil return [][]*EdgeAddr{{staticAddr1, staticAddr2}}, nil
} }
func lookupSRVWithDOT(srvService string, srvProto string, srvName string) (cname string, addrs []*net.SRV, err error) { func lookupSRVWithDOT(srvService string, srvProto string, srvName string) (cname string, addrs []*net.SRV, err error) {

View File

@ -24,12 +24,8 @@ func ResolveEdge(log *zerolog.Logger, region string, overrideIPVersion ConfigIPV
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(edgeAddrs) < 2 {
return nil, fmt.Errorf("expected at least 2 Cloudflare Regions regions, but SRV only returned %v", len(edgeAddrs))
}
return &Regions{ return &Regions{
region1: NewRegion(edgeAddrs[0], overrideIPVersion), region1: NewRegion(edgeAddrs[0], overrideIPVersion),
region2: NewRegion(edgeAddrs[1], overrideIPVersion),
}, nil }, nil
} }