diff --git a/client/internal/wgproxy/proxy_ebpf.go b/client/internal/wgproxy/proxy_ebpf.go index bbd00d6e285..487fac8dab4 100644 --- a/client/internal/wgproxy/proxy_ebpf.go +++ b/client/internal/wgproxy/proxy_ebpf.go @@ -18,9 +18,10 @@ import ( "github.com/netbirdio/netbird/client/internal/ebpf" ebpfMgr "github.com/netbirdio/netbird/client/internal/ebpf/manager" - nbnet "github.com/netbirdio/netbird/util/net" ) +const loopbackIPv4Addres = "127.0.0.1" + // WGEBPFProxy definition for proxy with EBPF support type WGEBPFProxy struct { ebpfManager ebpfMgr.Manager @@ -72,10 +73,10 @@ func (p *WGEBPFProxy) listen() error { addr := net.UDPAddr{ Port: wgPorxyPort, - IP: net.ParseIP("127.0.0.1"), + IP: net.ParseIP(loopbackIPv4Addres), } - conn, err := nbnet.ListenUDP("udp", &addr) + conn, err := net.ListenUDP("udp", &addr) if err != nil { cErr := p.Free() if cErr != nil { @@ -101,7 +102,7 @@ func (p *WGEBPFProxy) AddTurnConn(turnConn net.Conn) (net.Addr, error) { log.Infof("turn conn added to wg proxy store: %s, endpoint port: :%d", turnConn.RemoteAddr(), wgEndpointPort) wgEndpoint := &net.UDPAddr{ - IP: net.ParseIP("127.0.0.1"), + IP: net.ParseIP(loopbackIPv4Addres), Port: int(wgEndpointPort), } return wgEndpoint, nil @@ -249,12 +250,6 @@ func (p *WGEBPFProxy) prepareSenderRawSocket() (net.PacketConn, error) { return nil, fmt.Errorf("binding to lo interface failed: %w", err) } - // Set the fwmark on the socket. - err = nbnet.SetSocketOpt(fd) - if err != nil { - return nil, fmt.Errorf("setting fwmark failed: %w", err) - } - // Convert the file descriptor to a PacketConn. file := os.NewFile(uintptr(fd), fmt.Sprintf("fd %d", fd)) if file == nil { @@ -269,7 +264,7 @@ func (p *WGEBPFProxy) prepareSenderRawSocket() (net.PacketConn, error) { } func (p *WGEBPFProxy) sendPkg(data []byte, port uint16) error { - localhost := net.ParseIP("127.0.0.1") + localhost := net.ParseIP(loopbackIPv4Addres) payload := gopacket.Payload(data) ipH := &layers.IPv4{ diff --git a/client/internal/wgproxy/proxy_userspace.go b/client/internal/wgproxy/proxy_userspace.go index 234ea2a429b..0fdfd5f5150 100644 --- a/client/internal/wgproxy/proxy_userspace.go +++ b/client/internal/wgproxy/proxy_userspace.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "net" + "runtime" log "github.com/sirupsen/logrus" @@ -35,7 +36,11 @@ func (p *WGUserSpaceProxy) AddTurnConn(turnConn net.Conn) (net.Addr, error) { p.remoteConn = turnConn var err error - p.localConn, err = nbnet.NewDialer().DialContext(p.ctx, "udp", fmt.Sprintf(":%d", p.localWGListenPort)) + if runtime.GOOS == "ios" || runtime.GOOS == "android" { + p.localConn, err = nbnet.NewDialer().DialContext(p.ctx, "udp", fmt.Sprintf(":%d", p.localWGListenPort)) + } else { + p.localConn, err = net.Dial("udp", fmt.Sprintf(":%d", p.localWGListenPort)) + } if err != nil { log.Errorf("failed dialing to local Wireguard port %s", err) return nil, err