Por que as regras do iptables desaparecem ao reiniciar o meu sistema Debian?

48

Eu adiciono esta regra:

sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
       --dport 1723 -j DNAT --to-destination a.b.c.d:10000
  1. Quando reiniciar, as regras do computador são excluídas. Por quê?
  2. O que posso fazer para manter as regras?
Jhonathan
fonte

Respostas:

45

Não há opção no iptables que tornará suas regras permanentes. Mas você pode usar iptables-savee iptables-restorecumprir sua tarefa.

Primeiro adicione a regra iptable usando o comando que você deu.

Em seguida, salve as regras do iptables em algum arquivo, como o /etc/iptables.confseguinte comando:

$  iptables-save > /etc/iptables.conf

Adicione o seguinte comando /etc/rc.localpara recarregar as regras em cada reinicialização.

$  iptables-restore < /etc/iptables.conf
pradeepchhetri
fonte
15
No Debian, existe o iptables-persistentpacote que fará isso.
bahamat
7
É uma péssima idéia colocá-lo, rc.localpois haveria uma lacuna de janela aberta entre o início dos serviços e a política de firewall. Eu prefiro usar pre-up gancho para interface de auto-retorno em /etc/network/interfacessuperar isso.
poige
@poige: Eu concordo 100%, rc.localpode ter o efeito pretendido, mas é um problema nesta situação.
JM Becker
3
@bahamat: Instalar esse pacote é a melhor solução, merece sua própria resposta.
perfil completo de JM Becker
1
@TechZilla: Feito.
bahamat
53

(Porque foi sugerido fazer disso uma resposta própria ...)

Na instalação do debian iptables-persistent.

O pacote será carregado automaticamente /etc/iptables/rulesdurante a inicialização.

Sempre que você modificar suas regras, execute /sbin/iptables-save > /etc/iptables/rulespara salvá-las. Você também pode adicionar isso à sequência de desligamento, se quiser.

bahamat
fonte
12
Existem dois arquivos de regras diferentes: /etc/iptables/rules.v4e /etc/iptables/rules.v6para IPv4 e IPv6, respectivamente. Se você deseja que uma tabela se aplique aos dois tipos de conexões, salve-a nos dois arquivos de regras.
precisa saber é o seguinte
11
Não o adicione à sua sequência de desligamento! Se você violar suas regras durante as alterações / configurações, pelo menos uma boa reinicialização antiga retornará as coisas ao estado de funcionamento anterior.
VertigoRay 27/02
1

Após a instalação iptables-persistentacima, você também pode salvar regras com o seguinte comando mais curto no Ubuntu 16.04+: sudo netfilter-persistent save

E eles também podem ser restaurados como estavam na última vez em que você os salvou: sudo netfilter-persistent reload

Robin Wilson
fonte