@ -187,11 +187,13 @@ func recordStatistics(logger *logtail.Logger, nodeID tailcfg.StableNodeID, start
for p := range prefixes {
for p := range prefixes {
if p . Contains ( a ) && p . Bits ( ) > 0 {
if p . Contains ( a ) && p . Bits ( ) > 0 {
withinRoute = true
withinRoute = true
break
}
}
}
}
return withinRoute && tsaddr . IsTailscaleIP ( a ) , withinRoute && ! tsaddr . IsTailscaleIP ( a )
return withinRoute && tsaddr . IsTailscaleIP ( a ) , withinRoute && ! tsaddr . IsTailscaleIP ( a )
}
}
exitTraffic := make ( map [ netlogtype . Connection ] netlogtype . Counts )
for conn , cnts := range tunStats {
for conn , cnts := range tunStats {
srcIsTailscaleIP , srcWithinSubnet := classifyAddr ( conn . Src . Addr ( ) )
srcIsTailscaleIP , srcWithinSubnet := classifyAddr ( conn . Src . Addr ( ) )
dstIsTailscaleIP , dstWithinSubnet := classifyAddr ( conn . Dst . Addr ( ) )
dstIsTailscaleIP , dstWithinSubnet := classifyAddr ( conn . Dst . Addr ( ) )
@ -203,15 +205,22 @@ func recordStatistics(logger *logtail.Logger, nodeID tailcfg.StableNodeID, start
default :
default :
const anonymize = true
const anonymize = true
if anonymize {
if anonymize {
if len ( m . ExitTraffic ) == 0 {
// Only preserve the address if it is a Tailscale IP address.
m . ExitTraffic = [ ] netlogtype . ConnectionCounts { { } }
srcOrig , dstOrig := conn . Src , conn . Dst
conn = netlogtype . Connection { } // scrub everything by default
if srcIsTailscaleIP {
conn . Src = netip . AddrPortFrom ( srcOrig . Addr ( ) , 0 )
}
if dstIsTailscaleIP {
conn . Dst = netip . AddrPortFrom ( dstOrig . Addr ( ) , 0 )
}
}
m . ExitTraffic [ 0 ] . Counts = m . ExitTraffic [ 0 ] . Counts . Add ( cnts )
} else {
m . ExitTraffic = append ( m . ExitTraffic , netlogtype . ConnectionCounts { Connection : conn , Counts : cnts } )
}
}
exitTraffic [ conn ] = exitTraffic [ conn ] . Add ( cnts )
}
}
}
}
for conn , cnts := range exitTraffic {
m . ExitTraffic = append ( m . ExitTraffic , netlogtype . ConnectionCounts { Connection : conn , Counts : cnts } )
}
for conn , cnts := range sockStats {
for conn , cnts := range sockStats {
m . PhysicalTraffic = append ( m . PhysicalTraffic , netlogtype . ConnectionCounts { Connection : conn , Counts : cnts } )
m . PhysicalTraffic = append ( m . PhysicalTraffic , netlogtype . ConnectionCounts { Connection : conn , Counts : cnts } )
}
}