LINUX.ORG.RU
ФорумAdmin

Проброс трафика между Linux серверами.

 , , ,


0

1

Здравствуйте, нужна ваша помощь(подсказка). Имею 2 Linux сервера с осью (1)Ubuntu 16 & (2)Debian 8.10. Собственно мне нужно обезопасить 2й сервер, что бы по крайней мере не было на него флуды и ddos.

Прокидываю трафик таким вот образом:

$IPTABLES -t nat -A PREROUTING -d $LO_IP -p tcp -m tcp --dport 8000 -j DNAT --to-destination $SERVER_IP2:8000

$IPTABLES -A FORWARD -d $SERVER_IP2 -p tcp --dport 8000 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 5 -j REJECT --reject-with tcp-reset

$IPTABLES -A FORWARD -d $SERVER_IP2 -p tcp --dport 8000 -j ACCEPT

$IPTABLES -t nat -A POSTROUTING -d $SERVER_IP2 -p tcp -m tcp --dport 8000 -j SNAT --to-source $LO_IP

$IPTABLES -t nat -A OUTPUT -d $LO_IP -p tcp -m tcp --dport 8000 -j DNAT --to-destination $SERVER_IP2

Где $LO_IP например с ip 1.1.1.1, $SERVER_IP2 с ip 2.2.2.2.

Схема в принципе работает, но когда пользователь переходит по порту 8000, его IP адрес заменяется на 1.1.1.1 сервера-1.

Как можно реализовать так, что бы сохранялся source ip пользователя на сервере 2.2.2.2 ?

P.S завел vpn тунель ip-ip, пробовал реализовать такую же схему - но тщетно.

Сервера в интернете, локалки меж собой не имеют.



Последнее исправление: redlaine (всего исправлений: 1)

Этот вопрос тут обсасывали раз тысячу. Можно не делать postrouting --to-source, но вам необходимо, чтобы пакеты со второго сервера шли через первый обратно, а не по шлюзу в Интернет.

vodz ★★★★★
()
Ответ на: комментарий от vodz

В этом то все и дело, что пакеты должны вернуться через 1й сервер. Поэтому и спрашиваю как это можно реализовать? Темы тут я читал и на других форумах я читал.

redlaine
() автор топика
Ответ на: комментарий от kostik87

И не использовать построутинг на 1м?

Понял, проверю.

redlaine
() автор топика
Ответ на: комментарий от kostik87

Чет я вкурить не могу как это сделать. Если укажу defaut gw то потеряю сервак, т.к. он находится далековать от 1го сервера.

При указании роутинга - ничего собственно не происходит, пользователям не доступен по порту сервер2.

redlaine
() автор топика

Если сервер для веб, то на первом поднимается nginx, а на втором php-fpm или прочее, трафик проксируется. Между серверами - IPsec, OpenVPN, etc. Если нужно пробросить другие сервисы - тоже нужно проксирование специфичным для них образом.

paganmind
()
Ответ на: комментарий от redlaine

Тунель между серверами. Через него и гнать.

anc ★★★★★
()

Между серверами поднимается туннель.

На первом сервере добавляется DNAT для таких-то портов на адрес конца туннеля на втором сервере.

На втором сервере ставится статический маршрут до первого сервера через гейт прова, чтоб работал туннель, дефолтный маршрут меняется на адрес конца туннеля на первом сервере.

Или можно поиграться с маркировкой соединений, чтоб прилетающее из туннеля улетало туда же, на основе отдельной таблицы маршрутизации. man ip-netns(8) в помощь.

anonymous
()
Ответ на: комментарий от anonymous

В случае с http можно поставить на первый сервер squid/haproxy, настроить там добавление заголовка X-Forwarded-For к запросам, на втором сервере настроить его распознавание. Абсолютно стандартная схема.

anonymous
()
Ответ на: комментарий от anonymous

Это не http/https пакеты.

На втором сервере ставится статический маршрут до первого сервера через гейт прова, чтоб работал туннель, дефолтный маршрут меняется на адрес конца туннеля на первом сервере.

Попробовал, ситуация та же. Пользователь не видит конечный сервер.

redlaine
() автор топика
Ответ на: комментарий от redlaine

Попробовал, ситуация та же. Пользователь не видит конечный сервер.

Так покажите что именно пробовали. Мы не телепаты.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.