ipn/ipnlocal: Support TCP and Web VIP services
This commit intend to provide support for TCP and Web VIP services and also allow user to use Tun for VIP services if they want to. The commit includes: 1.Setting TCP intercept function for VIP Services. 2.Update netstack to send packet written from WG to netStack handler for VIP service. 3.Return correct TCP hander for VIP services when netstack acceptTCP. This commit also includes unit tests for if the local backend setServeConfig would set correct TCP intercept function and test if a hander gets returned when getting TCPHandlerForDst. The shouldProcessInbound check is not unit tested since the test result just depends on mocked functions. There should be an integration test to cover shouldProcessInbound and if the returned TCP handler actually does what the serveConfig says. Updates tailscale/corp#24604 Signed-off-by: KevinLiang10 <37811973+KevinLiang10@users.noreply.github.com>
This commit is contained in:
@@ -2997,3 +2997,19 @@ const LBHeader = "Ts-Lb"
|
||||
// correspond to those IPs. Any services that don't correspond to a service
|
||||
// this client is hosting can be ignored.
|
||||
type ServiceIPMappings map[string][]netip.Addr
|
||||
|
||||
// IPServiceMappings maps IP addresses to service names. This is the inverse of
|
||||
// [ServiceIPMappings], and is used to inform clients which services is an VIP
|
||||
// address associated with. This is set to b.ipVIPServiceMap every time the
|
||||
// netmap is updated. This is used to reduce the cost for looking up the service
|
||||
// name for the dst IP address in the netStack packet processing workflow.
|
||||
//
|
||||
// This is of the form:
|
||||
//
|
||||
// {
|
||||
// "100.65.32.1": "svc:samba",
|
||||
// "fd7a:115c:a1e0::1234": "svc:samba",
|
||||
// "100.102.42.3": "svc:web",
|
||||
// "fd7a:115c:a1e0::abcd": "svc:web",
|
||||
// }
|
||||
type IPServiceMappings map[netip.Addr]string
|
||||
|
||||
Reference in New Issue
Block a user