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

Как помечать пакеты в зависимости от имени хоста?

Мы можем маркировать пакеты на основе IP-адресов следующим образом:

iptables -A FORWARD -t mangle -s 123.2.3.4 -j MARK --set-mark 1

Как маркировать пакеты в зависимости от имени хоста? Я пробовал это -

iptables -A FORWARD -t mangle -s google.co.in -j MARK --set-mark 1

Но iptables utitlity получает IP-адрес google.co.in из DNS и добавляет запись в таблицу mangle. Как отметить все пакеты из google.co.inИ не только с одного сервера Google. Так как серверов тысячи, вручную добавить все IP-адреса также невозможно.

Есть ли способ прочитать пакет, получить имя хоста и отметить его?

Спасибо.

Правила брандмауэра не работают на уровне DNS. В некоторых случаях iptables выполнит разрешение DNS за вас, но результат будет не тем, что вы ищете, и не будет следить за изменениями IP в имени DNS.

Вместо этого вам понадобится HTTP-прокси, такой как Squid и его метка исходящего пакета (http://www.squid-cache.org/Doc/config/tcp_outgoing_mark/) для обработки такого поведения.

Что касается входящего трафика, если вас особенно интересует GoogleBot, вы можете посмотреть неофициальные списки диапазонов IP-адресов, такие как https://evert.meulie.net/faqwd/googlebot-ip-ranges/ и настройте для этого свои iptables.

«Так как серверов тысячи, ручное добавление всех IP-адресов также невозможно».

Вы можете создать и поддерживать небольшой список всех Google AS, а затем добавлять правила брандмауэра на основе этих сетевых диапазонов.

Может быть, вы даже сможете найти все Google AS в Интернете.

(посмотри на