synfinatic / udp-proxy-2020

A crappy UDP router for the year 2020 and beyond
MIT License
106 stars 7 forks source link

"can't serialize Eth header" crash when running on Roon core #120

Open mglause opened 1 year ago

mglause commented 1 year ago

Hello,

Perhaps I'm doing something wrong, but udp-proxy-2020 crashes with a "can't serialize Eth header" error whenever I try to open Roon on my remote endpoint. I'm running the latest version (0.1.0) of udp-proxy-2020 on my Roon core, and my remote endpoint is connected to the Roon core via Wireguard (more specifically Netmaker). The command I'm using is "udp-proxy-2020 --interface lo --interface netmaker --port 9003 --no-listen --deliver-local --level debug" and the debug output is below. Any help would be appreciated.

Thanks, Matt


DEBUG lo: ifIndex: 1
DEBUG Listen: (main.Listen) { iname: (string) (len=2) "lo", netif: (net.Interface)(0xc0000624c0)({ Index: (int) 1, MTU: (int) 65536, Name: (string) (len=2) "lo", HardwareAddr: (net.HardwareAddr) , Flags: (net.Flags) up|loopback|running }), ports: ([]int32) (len=1 cap=2) { (int32) 9003 }, ipaddr: (string) "", promisc: (bool) true, handle: (pcap.Handle)(), writer: (pcapgo.Writer)(), inwriter: (pcapgo.Writer)(), outwriter: (pcapgo.Writer)(), sendOnly: (bool) false, localIP: (net.IP) , timeout: (time.Duration) 250ms, clientTTL: (time.Duration) 0s, sendpkt: (chan main.Send) (cap=100) 0xc000064600, clients: (map[string]time.Time) { } } DEBUG netmaker: ifIndex: 11
DEBUG Listen: (main.Listen) { iname: (string) (len=8) "netmaker", netif: (
net.Interface)(0xc000062880)({ Index: (int) 11, MTU: (int) 1420, Name: (string) (len=8) "netmaker", HardwareAddr: (net.HardwareAddr) , Flags: (net.Flags) up|pointtopoint|running }), ports: ([]int32) (len=1 cap=2) { (int32) 9003 }, ipaddr: (string) "", promisc: (bool) true, handle: (pcap.Handle)(), writer: (pcapgo.Writer)(), inwriter: (pcapgo.Writer)(), outwriter: (pcapgo.Writer)(), sendOnly: (bool) false, localIP: (net.IP) , timeout: (time.Duration) 250ms, clientTTL: (time.Duration) 0s, sendpkt: (chan main.Send) (cap=100) 0xc000064660, clients: (map[string]time.Time) { } } DEBUG lo: ifIndex: 1
DEBUG lo network: ip+net string: 127.0.0.1/8
DEBUG lo network: ip+net string: ::1/128
DEBUG Listen: (main.Listen) { iname: (string) (len=2) "lo", netif: (net.Interface)(0xc000062b80)({ Index: (int) 1, MTU: (int) 65536, Name: (string) (len=2) "lo", HardwareAddr: (net.HardwareAddr) , Flags: (net.Flags) up|loopback|running }), ports: ([]int32) (len=1 cap=2) { (int32) 9003 }, ipaddr: (string) (len=15) "127.255.255.255", promisc: (bool) false, handle: (pcap.Handle)(), writer: (pcapgo.Writer)(), inwriter: (pcapgo.Writer)(), outwriter: (*pcapgo.Writer)(), sendOnly: (bool) true, localIP: (net.IP) , timeout: (time.Duration) 250ms, clientTTL: (time.Duration) 0s, sendpkt: (chan main.Send) (cap=100) 0xc000064a20, clients: (map[string]time.Time) (len=1) { (string) (len=9) "127.0.0.1": (time.Time) 0001-01-01 00:00:00 +0000 UTC } } DEBUG lo: applying BPF Filter: (udp port 9003) and (src net 127.0.0.0/8) DEBUG Opened pcap handle on lo
DEBUG netmaker: applying BPF Filter: (udp port 9003) and (src net 10.20.20.0/24) DEBUG Opened pcap handle on netmaker
DEBUG lo: applying BPF Filter: (udp port 9003) and (src net 127.0.0.0/8) DEBUG Opened pcap handle on lo
DEBUG Initialization complete!
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(lo) ticker
DEBUG handlePackets(netmaker) ticker
DEBUG netmaker: Learned client IP: 10.20.20.1
DEBUG netmaker: received packet and fowarding onto other interfaces DEBUG lo: sending out because we're not netmaker
DEBUG lo: Learned client IP: 127.0.0.1
DEBUG lo: received packet and fowarding onto other interfaces DEBUG netmaker: sending out because we're not lo
DEBUG processing packet from netmaker on lo
FATAL can't serialize Eth header: (layers.Ethernet) { BaseLayer: (layers.BaseLayer) { Contents: ([]uint8) , Payload: ([]uint8) }, SrcMAC: (net.HardwareAddr) , DstMAC: (net.HardwareAddr) (len=6 cap=6) ff:ff:ff:ff:ff:ff, EthernetType: (layers.EthernetType) IPv4, Length: (uint16) 0 }

synfinatic commented 1 year ago

Running udp-proxy-2020 on the same host as Roon is not supported at this time. Using loopback is not supported at this time..

mglause commented 1 year ago

Ok, thank you. You might want to clarify on the main page. It current says the following:

Does udp-proxy-2020 support running on the same host as Roon/etc? As of v0.1.0, yes. You need to specify --deliver-local and --no-listen options so that it delivers packets via the loopback interface.

synfinatic commented 1 year ago

v0.1.0 isn't released yet :)