Скрытие одного сервера за другим при помощи портмаппинга.
Часто возникает потребность, с IP одного сервера сделать перенаправление на IP другого сервера, чтобы при коннекте на первый сервер соединение перенаправлялось на другой. Для чего это может быть нужно? Допустим, как это часто бывает в наши дни, ваш сервер был заблокирован по IP. Тогда вам, скорее всего, придется поднять сервер с другим IP, и перенести сайт на него. Так как текущий сервер забанен и его использовать не получится.
Но если каждый ваш новый IP будут постоянно блокировать, то сервер придется постоянно переподнимать, что есть большая головная боль для системного администратора. Поэтому возникает идея сделать основной сервер со всем нужным контентом и сервисами (который имеет постоянный IP и его не надо переустанавливать), и второй «мелкий» сервер на VPS-ке, который быстро поднимается и просто устанавливается, и сделать перенаправление со второго сервера на первый. Часто говорят, что второй сервер — прокладка на первый. Такое можно сделать многими способами. В этой статье мы рассмотрим самый простой способ: создание прокладки при помощи iptables.
IP основного сервера можно не «светить», и он будет неизвестен блокирующим «органам». «Светится» только IP прокладки, которую при надобности быстро сменить. Расположение основного сервера также неизвестно. Поэтому «маски-шоу» с арестом сервера тоже менее вероятно. Он может находиться в надежном и безопасном месте. Под ударом только временная «прокладка».
Данная тема актуальна сегодня не только малварщикам и спамерам, но и всякого рода активистам, оппозиционерам и просто неугодным блоггерам и админам сайтов. Поскольку в наши дни цензура переходит всякие пределы, и счет заблокированных сайтов давно уже перешел за десятки миллионов. Любой админ сегодня может столкнуться с блокировками сайта, без суда и следствия. И чтобы быстро восстановить свой сайт в таком случае, пригодится этот материал.
Допустим, у нас есть сервер с IP: 1.1.1.1 и прокладка 2.2.2.2. На сервере запущен http-сервер (порты 8080 и 8081), и надо на них перенаправить порты 80 и 443 прокладки, соответственно.
Сделать это просто. Нужно всего три правила для iptables:
iptables -t nat -A PREROUTING -p tcp -d 2.2.2.2 --dport 80 -j DNAT --to-destination 1.1.1.1:8080
iptables -t nat -A PREROUTING -p tcp -d 2.2.2.2 --dport 443 -j DNAT --to-destination 1.1.1.1:8081
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Данные правила надо ввести в командной строке прокладки под root-ом. Первое правило во входящем пакете на 2.2.2.2:80 заменяет IP на 1.1.1.1 и порт на 8080 (операция DNAT — destination NAT). Второе правило аналогично для портов 443 и 8081. Третье правило делает маскарадинг на интерфейсе eth0 (внешний интерфейс прокладки). Если у вас другое название интерфейса, например eno3, поменяйте eth0 на eno3. Маскарадинг будет для исходящих пакетов с интерфейса eth0 менять обратно IP сервера на IP прокладки в адресе отправителя, и внешние пользователи увидят в пакете адрес прокладки, вместо адреса сервера.
Теперь перенаправление должно работать. Можно проверить телнетом на 80-й и 443-й порты прокладки:
$ telnet 2.2.2.2 80
Trying 2.2.2.2...
Connected to 2.2.2.2.
Escape character is '^]'.
Видим, что коннект работает. Иначе бы telnet завис бы или выдал бы ошибку.
Теперь, прокладка будет работать до первой перезагрузки. После перезагрузки правила iptables сбросятся. Чтобы правила сохранялись между перезагрузками, надо установить пакет iptables-persistent:
# apt-get install iptables-persistent
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
libboost-date-time1.67.0 libboost-filesystem1.67.0
libboost-program-options1.67.0 libboost-system1.67.0
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
netfilter-persistent
The following NEW packages will be installed:
iptables-persistent netfilter-persistent
0 upgraded, 2 newly installed, 0 to remove and 8 not upgraded.
Need to get 23.4 kB of archives.
After this operation, 91.1 kB of additional disk space will be used.
Do you want to continue? [Y/n]
После этого установятся команды iptables-save и iptables-restore и текущие правила файрволла сохранятся в /etc/iptables в двух файлах rules.v4 и rules.v6, для ipv4 и ipv6, соответственно. Если вы захотите добавить новые портмаппинги, то введите дополнительные правила iptables в консоли, а потом сохраните их командой:
# iptables-save >/etc/iptables/rules.v4
# ip6tables-save >/etc/iptables/rules.v6
Поздравляем, ваша первая прокладка создана. 😉
Filed under: Linux,Open Source,Системное администрирование - @ 11.05.2022 14:53