Как сохранить IP-адрес источника при перенаправлении трафика TCP - PullRequest
0 голосов
/ 19 февраля 2019

Я создал приложение linux, которое модифицирует трафик, поступающий на указанный порт, и перенаправляет этот трафик на другой порт (локальное приложение), используя boost::asio.Когда мое приложение принимает новое tcp-соединение, оно создает новое соединение с целевым портом и получает все данные из источника и цели и передает их друг другу (+ изменяет трафик), мое приложение находится посередине между Интернетом и целевым приложением.Кажется, все в порядке, кроме одного: когда целевой процесс принимает новое соединение (соединение из моего приложения), он видит, что исходный ip равен 127.0.0.1 (+ использует getpeername), как я могу установить новое соединение таким образом, чтобы целевое приложениесм. исходный ip как исходный ip соединения из интернета, как на изображении ниже:

Maybe using RAW sockets?

Может быть, с использованием RAW-сокетов?Можно ли создать собственный процесс TCP-квитирования с поддельным IP-адресом источника и затем передать дескриптор файла на boost::asio вместо использования boost::async_connect?Но будет ли исходящий трафик из целевого процесса идти непосредственно в Интернет, избегая моего приложения фильтрации?

К сожалению, я не могу внедрить целевой процесс, используя LD_PRELOAD, поскольку он был скомпилирован статически.Также я не могу использовать свой собственный модуль ядра

...