Se você quiser bloquear um IP de usar a regra MASQUERADE, é necessário colocar essa regra na cadeia FORWARD
, não na cadeia INPUT
.
iptables -I FORWARD -s 69.171.229.11 -j DROP
Eu configurei a máquina Ubuntu como roteador. Etapas da configuração do NAT são dadas abaixo:
#iptables -F
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables-save > /etc/network/iptables
Em seguida, manteve a localização deste arquivo em rc.local
#vi /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
/sbin/iptables-restore < /etc/network/iptables
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
#reboot
Funciona, agora eu quero bloquear um endereço IP. Para fazer isso, executei o seguinte comando:
#iptables -A INPUT -s 69.171.229.11 -j DROP
#iptables-save > /etc/network/iptables
#reboot
Mas isso não funciona.
vi /etc/network/iptables
agora está assim:
# Generated by iptables-save v1.4.4 on Tue Feb 14 11:21:16 2012
*nat
:PREROUTING ACCEPT [870:97719]
:POSTROUTING ACCEPT [283:23151]
:OUTPUT ACCEPT [461:28753]
-A POSTROUTING -o eth0 -j MASQUERADE COMMIT
# Completed on Tue Feb 14 11:21:16 2012
# Generated by iptables-save v1.4.4 on Tue Feb 14 11:21:16 2012
*filter
:INPUT ACCEPT [4914:3254723]
:FORWARD ACCEPT [2382:1222521]
:OUTPUT ACCEPT [4010:410041]
-A INPUT -s 98.137.149.56/32 -j DROP
COMMIT
# Completed on Tue Feb 14 11:21:16 2012
O que estou perdendo para bloquear um endereço IP?
Acho que a sequência não está correta.
O que você está fazendo com o append é colocá-lo na parte inferior da cadeia. IPtables pára após o primeiro jogo. Portanto, pode ser que a regra seja correspondida antes de atingir a regra de bloqueio. Certifique-se de que a regra de bloqueio esteja no topo. Você pode usar a opção -I para inseri-lo em um ponto específico da sua cadeia.
iptables-save não faz com que suas regras de iptables sejam persistentes, então elas serão perdidas após a reinicialização. Em vez disso, o que ele faz é imprimir sua configuração atual do iptables para STDOUT (veja manpages para o iptables- salvar ). Então, após a sua reinicialização, seus iptables devem estar vazios.
Você provavelmente deseja restaurar suas regras desse arquivo após uma reinicialização. Para fazer isso, use
iptables-restore < /etc/network/iptables
Veja manpages para o iptables-restore sobre isso.
Como mencionado por Patrick, a regra
iptables -A INPUT -s 69.171.229.11 -j DROP
só impedirá que os pacotes sejam enviados para o próprio roteador - eles ainda serão encaminhados se forem endereçados corretamente. Para evitar isso, adicione a regra
iptables -A FORWARD -s 69.171.229.11 -j DROP
O FORWARD é aplicado aos pacotes que o roteador deseja encaminhar, enquanto o INPUT é aplicado aos pacotes endereçados ao próprio roteador.