Сделать прозрачное туннелирование трафика (с сохранением ip) в Linux?

Есть необходимость сделать некий отдельный фильтрующий сервер перед основным фронтэндом. Однако на выходе нельзя потерять ip адреса, нужно чтобы они прозрачно пришли на фронтэнд и залогировались там.

Какими инструментами правильнее решить эту задачу?

Цель — фильтрация разного мусора на уровне iptables, возможно какая-то мелкая антиддос защита. Нагрузка будет небольшая.
  • Вопрос задан
  • 5694 просмотра
Пригласить эксперта
Ответы на вопрос 6
@WEBIVAN
Если трафик на вебсайт — X-Forwarded-For:
Ответ написан
Комментировать
stavinsky
@stavinsky
Думаю, если я правильно понял, и машины будут физически рядом, или же это виртуалки, то:
1. Туннелирование здесь явно лишнее, думаю можно обойтись виртуальным бриджем на проксирующей машине. (Она будет стоять физически в разрез бекэнда и провайдера. )
2. В предложенном варианте вам не придется ничего перенастраивать на бекэнде, так как IP адреса останутся на нем.
3. фильтрация будет при этом полностью возможна средствами iptables. (хотя могу ошибаться, скорее еще понадобится ibtables, поправьте )
4. Решение универсально и поддержит любой тип IP трафика
Ответ написан
mastini
@mastini
А почему никто не предложил HAProxy?
У меня работает так
Client -> iptables -> haproxy -> backend

В зависимости от Ваших нужд, можно настроить haproxy для работы от l3 до l7
Ответ написан
@Yagoda123
Фильтрующий сервер с одним интерфейсом. Переправляет трафик на обрабатывающий сервер без SNAT.
Клиент должен обратиться именно к фильтрующему серверу и ответ получить через него.
Т.е. для клиента, IP обрабатывающего сервера = IP фильтра. С соответствующими записями в DNS (если речь о веб-сервере).
Перенаправлять трафика от клиента на обработку — это просто DNAT. А вот чтобы ответ шел через фильтр, на обрабатывающем сервере должен быть основной маршрут на фильтр. Значит, фильтр и сам сервер должны быть в одной подсети.
Вероятно, удобнее всего делать VPN от фронтэнда к фильтру (или наоборот, смотря что проще) и настраивать маршруты на обоих сторонах.
Ну и для защиты блокировать лишнее (почти все) на обычном интерфейсе обрабатывающего сервера.

Если предполагается только веб-трафик, то nginx + X-Forwarded-For. Заодно и фильтрацию любую в nginx можно сделать. А можно и Squid(ом) попробовать обойтись. Еще и кеширование в подарок получите.
Ответ написан
Комментировать
@Yagoda123
PS.
Нет, машины удалены по ДЦ, не виртуалки. Фронтэнд точно выделенный сервер (win 2008), тоннель — linux vps

А почему бы не поднять на win 2008 виртуальную машину с Linux, и весь трафик прогонять через эту виртуалку?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы