Я стремлюсь использовать addrtype
в сочетании с, -src
как правило, в одной из моих цепочек фильтров, например, чтобы сбросить несколько богоподобных ips:
-A INPUT -p tcp --dport 80 -m addrtype --src-type UNICAST ! -s 127.0.0.0/8 -j WEB
Страница руководства говорит следующее
addrtype
Этот модуль сопоставляет пакеты в зависимости от их типа адреса. Типы адресов используются в сетевом стеке ядра и классифицируют адреса по различным группам. Точное определение этой группы зависит от конкретного протокола третьего уровня.Возможны следующие типы адресов:
- UNSPEC неуказанный адрес (т. Е. 0.0.0.0)
- UNICAST адрес одноадресной рассылки
- МЕСТНЫЙ местный адрес
- ВЕЩАНИЕ широковещательный адрес
- ANYCAST anycast пакет
- MULTICAST адрес многоадресной рассылки
- Черная дыра адрес черной дыры
- Недоступный адрес недоступен
- ЗАПРЕЩАЕТСЯ запрещенный адрес
- THROW FIXME
- NAT FIXME
- XRESOLVE
Неясно, каковы точные определения, и говорит, что это зависит от конкретного протокола уровня 3. Вот что я думаю:
- UNICAST (! BROADCAST,! MULTICAST,! ANYCAST)
- МЕСТНЫЙ (
127.0.0.0/8
) - ВЕЩАНИЕ (
*.*.*.255
) - ANYCAST (
*.*.*.*
) - МУЛЬТИКАСТ (
224.0.0.0/4
)
Кто-нибудь имеет четкое представление о том, что это значит и как это реализовано с помощью iptables (например, как он узнает, где, черт возьми, находится BLACKHOLE)?
LOCAL
это, безусловно, нет127.0.0.0/8
. Я выяснил трудный путь :( ... очевидно, что локальный адрес относится к любому адресу, назначенному интерфейсу.127.0.0.0/8
будет зарезервирован специально для шлейфа, однако LOCAL не ограничиваются только этим диапазоном.Ответы:
Я думаю, что от вас зависит, чтобы ядро знало, какой тип адреса черной дыры.
Из файла xt_addrtype.h в исходном коде iptables вы можете увидеть:
И в
rtnetlink.h
, вы увидите то же определение:Вы можете
iptables
использовать то же определение типа адреса с сетевым стеком ядра tcp.Тогда из
man ip
:Поэтому, когда вы определяете маршрут к сети
ip
командой и помечаете его как маршрут черной дыры, ядро теперь делает этот сетевой адрес типом черной дыры:источник
blackhole
тип адреса, а не весь тип адреса. Я показываю, чтоiptables
addrtype
расширение использует то же определение addrtype, что и ядро. И определение ядра типа адреса можно увидеть вman ip
.ip route list type local
но все типы выдают пустую строку, кроме одноадресной, которая даетdefault via 192.168.1.1 dev eth0 proto static metric 1024 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
. Можете ли вы предоставить больше информации о том, как их интерпретировать? Благодарю.ip route add blackhole
брандмауэра по сравнению с блокировкой этой конкретной подсети? Есть ли разница между функционалом и производительностью или иным способом достижения той же цели?