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

перенаправление портов с правилами на ubuntu 18.04

У меня есть виртуальная машина, на которой порт 80 используется apache tomcat (host.nvoids.com).

и у меня apache2 php работает на порту 8020, который является блогом wordpress (host.nvoids.com:8020)

Я хочу, чтобы когда кто-то попал на мой сервер на blog.nvoids.com, он пересылался на 8020.

Пожалуйста, дайте мне знать, можно ли что-нибудь сделать с какой-либо программой переадресации портов на основе правил?

что-то вроде ниже -

iptables -t nat -A PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020

Я не пробовал это сделать, так как не знаю, как отключить указанную выше команду.

Есть ли какие-либо имена или номера правил, которые можно назначить правилам iptables? И можно ли его включить / выключить?

С уважением

Вы не можете сделать это с помощью iptables; вам нужен обратный прокси.

iptables работает на уровнях 2/3/4 сетевого стека, однако HTTP Host заголовок недоступен на этих уровнях, поэтому iptables не может определить разницу между пакетом на порту 80 для foo.example.com и еще один пакет для bar.example.com (при условии, что оба сайта используют один и тот же IP-адрес). Все, что видит iptables, - это пакет, предназначенный для IP-адреса порта 80 (или порта 443).

Чтобы использовать обратный прокси-сервер, вам нужно будет переместить tomcat на другой порт (например, 8080), а затем настроить обратный прокси-сервер для приема соединений на портах 80 и 443. Обратный прокси будет проверять HTTP Host заголовок входящих соединений и прокси-трафик на соответствующий восходящий сервер (Tomcat или Apache2 в вашем случае).

nginx обычно используется в качестве обратного прокси, но некоторые другие варианты включают apache, haproxy и squid.

Канонический способ отменить

iptables -t nat -A PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020

просто заменить -A с участием -D (замените add на delete):

iptables -t nat -D PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020

Престижность вам за то, что вы заинтересованы в том, «как я могу сломать вещи, а затем очистить», и за предоставление фактического доменного имени.

Также вы говорите host.nvoids.com:8020, но ваша команда говорит blog.nvoids.com:8020, возможно, ошибка.

Я не думаю, что iptables / DNAT подойдет вам. Причина в следующем: при использовании таблиц IP-маршрутизации главное, на что следует обратить внимание, это то, что не только пакеты должны идти в одну сторону, но также и результирующие пакеты должны возвращать (приблизительно) тот же маршрут. На host.nvoids.com нет ничего, что могло бы заставить его возвращать пакеты на «машину iptables». Клиент не ожидает отправки пакета на один IP-адрес и получения ответа с другого IP-адреса - это не работает.

Может быть, использовать haproxy на blog.nvoids.com или аналогичный несложный обратный прокси?