How I got Roon working over OpenVPN (hard for me, easy for you)

EDIT: Never mind: I got it working with the GIThub version.

I just hard coded the arguments in UDP-proxy-2020.service and it works fine. Used it with multiple devices including one where one remote device send music to another. Seems to work fine and repeatably.

@Aaron_Turner thank you very much for this!

thank you for sharing this @Francesco ! for me Udp-proxy works via the command line through SSH. but following your route, and the one on the github, i cannot get UDP proxy to load.

pi@raspberrypi:/etc/systemd/system $ systemctl status udp-proxy-2020.service
● udp-proxy-2020.service - UDP Proxy 20202
Loaded: loaded (/usr/lib/systemd/system/udp-proxy-2020.service; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2021-04-17 10:32:54 BST; 5min ago
Docs: GitHub - synfinatic/udp-proxy-2020: A crappy UDP proxy for the year 2020 and beyond
Process: 934 ExecStart=/usr/local/bin/udp-proxy-2020 ${ARGS} (code=exited, status=203/EXEC)
Main PID: 934 (code=exited, status=203/EXEC)

Apr 17 10:32:54 raspberrypi systemd[1]: udp-proxy-2020.service: Service RestartSec=100ms expired, scheduling restart.
Apr 17 10:32:54 raspberrypi systemd[1]: udp-proxy-2020.service: Scheduled restart job, restart counter is at 5.
Apr 17 10:32:54 raspberrypi systemd[1]: Stopped UDP Proxy 20202.
Apr 17 10:32:54 raspberrypi systemd[1]: udp-proxy-2020.service: Start request repeated too quickly.
Apr 17 10:32:54 raspberrypi systemd[1]: udp-proxy-2020.service: Failed with result ‘exit-code’.
Apr 17 10:32:54 raspberrypi systemd[1]: Failed to start UDP Proxy 20202.
pi@raspberrypi:/etc/systemd/system $

any insight would be welcome.
I used the executable available on github (arm32) as I could not figure out how to compile.

Again, on the command line using SSH it works fine. I am using wireguard. without udp proxy, roon starts but the phone does not show up as a player. with UDP proxy it does. this is on an Rpi 2

Glad to hear you got it working!

Any smart people out there have suggestions for getting UDP proxy 2020 working inside Home Assistant? I’m thinking that’s my best shot. Otherwise it would need to run on a Win10 PC. Suggestions? Btw, I have Wireguard running through Home Assistant and can connect to Roon remotely - it just doesn’t see my phone as an endpoint.

You didn’t say what you’re running Home Assistant on? If a raspberrypi, just install it on the Pi via ssh.

You’re right. I’m running it on an Intel nuc - installed as hass.io with supervisor. (forgive me if I have the naming convention wrong - it’s the official image from the ha site for intel nucs).

So I’m no HA expert (never used it to be honest), but looks like it’s just running Linux as the base OS. So you just need to figure out how to ssh in? Sorry, dunno anymore than that. I’d assume someone on the HA forums can help with that. There are Linux/x86 binaries available for udp-proxy-2020 for the NUC.

First all thanks for the script. Running into some issues, here is my setup:

Roon 192.168.60.10
igb2 interface 192.168.60.1/24
wg0 (Wireguard) 10.0.0.1, running on OPNSENSE (FreeBSD 12.1-RELEASE-p15-HBSD)

I am able to start the ./udp-proxy-2020-0.0.4-freebsd-amd64 --port 9003 --interface igb2,wg0 --cachettl 500

and when I access Roon from my phone the binary crashes w/ the following error:
FATA[0009] can’t serialize Eth header: {{[] []} ff:ff:ff:ff:ff:ff IPv4 0}

Any idea and would a debug log be helpful?

Thanks

--debug flag enables debugging.

Also can you provide the output of ifconfig wg0 ?

You’re using OpnSense it looks like. Do you know if that uses the user space (go?) Wireshark implementation or the kinda wonky FreeBSD kernel version that was done by the pfSense people and then got pulled at the last minute?

root@OPNsense:/home/guyp # ifconfig wg0
wg0: flags=43<UP,BROADCAST,RUNNING> metric 0 mtu 1420
options=80000
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
groups: tun wireguard
nd6 options=103<PERFORMNUD,ACCEPT_RTADV,NO_DAD>
Opened by PID 98308

Wireguard Info from OPNSENSE:

WireGuard VPN service

WireGuard® is an extremely simple yet fast and modern VPN
that utilizes state-of-the-art cryptography. It aims to be
faster, simpler, leaner, and more useful than IPSec, while
avoiding the massive headache. It intends to be considerably
more performant than OpenVPN. WireGuard is designed as a
general purpose VPN for running on embedded interfaces and
super computers alike, fit for many different circumstances.
Initially released for the Linux kernel, it is now
cross-platform and widely deployable. It is currently under
heavy development, but already it might be regarded as the
most secure, easiest to use, and simplest VPN solution in
the industry.

WWW: https://www.wireguard.com/
Changelog

1.5

  • Allow synchronization of config
    1.4
  • Add IPv6 gateway support (contributed by Alexander Korinek)
    1.3
  • Client/peer name validation to use HostnameField
    1.2
  • Dashboard widget (contributed by D. Domig)
    1.1
  • Allow adding interface route for PBR
    1.0
  • Support for most features like S2S, Roadwarrior
  • DNS, MTU, PSK
  • Allow to disable setting routes for PBR
    Maintainer: m.muenz@gmail.com
    -------------------------------------------------------------------------------------------------------------------Debug:

DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:40 main.newListener() igb2: ifIndex: 3
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:50 main.newListener() igb2 network: ip+net string: 192.168.60.1/24
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:50 main.newListener() igb2 network: ip+net string: fe80::4262:31ff:fe0b:a373/64
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:82 main.newListener() Listen: {igb2 0xc0000540c0 [9003] 192.168.60.255 false 250000000 0 0xc000056360 map[]}
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:40 main.newListener() wg0: ifIndex: 16
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:50 main.newListener() wg0 network: ip+net string: 10.0.0.1/24
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:82 main.newListener() Listen: {wg0 0xc000054340 [9003] 10.0.0.255 false 250000000 0 0xc000056420 map[]}
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:54 main.initializeInterface() igb2: applying BPF Filter: udp port 9003
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:66 main.initializeInterface() Opened pcap handle on igb2
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:54 main.initializeInterface() wg0: applying BPF Filter: udp port 9003
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:66 main.initializeInterface() Opened pcap handle on wg0
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/main.go:98 main.main() Initialization complete!
DEBU[0005]/home/vagrant/udp-proxy-2020/cmd/listen.go:121 main.(*Listen).handlePackets() handlePackets(wg0) ticker
DEBU[0005]/home/vagrant/udp-proxy-2020/cmd/listen.go:121 main.(*Listen).handlePackets() handlePackets(igb2) ticker
DEBU[0010]/home/vagrant/udp-proxy-2020/cmd/listen.go:121 main.(*Listen).handlePackets() handlePackets(igb2) ticker
DEBU[0010]/home/vagrant/udp-proxy-2020/cmd/listen.go:121 main.(*Listen).handlePackets() handlePackets(wg0) ticker
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:118 main.(*Listen).handlePackets() wg0: received packet and fowarding onto other interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:27 main.(*SendPktFeed).Send() Lock()???
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:29 main.(*SendPktFeed).Send() Lock() achieved. Sending out 1 interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:34 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:36 main.(*SendPktFeed).Send() wg0: sent
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:39 main.(*SendPktFeed).Send() Unlock()
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:142 main.(*Listen).sendPackets() processing packet from wg0 on igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:118 main.(*Listen).handlePackets() wg0: received packet and fowarding onto other interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:27 main.(*SendPktFeed).Send() Lock()???
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:29 main.(*SendPktFeed).Send() Lock() achieved. Sending out 1 interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:34 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:36 main.(*SendPktFeed).Send() wg0: sent
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:39 main.(*SendPktFeed).Send() Unlock()
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:118 main.(*Listen).handlePackets() wg0: received packet and fowarding onto other interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:27 main.(*SendPktFeed).Send() Lock()???
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:29 main.(*SendPktFeed).Send() Lock() achieved. Sending out 1 interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:34 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:36 main.(*SendPktFeed).Send() wg0: sent
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:39 main.(*SendPktFeed).Send() Unlock()
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:118 main.(*Listen).handlePackets() wg0: received packet and fowarding onto other interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:271 main.(*Listen).sendPacket() igb2 => 192.168.60.255: packet len: 360: [255 255 255 255 255 255 64 98 49 11 163 115 8 0 69 0 1 90 125 186 64 0 2 17 242 47 10 0 0 2 192 168 60 255 220 55 35 43 1 70 0 0 83 79 79 68 2 81 14 99 111 110 102 105 103 95 118 101 114 115 105 111 110 0 1 49 10 115 101 114 118 105 99 101 95 105 100 0 36 100 55 54 51 52 98 56 53 45 56 49 57 48 45 52 55 48 102 45 97 97 53 49 45 54 99 98 53 53 51 56 100 99 49 98 57 4 95 116 105 100 0 36 53 65 70 54 50 56 66 48 45 65 48 49 66 45 65 56 55 49 45 56 49 67 70 45 51 49 68 51 53 69 66 54 70 68 53 48 10 109 97 99 104 105 110 101 95 105 100 0 32 55 97 53 53 55 49 56 99 52 50 53 102 49 49 99 50 55 48 54 49 101 53 50 101 100 51 52 102 54 51 49 48 9 117 110 105 113 117 101 95 105 100 0 32 55 97 53 53 55 49 56 99 52 50 53 102 49 49 99 50 55 48 54 49 101 53 50 101 100 51 52 102 54 51 49 48 12 109 97 99 104 105 110 101 95 110 97 109 101 0 9 83 77 45 71 57 57 56 85 49 10 111 115 95 118 101 114 115 105 111 110 0 10 65 110 100 114 111 105 100 32 49 49 6 105 115 95 100 101 118 0 1 48 16 112 114 111 116 111 99 111 108 95 118 101 114 115 105 111 110 0 1 49 12 114 97 97 116 95 118 101 114 115 105 111 110 0 6 49 46 49 46 51 56 8 116 99 112 95 112 111 114 116 0 4 57 50 48 48]
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:27 main.(*SendPktFeed).Send() Lock()???
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:142 main.(*Listen).sendPackets() processing packet from wg0 on igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:29 main.(*SendPktFeed).Send() Lock() achieved. Sending out 1 interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:34 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:271 main.(*Listen).sendPacket() igb2 => 192.168.60.255: packet len: 360: [255 255 255 255 255 255 64 98 49 11 163 115 8 0 69 0 1 90 125 187 64 0 2 17 242 46 10 0 0 2 192 168 60 255 211 29 35 43 1 70 0 0 83 79 79 68 2 81 14 99 111 110 102 105 103 95 118 101 114 115 105 111 110 0 1 49 10 115 101 114 118 105 99 101 95 105 100 0 36 100 55 54 51 52 98 56 53 45 56 49 57 48 45 52 55 48 102 45 97 97 53 49 45 54 99 98 53 53 51 56 100 99 49 98 57 4 95 116 105 100 0 36 53 65 70 54 50 56 66 48 45 65 48 49 66 45 65 56 55 49 45 56 49 67 70 45 51 49 68 51 53 69 66 54 70 68 53 48 10 109 97 99 104 105 110 101 95 105 100 0 32 55 97 53 53 55 49 56 99 52 50 53 102 49 49 99 50 55 48 54 49 101 53 50 101 100 51 52 102 54 51 49 48 9 117 110 105 113 117 101 95 105 100 0 32 55 97 53 53 55 49 56 99 52 50 53 102 49 49 99 50 55 48 54 49 101 53 50 101 100 51 52 102 54 51 49 48 12 109 97 99 104 105 110 101 95 110 97 109 101 0 9 83 77 45 71 57 57 56 85 49 10 111 115 95 118 101 114 115 105 111 110 0 10 65 110 100 114 111 105 100 32 49 49 6 105 115 95 100 101 118 0 1 48 16 112 114 111 116 111 99 111 108 95 118 101 114 115 105 111 110 0 1 49 12 114 97 97 116 95 118 101 114 115 105 111 110 0 6 49 46 49 46 51 56 8 116 99 112 95 112 111 114 116 0 4 57 50 48 48]
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:36 main.(*SendPktFeed).Send() wg0: sent
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:39 main.(*SendPktFeed).Send() Unlock()
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:142 main.(*Listen).sendPackets() processing packet from wg0 on igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:271 main.(*Listen).sendPacket() igb2 => 192.168.60.255: packet len: 360: [255 255 255 255 255 255 64 98 49 11 163 115 8 0 69 0 1 90 125 188 64 0 2 17 242 45 10 0 0 2 192 168 60 255 130 11 35 43 1 70 0 0 83 79 79 68 2 81 14 99 111 110 102 105 103 95 118 101 114 115 105 111 110 0 1 49 10 115 101 114 118 105 99 101 95 105 100 0 36 100 55 54 51 52 98 56 53 45 56 49 57 48 45 52 55 48 102 45 97 97 53 49 45 54 99 98 53 53 51 56 100 99 49 98 57 4 95 116 105 100 0 36 69 49 69 57 52 50 53 50 45 67 67 55 56 45 69 53 53 55 45 68 66 56 65 45 67 56 65 53 49 66 52 69 57 52 51 48 10 109 97 99 104 105 110 101 95 105 100 0 32 55 97 53 53 55 49 56 99 52 50 53 102 49 49 99 50 55 48 54 49 101 53 50 101 100 51 52 102 54 51 49 48 9 117 110 105 113 117 101 95 105 100 0 32 55 97 53 53 55 49 56 99 52 50 53 102 49 49 99 50 55 48 54 49 101 53 50 101 100 51 52 102 54 51 49 48 12 109 97 99 104 105 110 101 95 110 97 109 101 0 9 83 77 45 71 57 57 56 85 49 10 111 115 95 118 101 114 115 105 111 110 0 10 65 110 100 114 111 105 100 32 49 49 6 105 115 95 100 101 118 0 1 48 16 112 114 111 116 111 99 111 108 95 118 101 114 115 105 111 110 0 1 49 12 114 97 97 116 95 118 101 114 115 105 111 110 0 6 49 46 49 46 51 56 8 116 99 112 95 112 111 114 116 0 4 57 50 48 48]
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:142 main.(*Listen).sendPackets() processing packet from wg0 on igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:271 main.(*Listen).sendPacket() igb2 => 192.168.60.255: packet len: 360: [255 255 255 255 255 255 64 98 49 11 163 115 8 0 69 0 1 90 125 189 64 0 2 17 242 44 10 0 0 2 192 168 60 255 137 36 35 43 1 70 0 0 83 79 79 68 2 81 14 99 111 110 102 105 103 95 118 101 114 115 105 111 110 0 1 49 10 115 101 114 118 105 99 101 95 105 100 0 36 100 55 54 51 52 98 56 53 45 56 49 57 48 45 52 55 48 102 45 97 97 53 49 45 54 99 98 53 53 51 56 100 99 49 98 57 4 95 116 105 100 0 36 69 49 69 57 52 50 53 50 45 67 67 55 56 45 69 53 53 55 45 68 66 56 65 45 67 56 65 53 49 66 52 69 57 52 51 48 10 109 97 99 104 105 110 101 95 105 100 0 32 55 97 53 53 55 49 56 99 52 50 53 102 49 49 99 50 55 48 54 49 101 53 50 101 100 51 52 102 54 51 49 48 9 117 110 105 113 117 101 95 105 100 0 32 55 97 53 53 55 49 56 99 52 50 53 102 49 49 99 50 55 48 54 49 101 53 50 101 100 51 52 102 54 51 49 48 12 109 97 99 104 105 110 101 95 110 97 109 101 0 9 83 77 45 71 57 57 56 85 49 10 111 115 95 118 101 114 115 105 111 110 0 10 65 110 100 114 111 105 100 32 49 49 6 105 115 95 100 101 118 0 1 48 16 112 114 111 116 111 99 111 108 95 118 101 114 115 105 111 110 0 1 49 12 114 97 97 116 95 118 101 114 115 105 111 110 0 6 49 46 49 46 51 56 8 116 99 112 95 112 111 114 116 0 4 57 50 48 48]
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:118 main.(*Listen).handlePackets() wg0: received packet and fowarding onto other interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:27 main.(*SendPktFeed).Send() Lock()???
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:29 main.(*SendPktFeed).Send() Lock() achieved. Sending out 1 interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:34 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:36 main.(*SendPktFeed).Send() wg0: sent
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:39 main.(*SendPktFeed).Send() Unlock()
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:142 main.(*Listen).sendPackets() processing packet from wg0 on igb2
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:271 main.(*Listen).sendPacket() igb2 => 192.168.60.255: packet len: 140: [255 255 255 255 255 255 64 98 49 11 163 115 8 0 69 0 0 126 125 211 0 0 2 17 50 243 10 0 0 2 192 168 60 255 233 124 35 43 0 106 0 0 83 79 79 68 2 81 10 115 101 114 118 105 99 101 95 105 100 0 36 100 53 50 98 50 99 98 55 45 48 50 99 53 45 52 56 102 99 45 57 56 49 98 45 97 49 48 102 48 97 97 100 100 57 51 98 4 95 116 105 100 0 36 53 54 50 98 49 100 54 57 45 50 51 101 49 45 52 49 53 52 45 97 99 54 57 45 51 101 54 49 99 49 48 49 102 99 48 48]
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:118 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:27 main.(*SendPktFeed).Send() Lock()???
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:29 main.(*SendPktFeed).Send() Lock() achieved. Sending out 1 interfaces
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:34 main.(*SendPktFeed).Send() igb2: sending out because we’re not wg0
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:36 main.(*SendPktFeed).Send() igb2: sent
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:142 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0013]/home/vagrant/udp-proxy-2020/cmd/send.go:39 main.(*SendPktFeed).Send() Unlock()
FATA[0013]/home/vagrant/udp-proxy-2020/cmd/listen.go:266 main.(*Listen).sendPacket() can’t serialize Eth header: {{[] []} ff:ff:ff:ff:ff:ff IPv4 0}

What version of udp-proxy-2020 are you running? (udp-proxy-2020 --version) Some of those log messsages aren’t right. Are you running the latest version which has wireguard support (v0.0.6)?

udp-proxy-2020-0.0.4-freebsd-amd64, thought I had dloaded the latest, Will try 0.0.6 and report back,

Thanks

Unfortunately there’s no way to update my original post.

The latest release can always be found here: Releases · synfinatic/udp-proxy-2020 · GitHub

No more crash, but my S21/android phone does not show as zone in Roon. Here is the debug log:

root@OPNsense:/home/guyp # ./udp-proxy-2020-0.0.6-freebsd-amd64 --port 9003 --interface igb1,igb2,wg0 --cachettl 300 --debug
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:43 main.newListener() igb1: ifIndex: 2
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:53 main.newListener() igb1 network: ip+net string: fe80::4262:31ff:fe0b:a372/64
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:53 main.newListener() igb1 network: ip+net string: 192.168.1.1/24
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:92 main.newListener() Listen: {igb1 0xc000160080 [9003] 192.168.1.255 false 250000000 0 0xc0000b02a0 map[]}
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:43 main.newListener() igb2: ifIndex: 3
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:53 main.newListener() igb2 network: ip+net string: 192.168.60.1/24
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:53 main.newListener() igb2 network: ip+net string: fe80::4262:31ff:fe0b:a373/64
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:92 main.newListener() Listen: {igb2 0xc000160300 [9003] 192.168.60.255 false 250000000 0 0xc0000b0360 map[]}
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:43 main.newListener() wg0: ifIndex: 16
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:53 main.newListener() wg0 network: ip+net string: 10.0.0.1/24
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/listen.go:92 main.newListener() Listen: {wg0 0xc000160500 [9003] 10.0.0.255 false 250000000 0 0xc0000b0420 map[]}
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:54 main.initializeInterface() igb1: applying BPF Filter: udp port 9003
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:66 main.initializeInterface() Opened pcap handle on igb1
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:54 main.initializeInterface() igb2: applying BPF Filter: udp port 9003
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:66 main.initializeInterface() Opened pcap handle on igb2
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:54 main.initializeInterface() wg0: applying BPF Filter: udp port 9003
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/interfaces.go:66 main.initializeInterface() Opened pcap handle on wg0
DEBU[0000]/home/vagrant/udp-proxy-2020/cmd/main.go:116 main.main() Initialization complete!
DEBU[0005]/home/vagrant/udp-proxy-2020/cmd/listen.go:131 main.(*Listen).handlePackets() handlePackets(igb1) ticker

The logs you’ve pased don’t indicate that udp-proxy-2020 is seeing any Roon packets from the phone on the VPN or vice-versa. Ensure that you’ve disabled WiFi on your phone and the phone is connected to the VPN. You may need to kill & restart the Roon app on your phone.

If that still doesn’t work, please capture the network traffic on your wireguard tunnel where udp-proxy-2020 is running:

tcpdump -i wg0 -s0 -w roon.pcap -c 100

That will capture up to 100 packets which should be plenty. But if it doesn’t auto-exit after a minute while Roon is running, you can hit CTRL-C.

At that point, it’s probably best to create a ticket on github and attach the pcap to the ticket.

Debug and pcap…

DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:128 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() igb1: sending out because we’re not igb2
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007ef1af00004011c965c0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002466666539613063632d623539352d346566622d396533312d336636653763653231383763
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:128 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() igb1: sending out because we’re not igb2
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() wg0 => 10.0.0.255: packet len: 130: 020000004500007e56ed000040111bd1c0a83c0a0a0000ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002466666539613063632d623539352d346566622d396533312d336636653763653231383763
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007e56ed000040116428c0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002466666539613063632d623539352d346566622d396533312d336636653763653231383763
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007e69d1000040115144c0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002466666539613063632d623539352d346566622d396533312d336636653763653231383763
DEBU[0104]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() wg0 => 10.0.0.255: packet len: 130: 020000004500007e69d10000401108edc0a83c0a0a0000ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002466666539613063632d623539352d346566622d396533312d336636653763653231383763
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/listen.go:131 main.(*Listen).handlePackets() handlePackets(igb2) ticker
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/listen.go:131 main.(*Listen).handlePackets() handlePackets(wg0) ticker
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/listen.go:131 main.(*Listen).handlePackets() handlePackets(igb1) ticker
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/listen.go:128 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() igb1: sending out because we’re not igb2
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() wg0 => 10.0.0.255: packet len: 130: 020000004500007e37fd000040113ac1c0a83c0a0a0000ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002466666539613063632d623539352d346566622d396533312d336636653763653231383763
DEBU[0105]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007e37fd000040118318c0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002466666539613063632d623539352d346566622d396533312d336636653763653231383763
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:128 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() igb1: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:128 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() wg0 => 10.0.0.255: packet len: 130: 020000004500007ecb2700004011a796c0a83c0a0a0000ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007ecb2700004011efedc0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() igb1: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:128 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() wg0 => 10.0.0.255: packet len: 130: 020000004500007ef34d000040117f70c0a83c0a0a0000ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() igb1: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007ef34d00004011c7c7c0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007e586c0000401162a9c0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:128 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() wg0 => 10.0.0.255: packet len: 130: 020000004500007e586c000040111a52c0a83c0a0a0000ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() igb1: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007e6b62000040114fb3c0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:128 main.(*Listen).handlePackets() igb2: received packet and fowarding onto other interfaces
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() igb1: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/send.go:32 main.(*SendPktFeed).Send() wg0: sending out because we’re not igb2
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on igb1
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() igb1 => 192.168.1.255: packet len: 140: ffffffffffff4062310ba37208004500007e38220000401182f3c0a83c0ac0a801ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() wg0 => 10.0.0.255: packet len: 130: 020000004500007e6b6200004011075cc0a83c0a0a0000ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:153 main.(*Listen).sendPackets() processing packet from igb2 on wg0
DEBU[0106]/home/vagrant/udp-proxy-2020/cmd/listen.go:290 main.(*Listen).sendPacket() wg0 => 10.0.0.255: packet len: 130: 020000004500007e3822000040113a9cc0a83c0a0a0000ffebf0232b006a0000534f4f4402510a736572766963655f6964002435653230343261642d396263352d343530382d626539322d666636386631396264633933045f746964002434306363626465332d356334632d343434362d623938352d613337343762656337363830

Will attach pcap on github.
Phone not showing as endpoint/zone in ROON. · Issue #58 · synfinatic/udp-proxy-2020 (github.com)

Thanks

I have a working IPSec VPN RoadWarrior (quite easy setup) using iPfire

I’m sure net to net will work also.

Okay, I’ve been enjoying the beautiful Italian Toscana country-side and decided to dig deep into how to cross compile FreeBSD binaries because there are only so many pictures of duomos I can take or wine tastings I can do. I won’t bore you with the story which was mostly comprised of a series of hilarious mistakes on my part, but the good news is I now have semi-official FreeBSD binaries for ARM64, ARMv6 and ARMv7. All you peeps with NetGate SG-1100, SG-2100 and SG-3100 should be covered now.

Anyways, there are no new features or bug fixes, just the binaries so not doing another official release. Until then, feel free to find some binaries available here. Please note that I will remove these binaries once there is another official release.

1 Like

Man… Aaron, your a boss. Thank you SO much! Works great on pfsense w/ VLANS and over OpenVPN. I am a noob at networking etc. but got this working with ROCK on proxmox… many many thanks.

1 Like

@TKronic thanks for letting me know this helped! :slight_smile: Always feels great knowing something I did helped someone else!

1 Like

Question… do I need to run “udp-proxy-2020 --port 9003 --interface eth0,eth0.100,eth1,tun0 --cachettl 300” (modified for my network of course) every time I want to connect a device? Everything works great when I run this command, but, when I reconnect an idle or off device / reconnect VPN, I have to run it again. Thanks again!