Назад | Перейти на главную страницу

Как заблокировать IP-адрес в ubuntu?

Я настроил машину Ubuntu как маршрутизатор. Шаги NAT конфигурации приведены ниже:

        #iptables -F
        #iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
        #iptables-save > /etc/network/iptables

Затем сохраните это местоположение файла в 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

Это работает, теперь я хочу заблокировать IP-адрес. Для этого я выполнил следующую команду:

#iptables -A INPUT -s   69.171.229.11 -j DROP    
#iptables-save >  /etc/network/iptables    
#reboot

Но это не работает.

vi /etc/network/iptables теперь выглядят так:

 # 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

Что мне не хватает для блокировки IP-адреса?

Если вы хотите заблокировать IP-адрес от использования правила MASQUERADE, вам необходимо поместить это правило в FORWARD цепь, а не INPUT цепь.

iptables -I FORWARD -s 69.171.229.11 -j DROP

iptables-save делает не сделайте свои правила iptables постоянными, чтобы они были потеряны после перезагрузки. Вместо этого он печатает вашу текущую конфигурацию iptables в STDOUT (см. страницы руководства для iptables-save). Итак, после перезагрузки ваши iptables должны быть пустыми.

Вероятно, вы захотите восстановить свои правила из этого файла после перезагрузки. Для этого используйте

iptables-restore < /etc/network/iptables

Видеть страницы руководства для iptables-restore на этом.


Как сказал Патрик, правило

iptables -A INPUT -s 69.171.229.11 -j DROP

только предотвратит отправку пакетов на сам маршрутизатор - они все равно будут пересылаться, если они адресованы правильно. Чтобы этого не произошло, добавьте правило

iptables -A FORWARD -s 69.171.229.11 -j DROP

FORWARD применяется к пакетам, которые маршрутизатор хочет пересылать, а INPUT применяется к пакетам, адресованным самому маршрутизатору.

Думаю, последовательность неправильная.

Что вы делаете с append, так это помещаете его в конец цепочки. IPtables останавливается после первого совпадения. Так что может случиться так, что правило будет выполнено непосредственно перед тем, как оно попадет в правило блокировки. Убедитесь, что правило блокировки находится сверху. Вы можете использовать опцию -I, чтобы вставить его в определенное место в вашей цепочке.