Eu tenho um servidor atuando como host (KVM), proxy e firewall. Para acessar os serviços fornecidos pelas máquinas virtuais neste host, iptables
deve funcionar para redirecionar os pacotes adequadamente para os convidados.
O problema ocorre quando o servidor é desligado (por exemplo, reinicialização ou perda de energia). Quando o servidor é iniciado novamente, os redirecionamentos de portas parecem não estar funcionando (por exemplo, não é possível o SSH para os computadores convidados ou acessar seus serviços usando as portas redirecionadas do host).
Nesse momento, posso enviar o SSH para o host e verificar se iptables
está sendo executado. No entanto, preciso de service iptables restart
para que tudo funcione como esperado.
Por que isso está acontecendo? Está relacionado ao uso do KVM? Como posso evitar a reinicialização manual do iptables
sempre que o servidor fica inativo?
Observe que não preciso alterar a configuração iptables
para que tudo funcione conforme o esperado. Só preciso reiniciar o serviço (como se a configuração não tivesse sido aplicada corretamente ou sobrescrita em algum momento).
UPDATE
No host:
# chkconfig --list iptables
0:off 1:off 2:on 3:on 4:on 5:on 6:off
Comparando as regras iptables
antes e depois de reiniciar o serviço:
- A corrente
PREROUTING
parece exatamente igual.
- A cadeia
INPUT
parece muito semelhante. A única diferença é que, antes de reiniciar, existem algumas entradas duplicadas, mas a ordem das entradas também é semelhante.
- A cadeia
POSTROUTING
parece muito semelhante. A única diferença é que, antes de reiniciar, existem algumas entradas duplicadas, mas a ordem das entradas também é semelhante.
- A cadeia de corrente
FORWARD
parece mais diferente. Existem algumas entradas duplicadas antes de reiniciar o serviço, mas a ordem das entradas é alterada antes e depois.
Aqui estão as diferenças (a corrente PREROUTING
foi excluída porque parecia exatamente a mesma antes e depois de reiniciar iptables
):
Antes
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE tcp -- 10.0.0.0/24 !10.0.0.0/24 masq ports: 1024-65535
MASQUERADE udp -- 10.0.0.0/24 !10.0.0.0/24 masq ports: 1024-65535
MASQUERADE all -- 10.0.0.0/24 !10.0.0.0/24
MASQUERADE tcp -- 10.0.0.0/24 !10.0.0.0/24 masq ports: 1024-65535
MASQUERADE udp -- 10.0.0.0/24 !10.0.0.0/24 masq ports: 1024-65535
MASQUERADE all -- 10.0.0.0/24 !10.0.0.0/24
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3300
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4333
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 10.0.0.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 10.0.0.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
ACCEPT all -- 0.0.0.0/0 10.0.0.0/24 state NEW,RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 10.0.0.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 10.0.0.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DEPOIS
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE tcp -- 10.0.0.0/24 !10.0.0.0/24 masq ports: 1024-65535
MASQUERADE udp -- 10.0.0.0/24 !10.0.0.0/24 masq ports: 1024-65535
MASQUERADE all -- 10.0.0.0/24 !10.0.0.0/24
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3300
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4333
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 10.0.0.0/24 state NEW,RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 10.0.0.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 10.0.0.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination