Зробити прозоре тунелювання трафіку (зі збереженням IP) в Linux
Якими інструментами правильніше вирішити це завдання?
Мета - фільтрація різного сміття на рівні iptables, можливо якийсь дрібний антиддос захист. Навантаження буде невелике.
Ні, заміна іп не планується. Що прийшло, те пішло. Стандартно я вирішував би це завдання так:
однак у такому разі на фронтенді світитиметься іп тунелю, що неприпустимо.
WEBIVAN, трафік можливо буде не лише на 80 портів. Тож потрібно щось універсальне на кшталт ipip.
у такому разі на фронтенді світитиметься іп тунелю
А чому ніхто не запропонував HAProxy? У мене працює так Client -> iptables -> haproxy -> backend
Залежно від ваших потреб, можна налаштувати haproxy для роботи від l3 до l7
Фільтруючий серверз одним інтерфейсом. Переправляє трафік на сервер без SNAT. Клієнт повинен звернутися саме до фільтруючого сервера і отримати відповідь через нього. Тобто. для клієнта, IP обробний сервер = IP фільтр. З відповідними записами в DNS (якщо мова про веб-сервер). Перенаправляти трафіку від клієнта на обробку - це просто DNAT. А ось щоб відповідь йшла через фільтр, на обробному сервері має бути основний маршрут на фільтр. Отже, фільтр і сам сервер мають бути в одній підмережі. Мабуть, найзручніше робити VPN від фронтенду до фільтра (або навпаки, дивлячись що простіше) і налаштовувати маршрути на обох сторонах. Ну і для захисту блокувати зайве (майже все) на звичайному інтерфейсі сервера, що обробляє.
Якщо передбачається лише веб-трафік, то nginx+X-Forwarded-For. Заодно і будь-яку фільтрацію в nginx можна зробити. А можна і Squid(ом) спробувати обійтись. Ще й кешування вподарунок отримаєте.
Ні, машини видалені за ДЦ, не віртуалки. Фронтенд точно виділений сервер (win 2008), тунель - linux vps