betacode

Перенаправить порт 80, 443 в Ubuntu с помощью iptables

  1. Проблема с Ubuntu
  2. Конфигурация iptables

1. Проблема с Ubuntu

При входе в систему Linux (включая Ubuntu) с user, который не является "root", вы не можете запустить приложение с портом (port) <1024. Только "root" имеет привилегию ( privilege) для запуска таких приложений.

Так что, если вы вошли в систему с другим user "root", то вы не можете запустить веб-приложенин с портом 80 или 443. Ваш адрес веб-сайта не является дружественным, так как это будет большее количество портов (port number) на пути. Например:
  • http://yoursite.com:8080 (Недружественный адрес)
  • http://yoursite.com (Дружественный адрес).
В этом случае, вы должны запустить веб-приложение на порту (port)> = 1024, например 8080. Пользователь имеет доступ к вашему веб-сайту через порт 80, и он будет перенаправлен на порт 8080. Такое перенаправление осуществляется операционной систеой, как на рисунке ниже:
Для перенаправления необходимо конфигурировать IPTables.

2. Конфигурация iptables

Прежде всего, необходимо проверить работающие приложения и порт (port), который оно использует.
netstat -ntl
Tomcat работает на порте 8080:
Затем выполните следующую команду для перенаправления (redirect) порта 80 на порт 8080.
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Выполните следующую команду, чтобы убедиться, что перенаправление работает исправно.
sudo iptables -t nat -L
Далее необходимо сохранить информацию о конфигурации выше, чтобы убедиться, что он имеет эффект после перезагрузки операционной системы.
sudo sh -c "iptables-save > /etc/iptables.rules"

sudo apt-get install iptables-persistent
Примечание: Если вы хотите удалить конфигурацию перенаправления 80 до 8080, которое сделали до этого, выполните следующую команду:
sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Проверить: