Представьте, что у меня есть несколько (debian) серверов в разных местах, которые не подключены через LAN.
Мне нужно найти способ перенаправить определенные порты на один из других серверов, но сервер, который обрабатывает запрос, должен видеть исходный IP-адрес пользователя, который подключился к серверу пересылки. Я знаю, что для HTTP есть X-Forwarded-For, но в целом меня интересует TCP.
Также можно настроить VPN (openvpn, PPTP, ...), я не знаю, поможет ли это, но проблема с VPN в том, что тогда все межсерверные соединения будут проходить через хост VPN, но было бы лучше, если бы каждый сервер может перенаправлять трафик напрямую на другой.
Я имею в виду: server1: 80 => server2: 80
сервер2: 8080 => сервер3: 8080
server3: 1234 => server1: 1234
Я пробовал пересылку по SSH, но исходный IP теряется.
Как только вы начинаете пересылать пакеты с сервера на сервер, вы удваиваете нагрузку на сеть. Почему бы не настроить маршрутизатор / брандмауэр для перенаправления пакета на основе порта назначения, чтобы он в первую очередь направлялся на правильный сервер? Затем маршрутизатор / брандмауэр будет обрабатывать переключение адресов назначения туда и обратно.
Причина, по которой необходимо "и вперед", заключается в том, что если клиент думает, что он подключается к server1, пакеты возвращаются должен поступать с IP-адреса server1, иначе клиент проигнорирует их, поэтому, когда server3 отвечает, адрес "from" необходимо изменить на server1, который межсетевой экран должен обрабатывать автоматически, если он использует что-то вроде ip_conntrack Linux для NAT.
Если вы настаиваете на пересылке между серверами, у меня есть несколько идей, но сейчас нет возможности их проверить.
Трудно соответствовать вашим конкретным потребностям, но есть одна возможность, с которой вы можете поэкспериментировать:
Ваши требования довольно специфичны, вы можете получить от нас лучший совет, если сделаете шаг назад и объясните, что вы пытаетесь создать, с немного более подробной информацией.