Так что это должна быть простая проблема, но по какой-то причине я не могу ее понять.
Вот мои текущие правила:
Chain INPUT (policy ACCEPT)
target prot opt source destination
block all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
block all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
block all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain block (3 references)
target prot opt source destination
DROP all -- hit-nxdomain.opendns.com anywhere
Я пытаюсь заблокировать местоположение "hit-nxdomain.opendns.com" (фиктивное местоположение). Когда я ввожу реальный IP-адрес, я могу использовать его из другого места. Если я попытаюсь подключиться к своему серверу из этого места, он все равно будет нормально подключаться. Как я могу заставить его отбрасывать все запросы с этого IP-адреса?
Я использую цепочку, потому что я буду динамически изменять заблокированные IP-адреса с помощью сценария, поэтому мне нужно иметь возможность очистить только цепочку блоков, не нарушая цепочку INPUT, и добавлять новые адреса. Можете ли вы показать мне, что я делаю не так, как сейчас? Как я уже сказал, «hit-nxdomain.opendns.com» - это просто фиктивное имя. Но если у меня есть действующий IP-адрес, он его не блокирует.
Получите IP этого имени хоста:
$ host hit-nxdomain.opendns.com
hit-nxdomain.opendns.com has address 67.215.65.132
Заблокируйте это:
$ iptables -I INPUT -s 67.215.65.132 -j DROP
Я не вижу проблем с правилами. Чтобы заблокировать IP-адрес, вы используете
# iptables -A INPUT -s 127.0.0.100 -j DROP
Если вы все еще можете подключиться с этого IP-адреса, проверьте с помощью tcpdump, действительно ли вы подключаетесь с этим IP-адресом или по какой-то причине (прокси, VPN, ...) вы видите на хосте с правилами iptables как другой IP-адрес.