Назад | Перейти на главную страницу

Действует ли переадресация IP в Linux как обратный прокси?

Я осмотрелся и увидел множество решений для переадресации IP, которые перенаправляют запросы с IP на одном сервере на другой IP на другом сервере. (По сути, пересылка запросов, идущих с 123.45.67.89 на сервере X на 98.76.54.321 на сервере Y.) Эти решения обычно включают включение IP-переадресации в ядре Linux и добавление правил iptables, чтобы все работало.

Однако я не уверен, будет ли сервер Y (и его IP-адрес 98.76.54.321) отображаться при пересылке. Я в основном стремлюсь к обратному прокси, но для любого порта или протокола TCP / UDP.

По сути, переадресация IP в Linux автоматически действует как обратный прокси-сервер, или должны быть предприняты другие шаги, чтобы гарантировать, что идентичность сервера Y (его IP) не раскрывается через сервер X? Или я вообще считаю неправильное решение?

Переадресация IP в Linux - это в основном маршрутизация. Сам по себе он не является прокси-сервером и не изменяет трафик на уровне 3 и выше.

Тем не менее, если вы хотите иметь что-то, что маскирует местоположение трафика, вы можете подумать о настройке NAT с помощью iptables для маскировки (или источника NAT) трафика, чтобы исходный IP-адрес был IP-адресом сервера Linux. Это работает вместе с пересылкой.

Для этого вы должны DNAT входящего трафика (изменить адрес назначения):

iptables -t nat -A PREROUTING -d ${server_x} -j DNAT --to-destination ${server_y}

Затем вы должны изменить исходный адрес, чтобы скрытый сервер отправлял трафик обратно через пересылку:

iptables -t nat -A POSTROUTING -d ${server_y} -j SNAT --to ${server_x}

Вы также можете рассмотреть возможность прогнозирования их для протокола и порта, если вы этого хотите.

Вы не полностью объяснили проблему, которую пытаетесь решить, как вы думаете, что можете ее решить, а затем попросили другие варианты ... Так что этот ответ может быть несколько расплывчатым, но я все равно его дам.

Во-первых, из любви ко всему святому, ИЗБЕГАЙТЕ NAT. Пожалуйста. Единорог плачет каждый раз, когда создается новый NAT.

Решение 1

Если у ваших серверов есть общедоступные IP-адреса, просто используйте маршрутизацию (IP Forwarding) и соответствующие правила брандмауэра (iptables), чтобы контролировать, что разрешено.

Например:

Internet <==> Perimeter (123.45.67.89) <==> Server (98.76.54.321)

Включите IP-переадресацию (маршрутизацию) на узле периметра, затем установите правила брандмауэра, чтобы разрешить только тот трафик, который вы хотите иметь доступ к серверу, DROP или REJECT весь другой трафик.

Решение 2

Если вы действительно хотите «спрятать» Сервер, чтобы «Интернет» полагал, что он на самом деле обращается к «Периметру», хотя на самом деле он имеет дело с «Сервером», то установите соответствующее программное обеспечение обратного прокси на «Периметр» и пусть оно сделает это . Это потребует больше ресурсов на узле периметра, но скрывает «Сервер» и избегает NAT (я уже упоминал, чтобы избежать NAT?)

Решение 3

Если вам действительно нужно, потому что 1 и 2 по какой-либо причине неприменимы, воспользуйтесь предложением NAT.