> В принципе ожидал, что будет не совсем понятно.
> У нас есть 3 участника сети. IP адреса я выбрал похожие, но
> отличающиеся.
> 1. Клиент (95.56.21.55)
> 2. Сервер фильтрации (195.212.54.128)
> 3. Сервер (176.241.128.77)Замечательно, значит, все в Интернете в разных сетях.
> 1. Клиент посылает UDP запрос, где в адресе отправителя ставит себя, а
> в адресе получателя ставит сервер фильтрации. Клиент -> Сервер фильтрации (95.56.21.55
> -> 195.212.54.128)
> 2. Сервер фильтрации принимает пакет. Ставит вместо адреса получателя не себя, а
> адрес сервера.
Это вы делаете с помощью правила DNAT, которое вы привели.
> На этом этапе пакет должен уйти на обычный сервер. По факту отправляется
> от сервера фильтрации к обычному серверу, только адрес отправителя остается клиента.
> (На этом этапе дропается пакет сетевой картой, почему - хз).
Не думаю что оно дропается именно сетевой картой, если интересно, можно покопать.
Это ожидаемое поведение, что пакет от сервера фильтрации к обычному серверу, с адресом отправителя клиента, не доходит. Такой пакет имеет все признаки попытки атаки IP spoofing, его мог зарезать кто угодно по дороге, и правильно сделал.
> 3. Обратная цепочка.
Какая обратная цепочка? Вы хотите чтобы ответ от обычного сервера с адресом получателя клиента тоже проходил через сервер фильтрации? Не вижу как это можно сделать, не вмешиваюсь в работу глобальной маршрутизации, как Ростелеком давеча.
> Проблема находится на сервере фильтрации, так как он не передает пакет обычному
> серверу, когда его нет не в адресе отправителя, не в адресе
> получателя!
В принципе ваш Ubuntu можно заставить выпихивать этот пакет наружу, гуглите как проводить атаку IP Spoofing по UDP. Но я бы не расчитывал на то что он дойдёт до обычного сервера.
Даже если дойдёт, это дыра в безопасности, по крайней мере у вашего ISP, которую рано или поздно залатают.
> Должно получится на выходе из фильтров: Клиент -> Сервер.
Поставьте сервер фильтрации в одной и той же локалке где клиент, с приватными адресами, и пусть он подменяет но только адрес получателя но и адрес отправителя. Тогда вся маршрутизация будет работать "нормально", а обычный сервер подмены не заметит т.к. сервер фильтрации и клиент всё равно имеют один и тот-же публичный адрес.
Там можт быть нюанс, если пакет прошёл forwarding, но оказывается что egress interface одна и та-же что и ingress interface, система норовит не пересылать пакет на шлюз, а ответить пакетом ICMP Redirect. Не всегда так, зависит от реализации. Кстати, возможно, именно это вы интерпретируете как "дропается сетевой картой".