Честное предупреждение, я не эксперт по netfilter (iptables).
На любом уважаемом дистрибутиве Linux-сервера в его ядре должен быть установлен и включен сетевой фильтр. Netfilter позволяет вам маршрутизировать, блокировать и иным образом манипулировать пакетами, входящими и выходящими из вашей системы. Попробуйте запустить это как root на сервере:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 1521
Возможно, вам придется изменить eth0 на правильное имя устройства для сетевого адаптера сервера. Это должно привести к тому, что любые пакеты, поступающие на порт 80, будут приняты СУБД Oracle, прослушивающей порт 1521.
Я пошел дальше и посмотрел, что делают эти опции (потому что я не очень хорошо знаком с управлением netfilter вручную). Леме, сломай это:
-t nat -A PREROUTING
При этом выбирается таблица NAT и добавляется (-A
) новое правило в цепочку PREROUTING таблицы NAT. Обычно, когда вы перенаправляете с одного порта на другой, это относится к таблице NAT. Цепочка PREROUTING происходит очень рано, когда Netfilter обрабатывает входящие пакеты. Обычно это самая первая цепочка для входящих пакетов.
-i eth0 -p tcp -dport 80
Это фильтрующая часть правила. Мы сообщаем ему, на каком интерфейсе (-i
) и протоколе (-p
) вы хотите, чтобы это правило влияло на пакеты. В этом примере мы создаем правило для TCP-трафика на интерфейсе eth0
. Мы также сообщаем ему, какой порт назначения (-dport
) искать в пакетах ... в этом случае пакеты с портом назначения 80 (tcp).
Когда вы пытаетесь подключиться к порту 80 tcp на сервере с СУБД Oracle, пакеты tcp, отправляемые вашей машиной, будут иметь порт назначения 80 в своих заголовках.
--j REDIRECT --to-ports 1521
Это мясо правила. Здесь вы говорите, что пакеты, которые соответствуют вышеупомянутым фильтрам, должны быть перенаправлены (--j REDIRECT
) на порт 1521 (--to-ports 1521
). Когда сетевой фильтр находится в той же системе, что и приложение, для которого вы хотите перенаправить трафик, вы используете REDIRECT
. Когда приложение находится на другом сервере, вы должны использовать вместо него DNAT
(и указать как IP, так и порт).
Пожалуйста, дайте мне знать, если это работает.
Эти настройки не являются постоянными; чтобы сделать их постоянными, я бы посоветовал вам посмотреть установку iptables-persistent
. Вы можете найти больше информации здесь на StackOverflow .