Есть условная VPS (публичный сервер), на которой работает wireguard и проброшен порт в приватный сервер на другой стороне туннеля wireguard. В общем, по сути почти то же самое, что описано в этом блоге https://www.procustodibus.com/blog/2022/09/wireguard-port-forward-from-internet/#policy-routing. Поэтому и инструкция оттуда работает. Но не совсем. Работает только для трафика tcp, для udp не работает. Проверено через iperf3 и netcat. Думаю, потому что udp ответ идёт не в wireguard.
# почти полностью калька с procustodibus
# /etc/wireguard/wg0.conf
# local settings for the private server
[Interface]
PrivateKey = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE=
#только свой ip здесь
Address = 172.17.49.2
Table = 123
# и здесь
PreUp = ip rule add from 172.17.49.2 table 123 priority 456
PostDown = ip rule del from 172.17.49.2 table 123 priority 456
# remote settings for the public server
[Peer]
PublicKey = fE/wdxzl0klVp/IR8UcaoGUMjqaWi3jAd7KzHKFS6Ds=
Endpoint = my-dyndns-address.com:51822
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Как сделать, чтобы работало для udp? Делал подобное на mikrotik через маркировку трафика, здесь подобное как-то применить?
Немного уточнений, которые, как мне кажется, не влияют на ситуацию. В качестве публичного сервера роутер OpenWRT, он за роутером провайдера, на роутере провайдера оптика, белый адрес, проброс портов (tcp, udp) в роутер OpenWRT. В качестве приватного сервера контейнер c debian в Proxmox.