Для построения туннеля можно использовать Cloak, конфиги гораздо проще xray:
root@test:~# cat /etc/cloak/cloak-server.json
{
  "ProxyBook": {
    "wireguard": [
      "udp",
      "127.0.0.1:12345"
    ]
  },
  "BindAddr": [
    ":443"
  ],
  "BypassUID": [
    "Lkpevo0X6lV5bn33Rl1QCQ=="
  ],
  "RedirAddr": "mail.google.com",
  "PrivateKey": "+EvmB2L2vKaLsh/ynQgJpyEzQ216Ec2c8svs7au+Y10="
}
root@test:~# cat /etc/cloak/cloak-client-wireguard.json
{
  "Transport": "direct",
  "ProxyMethod": "wireguard",
  "EncryptionMethod": "plain",
  "UID": "Lkpevo0X6lV5bn33Rl1QCQ==",
  "PublicKey": "+GTHXOFTYJhRM4+xv9q+ZjSykSIMOLffIs8qJN/4V2Y=",
  "ServerName": "mail.google.com",
  "NumConn": 4,
  "BrowserSig": "chrome",
  "StreamTimeout": 300
}
На сервере, на внешнем интерфейсе, закрываем подключения к порту UDP:12345 средствами iptables или другими сетевыми фильтрами.
На клиенте запускаем:
cloak-client.exe -u -c C:\Windows\System32\cloak-client-wireguard.json -i 127.0.0.1 -l 12345 -s example.com -p 443
На клиенте WG настраиваем подключение на адрес прослушиваемый нашим Cloak-Client: 127.0.0.1:12345
То есть при данной схеме UDP трафик WG упаковывается в туннель TCP предоставляемый средствами cloak.
Если сработает блокировка, можно включить шифрование в конфиге cloak-client:
root@test:~# cat /etc/cloak/cloak-client-wireguard.json
{
  "Transport": "direct",
  "ProxyMethod": "wireguard",
  "EncryptionMethod": "aes-256-gcm",
  "UID": "Lkpevo0X6lV5bn33Rl1QCQ==",
  "PublicKey": "+GTHXOFTYJhRM4+xv9q+ZjSykSIMOLffIs8qJN/4V2Y=",
  "ServerName": "mail.google.com",
  "NumConn": 4,
  "BrowserSig": "chrome",
  "StreamTimeout": 300
}