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

Мы можем маркировать пакеты на основе 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 получает IP-адрес google.co. в из DNS и добавляет запись в таблицу mangle. Как пометить все пакеты из google.co.in , а не только с одного сервера Google. Так как серверов тысячи, вручную добавить все IP-адреса также невозможно.

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

Спасибо.

0
задан 20 January 2017 в 15:31
2 ответа

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

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

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

(посмотрите

3
ответ дан 4 December 2019 в 11:03

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

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

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

6
ответ дан 4 December 2019 в 11:03

Теги

Похожие вопросы