New to Wireguard, it looks super interesting... quick questions: 1. If it uses UDP only, how does NAT traversal (firewall punch through) work? 2. are there userspace implementations available...? Experience thus far: The src packages that are in repos for centos 7 were insufficient to compile. I downloaded full wireguard source and tried to compile the wireguard kernel module on centos 7.3 with kernel 3.10, no luck, lots of compile time header issues. I upgraded to kernel 4.10 and could compile the wireguard module under kernel 4.10, but then got stuck on how to compile the dependent modules;hey aren't specific to wireguard, but rather generic modules that just weren't in the default 4.10 kernel and I'm not sure how to build them. [root@k0 src]# insmod ./wireguard.ko insmod: ERROR: could not insert module ./wireguard.ko: Unknown symbol in module [root@k0 src]# dmesg ... [77292.707469] wireguard: Unknown symbol udp_sock_create4 (err 0) [77292.711122] wireguard: Unknown symbol udp_tunnel6_xmit_skb (err 0) [77292.714899] wireguard: Unknown symbol udp_tunnel_sock_release (err 0) [77292.718642] wireguard: Unknown symbol setup_udp_tunnel_sock (err 0) [77292.722699] wireguard: Unknown symbol udp_sock_create6 (err 0) [77292.726007] wireguard: Unknown symbol udp_tunnel_xmit_skb (err 0) [root@k0 src]# Anywho, a userland implementation would be easier to play with. Are such out there? Thanks! Jason