Skip to content

Commit

Permalink
Avoid using custom dialers for proxy when not mobile
Browse files Browse the repository at this point in the history
  • Loading branch information
mlsmaycon committed Jul 2, 2024
1 parent 29e5ece commit d3c6b6f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
17 changes: 6 additions & 11 deletions client/internal/wgproxy/proxy_ebpf.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand All @@ -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
Expand Down Expand Up @@ -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 {
Expand All @@ -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{
Expand Down
7 changes: 6 additions & 1 deletion client/internal/wgproxy/proxy_userspace.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"fmt"
"net"
"runtime"

log "github.com/sirupsen/logrus"

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit d3c6b6f

Please sign in to comment.