Фильтрация DDoS атак через IPIP туннель с использованием серверов OVH
IPIP позволяет пропускать трафик с одной хост машины на любой другой удаленный пункт назначения.
GRE не всегда работает на серверах OVH, поэтому рассмотрим пример с IPIP.
В нашем случае мы будем использовать 2 виртуальных сервера на базе KVM с разными локациями.
VM_IPIP_FR - KVM сервер с DDoS фильтрацией в Европейском дата-центре.
VM_IPIP_RU - KVM сервер без фильтрации в Российском дата-центре.
IPIP туннели позволяют пропускать есь трафик. С помощью IPIP моно доставить любой тип контента с любого сервера (аудио, видео, FTP, SSH, SCP и другое).
IPIP туннелирование удобно когда мы хотим использовать защиту своих ресурсов от атак средствами стороннего фильтрующего сервиса, в данном случае защитой по умолчанию на серверах OVH.
Требования к системе
- iptables
- iproute2
- Ядро с поддержкой IPIP (по умолчанию все linux дистрибутивы поддерживают ipip)
Настройка
Проверяем включен ли модуль ipip и если нет включаем его.
1 | # modprobe ipip |
На сервере VM_IPIP_FR разрешаем пересылку пакетов:
1 | # echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf |
1 | # iptunnel add ipip1 mode ipip local YOUR_FILTERED_IP remote DESTINATION_SERVER_IP ttl 255 |
На сервере VM_IPIP_RU выполняем следующие настройки:
Проверяем включен ли модуль ipip и если нет включаем его.
1 | # modprobe ipip |
На сервере VM_IPIP_FR разрешаем пересылку пакетов:
1 | # echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf |
1 | # iptunnel add ipip1 mode ipip local DESTINATION_SERVER_IP remote YOUR_FILTERED_IP ttl 255 |
Обратите внимание, что в первых строчках на каждом сервере указаны какие адреса являются отправкой и какие назначением. Вторые строчки содержат в себе локальные адреса, которые не должны быть заняты в вашей внутренней сети.
Удостоверьтесь, что не столкнулись ни с каким видом проблем связанных MTU.
Роутинг
Исходные записи маршрута требуются, чтобы удостовериться в данных, которые прибыли и которые туннель IPIP передает обратно.
Выполним следующие команды на сервере VM_IPIP_RU
1 | # echo '100 IPIPFilter' >> /etc/iproute2/rt_tables |
Обратите внимание, что данные команды должны быть выполнены только один раз. В противном случае придется вручную исправлять это в файле /etc/iproute2/rt_tables
Настраиваем NAT
Для того чтобы направить трафик в наш туннель необходимо завернуть трафик через NAT:
На фильтрующем сервере VM_IPIP_FR выполняем:
1 | # iptables -t nat -A POSTROUTING -s 192.168.168.0/30 -j SNAT --to-source YOUR_FILTERED_IP |
Перенаправление портов через IPIP туннель
Чтобы сделать все проще, мы передадим все порты бэкэнд серверу.
На фильтрующем сервере VM_IPIP_FR выполняем:
1 | # iptables -t nat -A PREROUTING -d YOUR_FILTERED_IP -j DNAT --to-destination 192.168.168.2 |
Первое правило настраивает фактическое перенаправление портов, и второе правило удостоверяется, что соединения получают NAT’d и возвращаются назад должным образом.