Моя программа по сути является перехватчиком udp. Моя цель - перехватить трафик c от клиентов, подключенных к серверу через ipsec / l2tp vpn, и перенаправить указанный c порт на мой локальный сервер, а затем подделать адрес источника и порт, когда он будет отправлен обратно клиенту. , У меня большая часть этой работы, за исключением того, что, когда я делаю правило SNAT в пост-маршрутизации, которое изменяет источник пакетов перехватчиков на {realServerIp}: {realServerPort}, я получаю ошибку отказа в разрешении в моем приложении. net, работающем на сервере. Если я только подделываю ip, он работает нормально, но затем порт меняет себя на 1024. Если я только подделываю порт, он работает нормально, но IP становится ip-сервером vpn-сервера (очевидно). Я что-то упустил? Это все в Ubuntu 18.04.
Вот правило пост-маршрутизации:
/sbin/iptables -t nat -I POSTROUTING 1 -p udp -d {clientAddress} --dport {clientPort} -j SNAT --to-source {realServerAddress}:{realServerPort}