постоянная маршрутизация портов от 80 до 8080


23

Я использую экземпляр Amazon EC2, который работает через Ubuntu. По умолчанию в соответствии с ограничениями безопасности я не могу привязать свое приложение к порту 80, поэтому я просто привязываю его к порту 8080, а затем устанавливаю перенаправление маршрутизации с порта 80 на 8080 с помощью следующей команды:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

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

Итак, мой вопрос, как включить работу перенаправления порта, даже если система была перезагружена?

Ответы:


18

Вы можете добавить эту команду /etc/rc.local, чтобы она выполнялась автоматически после перезагрузки.


Уже сделал это, но все равно спасибо за ответ
Ph0en1x

добро пожаловать, мой друг, это хороший трюк
nux

2
Это работает, но реальный ответ - ответ @ MeOMy ниже.
Дирк Гроенвельд

15

Вместо этого используйте команду iptables-save. Правила брандмауэра никогда не должны входить в скрипт rc.local. rc.local - последнее, что нужно выполнить. Если правило блокировки было помещено в rc.local, существует небольшой промежуток времени, в течение которого злоумышленник может использовать правило, отсутствующее на месте. Хотя в этой ситуации это, вероятно, не имеет значения, все же лучше не впадать в вредную привычку, которая может укусить вас позже.


1
запустил "sudo iptables -t nat -A ПРЕДОТВРАЩЕНИЕ -p tcp --dport 80 -j REDIRECT --to 8080" и "sudo iptables-save". Но маршрутизация была сброшена при перезагрузке. Я неправильно понял, как это сделать?
gromit190

2
Ответ неполный. iptables-save > some-file-pathсохраняет правила, и тогда вы бы восстановить их с помощью iptables-restore < some-file-pathв rc.local. Или установите, iptables-persistentкоторый делает это во время загрузки в качестве службы.
Томас Уорд

Я хотел бы понять, как это сделать. Будьте более конкретны, пожалуйста
gromit190

4

Вот как нас учит официальная документация ipttable. Глянь сюда

Добавьте эти две строки в / etc / network / interfaces:
pre-up iptables-restore < /etc/iptables.rules post-down iptables-save > /etc/iptables.rules

Строка «post-down iptables-save> /etc/iptables.rules» сохранит правила, которые будут использоваться при следующей загрузке.


Престижность за использование официально рекомендованного метода и, в данном случае, самого простого метода, для выполнения этой задачи. Я бы +2, если бы я мог использовать метод KISS.
DeeJayh

0

Я обнаружил набор каталогов в Ubuntu 16.04, в /etc/networkкоторых будут запускаться сценарии в разное время во время инициализации и завершения работы сети:

if-down.d
if-post-down.d  
if-pre-up.d  
if-up.d
interfaces.d

Итак, я обнаружил, что могу вывести конфигурацию как обычно:

$ sudo sh -c "iptables-save > /etc/iptables.rules"

Затем я создал файл `/etc/network/if-pre-up.d/restore:

#!/bin/sh

iptables-restore < /etc/iptables.rules

... и пометил его исполняемым

$ sudo chmod 755 /etc/network/if-pre-up.d/restore
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.