Я использую экземпляр amazon EC2, который работает через Ubuntu. По умолчанию в соответствии с ограничениями безопасности я не могу привязать свое приложение к порту 80, поэтому я просто привязываю его к порту 8080, а затем устанавливаю перенаправление маршрутизации с порта 80 на 8080 с помощью следующей команды:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080
Но я нашел что, когда я перезагружаю сервер, эти настройки больше не активны, пока я не вызову эту команду снова.
Итак, мой вопрос, как включить работу перенаправления порта, даже если система была перезагружена?
Можно добавить эту команду в /etc/rc.local
, таким образом, она будет выполняться автоматически после перезагрузки.
Используйте команду iptables-сохранения вместо этого. Правила брандмауэра никогда не должны входить в rc.local сценарий. rc.local является последней вещью, которая будет выполняться. Если правило блока было помещено в rc.local существует маленький период времени, где взломщик может использовать правило, не существующее. В то время как это, вероятно, не имеет значения с этой ситуацией, все еще лучше не войти в дурную привычку, которая может укусить Вас позже.
Вот то, как документация официального ipttable учит нас. Видят здесь
, Добавляют эти две строки в/etc/network/interfaces:
pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save > /etc/iptables.rules
строка "поствниз iptables-сохраняет>/etc/iptables.rules", сохранит правила, которые будут использоваться на следующей начальной загрузке.
Я обнаружил ряд каталогов на 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