Iptables: как перенаправить TCP-/UDP- подключений от внешних клиентов на другой внешний IP? Для моего проекта мне необходимо настроить хост, выполняющий функцию прозрачного прокси, не только для веб-сервера, но и для других TCP/UDP-соединений (SIP, RDP, и т.д.), чтобы эти серверы были скрыты непосредственно от пользователей для повышения уровеня безопасности. Конфигурация должна быть такой, чтобы со стороны клиента не требовались дополнительные настройки. Учитывая специфику моей инфраструктуры, стандартные решения (Squid, VPN, NAT (External to Internal)) мне не подходят. Специфика моей сети: 1. Все хосты распределены териториально (VPS, Дедики) и связаны между собой через внешние интерфейсы. При этом использовать частные сети, предлагаемые провайдерами, я не могу, т.к. провайдеры отличаются. 2. Поднять VPN-сервер и подключить все хосты к VPN. Этот вариант не подходит ввиду существенного увеличечения задержек, а также проблем с поддержкой VPN частью оборудования. 3. Reverse Proxy - как я понимаю, это решение подразумевает использование только портов HTTP, HTTPS Думаю, возможно ли реализивать "прозрачный прокси" для TCP/UDP соединений между удаленными клиентом и сервером без VPN для различных сервисов, используя iptables для вот такой схемы:|удаленный клиент|public ip|> <|внешний IP|хосты с сервисами (RDP, SIP, VPN.)| Как я понимаю, для этого мне понадобятся следующие таблицы и цепочки: PREROUTING: 1)Connection Tracking 2)DNAT POSTROUTING: SNAT Бьюсь третий день, ничего не работает. Буду признателен за любые советы и ваше мнение - можно ли реализовать такое для UDP-соединений? Спасибо.
Да, вы правы, для перенаправления TCP/UDP-подключений с внешнего IP на другой внешний IP можно использовать таблицы и цепочки iptables. В вашем случае, для UDP-соединений, вам действительно понадобятся цепочки PREROUTING, DNAT и POSTROUTING. Вот примеры команд iptables, которые вы можете использовать для перенаправления UDP-подключений:
iptables -t nat -A PREROUTING -i eth0 -p udp --dport порт -j DNAT --to-destination внешний_IP_прокси:порт iptables -t nat -A POSTROUTING -o eth0 -p udp --dport порт -d внешний_IP_прокси -j SNAT --to-source внешний_IP_прокси
Где:
эти команды перенаправляют UDP-трафик с внешнего IP на внешний IP прокси на заданном порту.в параметре "--to-destination" указывается внешний IP и порт прокси-сервера, куда будут направляться соединения.в параметре "--to-source" указывается внешний IP прокси-сервера, чтобы корректно возвращать ответы на исходный IP.
Не забывайте, что после изменения правил iptables, необходимо сохранить конфигурацию, чтобы она пережила перезагрузку сервера:
iptables-save > /etc/iptables/rules.v4
Также, убедитесь, что на прокси-сервере разрешен проброс пакетов (IP forwarding) и что на серверах с сервисами корректно настроены маршруты для возврата пакетов через прокси-сервер.
Надеюсь, эти советы помогут вам настроить прозрачный прокси для UDP-соединений. Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать. Удачи вам!
Да, вы правы, для перенаправления TCP/UDP-подключений с внешнего IP на другой внешний IP можно использовать таблицы и цепочки iptables.
iptables -t nat -A PREROUTING -i eth0 -p udp --dport порт -j DNAT --to-destination внешний_IP_прокси:портВ вашем случае, для UDP-соединений, вам действительно понадобятся цепочки PREROUTING, DNAT и POSTROUTING.
Вот примеры команд iptables, которые вы можете использовать для перенаправления UDP-подключений:
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport порт -d внешний_IP_прокси -j SNAT --to-source внешний_IP_прокси
Где:
эти команды перенаправляют UDP-трафик с внешнего IP на внешний IP прокси на заданном порту.в параметре "--to-destination" указывается внешний IP и порт прокси-сервера, куда будут направляться соединения.в параметре "--to-source" указывается внешний IP прокси-сервера, чтобы корректно возвращать ответы на исходный IP.Не забывайте, что после изменения правил iptables, необходимо сохранить конфигурацию, чтобы она пережила перезагрузку сервера:
iptables-save > /etc/iptables/rules.v4Также, убедитесь, что на прокси-сервере разрешен проброс пакетов (IP forwarding) и что на серверах с сервисами корректно настроены маршруты для возврата пакетов через прокси-сервер.
Надеюсь, эти советы помогут вам настроить прозрачный прокси для UDP-соединений. Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать. Удачи вам!