|
@@ -71,7 +71,8 @@ func ixHandshakeStage0(f *Interface, hh *HandshakeHostInfo) bool {
|
|
|
|
|
|
hsBytes, err := hs.Marshal()
|
|
|
if err != nil {
|
|
|
- f.l.WithError(err).WithField("vpnAddrs", hh.hostinfo.vpnAddrs).WithField("certVersion", v).
|
|
|
+ f.l.WithError(err).WithField("vpnAddrs", hh.hostinfo.vpnAddrs).
|
|
|
+ WithField("certVersion", v).
|
|
|
WithField("handshake", m{"stage": 0, "style": "ix_psk0"}).Error("Failed to marshal handshake message")
|
|
|
return false
|
|
|
}
|
|
@@ -185,6 +186,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
var vpnAddrs []netip.Addr
|
|
|
var filteredNetworks []netip.Prefix
|
|
|
certName := remoteCert.Certificate.Name()
|
|
|
+ certVersion := remoteCert.Certificate.Version()
|
|
|
fingerprint := remoteCert.Fingerprint
|
|
|
issuer := remoteCert.Certificate.Issuer()
|
|
|
|
|
@@ -194,6 +196,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
if found {
|
|
|
f.l.WithField("vpnAddr", vpnAddr).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("handshake", m{"stage": 1, "style": "ix_psk0"}).Error("Refusing to handshake with myself")
|
|
@@ -212,6 +215,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
if len(vpnAddrs) == 0 {
|
|
|
f.l.WithError(err).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("handshake", m{"stage": 1, "style": "ix_psk0"}).Error("No usable vpn addresses from host, refusing handshake")
|
|
@@ -231,6 +235,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
if err != nil {
|
|
|
f.l.WithError(err).WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("handshake", m{"stage": 1, "style": "ix_psk0"}).Error("Failed to generate index")
|
|
@@ -253,6 +258,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
|
|
|
f.l.WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("initiatorIndex", hs.Details.InitiatorIndex).WithField("responderIndex", hs.Details.ResponderIndex).
|
|
@@ -264,6 +270,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
if hs.Details.Cert == nil {
|
|
|
f.l.WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("initiatorIndex", hs.Details.InitiatorIndex).WithField("responderIndex", hs.Details.ResponderIndex).
|
|
@@ -281,6 +288,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
if err != nil {
|
|
|
f.l.WithError(err).WithField("vpnAddrs", hostinfo.vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("handshake", m{"stage": 1, "style": "ix_psk0"}).Error("Failed to marshal handshake message")
|
|
@@ -292,6 +300,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
if err != nil {
|
|
|
f.l.WithError(err).WithField("vpnAddrs", hostinfo.vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("handshake", m{"stage": 1, "style": "ix_psk0"}).Error("Failed to call noise.WriteMessage")
|
|
@@ -299,6 +308,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
} else if dKey == nil || eKey == nil {
|
|
|
f.l.WithField("vpnAddrs", hostinfo.vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("handshake", m{"stage": 1, "style": "ix_psk0"}).Error("Noise did not arrive at a key")
|
|
@@ -366,6 +376,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
// This means there was an existing tunnel and this handshake was older than the one we are currently based on
|
|
|
f.l.WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("oldHandshakeTime", existing.lastHandshakeTime).
|
|
|
WithField("newHandshakeTime", hostinfo.lastHandshakeTime).
|
|
|
WithField("fingerprint", fingerprint).
|
|
@@ -381,6 +392,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
// This means we failed to insert because of collision on localIndexId. Just let the next handshake packet retry
|
|
|
f.l.WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("initiatorIndex", hs.Details.InitiatorIndex).WithField("responderIndex", hs.Details.ResponderIndex).
|
|
@@ -393,6 +405,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
// And we forget to update it here
|
|
|
f.l.WithError(err).WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("initiatorIndex", hs.Details.InitiatorIndex).WithField("responderIndex", hs.Details.ResponderIndex).
|
|
@@ -409,6 +422,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
if err != nil {
|
|
|
f.l.WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("initiatorIndex", hs.Details.InitiatorIndex).WithField("responderIndex", hs.Details.ResponderIndex).
|
|
@@ -417,6 +431,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
} else {
|
|
|
f.l.WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("initiatorIndex", hs.Details.InitiatorIndex).WithField("responderIndex", hs.Details.ResponderIndex).
|
|
@@ -435,6 +450,7 @@ func ixHandshakeStage1(f *Interface, addr netip.AddrPort, via *ViaSender, packet
|
|
|
f.SendVia(via.relayHI, via.relay, msg, make([]byte, 12), make([]byte, mtu), false)
|
|
|
f.l.WithField("vpnAddrs", vpnAddrs).WithField("relay", via.relayHI.vpnAddrs[0]).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("initiatorIndex", hs.Details.InitiatorIndex).WithField("responderIndex", hs.Details.ResponderIndex).
|
|
@@ -539,6 +555,7 @@ func ixHandshakeStage2(f *Interface, addr netip.AddrPort, via *ViaSender, hh *Ha
|
|
|
|
|
|
vpnNetworks := remoteCert.Certificate.Networks()
|
|
|
certName := remoteCert.Certificate.Name()
|
|
|
+ certVersion := remoteCert.Certificate.Version()
|
|
|
fingerprint := remoteCert.Fingerprint
|
|
|
issuer := remoteCert.Certificate.Issuer()
|
|
|
|
|
@@ -573,6 +590,7 @@ func ixHandshakeStage2(f *Interface, addr netip.AddrPort, via *ViaSender, hh *Ha
|
|
|
if len(vpnAddrs) == 0 {
|
|
|
f.l.WithError(err).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("handshake", m{"stage": 2, "style": "ix_psk0"}).Error("No usable vpn addresses from host, refusing handshake")
|
|
@@ -582,7 +600,9 @@ func ixHandshakeStage2(f *Interface, addr netip.AddrPort, via *ViaSender, hh *Ha
|
|
|
// Ensure the right host responded
|
|
|
if !slices.Contains(vpnAddrs, hostinfo.vpnAddrs[0]) {
|
|
|
f.l.WithField("intendedVpnAddrs", hostinfo.vpnAddrs).WithField("haveVpnNetworks", vpnNetworks).
|
|
|
- WithField("udpAddr", addr).WithField("certName", certName).
|
|
|
+ WithField("udpAddr", addr).
|
|
|
+ WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("handshake", m{"stage": 2, "style": "ix_psk0"}).
|
|
|
Info("Incorrect host responded to handshake")
|
|
|
|
|
@@ -618,6 +638,7 @@ func ixHandshakeStage2(f *Interface, addr netip.AddrPort, via *ViaSender, hh *Ha
|
|
|
duration := time.Since(hh.startTime).Nanoseconds()
|
|
|
f.l.WithField("vpnAddrs", vpnAddrs).WithField("udpAddr", addr).
|
|
|
WithField("certName", certName).
|
|
|
+ WithField("certVersion", certVersion).
|
|
|
WithField("fingerprint", fingerprint).
|
|
|
WithField("issuer", issuer).
|
|
|
WithField("initiatorIndex", hs.Details.InitiatorIndex).WithField("responderIndex", hs.Details.ResponderIndex).
|