persistir roteamento de porta de 80 a 8080

23

Eu uso a instância do Amazon EC2 que funciona via ubuntu. Por padrão, de acordo com as restrições de segurança, não posso binar meu aplicativo na porta 80, então apenas a vinculo à porta 8080 e, em seguida, defino o redirecionamento de roteamento da porta 80 a 8080 através do seguinte comando:

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

Mas descobri que, quando reinicializo o servidor, essas configurações não ficam mais ativas até que eu chame esse comando novamente.

Então, minha pergunta é como habilitar o trabalho de redirecionamento de porta, mesmo que o sistema tenha sido reiniciado?

Ph0en1x
fonte

Respostas:

18

Você pode adicionar este comando /etc/rc.local, para que seja executado automaticamente após a reinicialização.

nux
fonte
Já fiz isso, mas ainda obrigado pela resposta
Ph0en1x
boas-vindas a meu amigo, isso é um bom truque
nux
2
Isso funciona, mas a resposta real é a resposta da @ MeOMy abaixo.
Dirk Groeneveld
15

Use o comando iptables-save. As regras do firewall nunca devem entrar no script rc.local. rc.local é a última coisa a ser executada. Se uma regra de bloqueio foi colocada no rc.local, há um pequeno período de tempo em que um invasor pode explorar uma regra que não está em vigor. Embora provavelmente não importe com esta situação, ainda é melhor não adotar um mau hábito que pode morder você mais tarde.

MeOMy
fonte
1
executou "sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080" e "sudo iptables-save". Mas o roteamento foi redefinido na reinicialização. Eu entendi mal como fazer isso?
precisa saber é o seguinte
2
A resposta está incompleta. iptables-save > some-file-pathsalva as regras e você as restaura via iptables-restore < some-file-pathin rc.local. Ou instale o iptables-persistentque faz isso durante a inicialização como um serviço.
Thomas Ward
Eu gostaria de entender como fazer isso. Seja mais específico, por favor
gromit190
4

Aqui está como a documentação oficial do ipttable nos ensina. Veja aqui

Adicione estas duas linhas em / etc / network / interfaces:
pre-up iptables-restore < /etc/iptables.rules post-down iptables-save > /etc/iptables.rules

A linha "post-down iptables-save> /etc/iptables.rules" salvará as regras a serem usadas na próxima inicialização.

Stavarengo
fonte
Parabéns por usar o método oficialmente recomendado e, nesse caso, o método mais simples, para concluir esta tarefa. Eu teria +2 se pudesse por usar o método KISS.
DeeJayh
0

Eu descobri um conjunto de diretórios no Ubuntu 16.04 /etc/networkque executará scripts em vários momentos durante a inicialização e o desligamento da rede:

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

Então, descobri que poderia despejar a configuração como de costume:

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

Então eu criei um arquivo `/etc/network/if-pre-up.d/restore:

#!/bin/sh

iptables-restore < /etc/iptables.rules

... e sinalizou como executável

$ sudo chmod 755 /etc/network/if-pre-up.d/restore
Mikebridge
fonte