Используйте iproute2.
ip route add unreachable 74.1.1.0/24
В этом случае, если вы пытаетесь запретить исходящий трафик в эту сеть, лучше использовать маршрутизацию для запрета этой сети, а не сетевой фильтр. Для входящего, более идиоматично использовать netfilter, как в другом ответе здесь, но с --src
вместо --dst
, и лучше использовать запрещенный администратор ICMP, или просто удалить вместо этого. Вы можете использовать RPDB (см. Ip ip-rule(8)
для достижения того же эффекта, но, вероятно, будет выглядеть неуместно.
Не используйте ifconfig, route или другие инструменты из пакета net-tools
; они давно устарели.
Вы можете подтвердить, что сам маршрутизатор будет использовать в качестве решения о маршрутизации.
$ ip route get 74.1.1.0/24
RTNETLINK answers: Network is unreachable
Обратите внимание, что глагол «get» отличается от «show» (или «list»), поскольку он «вычисляет» решение о маршрутизации, а не просто фильтрует и перечисляет записи в таблице маршрутизации.
Хосты на вашей стороне сети получат сеть назначения ICMP недоступной.
$ ping 74.1.1.1 -c 1
PING 74.1.1.1 (74.1.1.1) 56(84) bytes of data.
From 172.16.6.254 icmp_seq=1 Destination Net Unreachable
--- 74.1.1.1 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0.7ms
$ echo $?
1
Если задействованное пространство пользователя неисправно и зависает, а не возвращает ошибку немедленно, это еще одна проблема. Ядро не может компенсировать такое ошибочное пространство пользователя.