Как обновить запись на основе имени ipset

, который мне нужно обработать на моем брандмауэре ( Firehol , который затем преобразуется в iptables) несколько динамических записей. В идеальном мире я бы использовал имя (вместо IP-адреса), которое всегда указывает на правильный IP-адрес, но это не работает (по уважительным причинам).

Чтобы сохранить стабильную конфигурацию, я собираюсь использовать ipset . (РЕДАКТИРОВАТЬ: для примера ниже, предположим, что www.google.com имеет только один IP-адрес в данный момент, но он может измениться)

root@srv ~# ipset create google hash:ip
root@srv ~# ipset add google www.google.com
root@srv ~# ipset list google
Name: google
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 136
References: 0
Number of entries: 1
Members:
216.58.206.228

Я могу добавить / удалить IP-адреса для набора. Это не решает проблему обновления IP .

Чтобы взять пример выше, я хотел бы иметь возможность повторно добавить www.google.com и (если его IP-адрес изменился) удалить 216.58.206.228 и заменен новым IP.

Это не так:

root@srv ~# ipset add google www.google.com
root@srv ~# ipset list google
Name: google
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 184
References: 0
Number of entries: 2
Members:
216.58.206.228
216.58.204.132

Существует ли механизм, который позволяет обновлять IP-адрес в наборе, чтобы он соответствовал текущему разрешению имени?

РЕДАКТИРОВАТЬ: чтобы прояснить следующие ответы: Я не хочу решать проблему имени, которое имеет несколько адресов и охватите их все (скажем, убедившись, что у меня есть все разрешения для www.google.com ). У меня есть сайт с одним единственным IP-адресом, но этот IP-адрес может измениться.

0
задан 2 August 2018 в 15:34
2 ответа

Это не похоже на лучший способ заблокировать веб-сайт с большим количеством IP-адресов.

Тем не менее, это будет работать, даже если у вас есть несколько IP-адресов в списке ipset:

Вместо того, чтобы переписывать тот же список ipset, создайте новый список, а затем ipset swap их.

ipset create temp hash:ip

for address in $(dig a www.google.com +short); do
    ipset add temp $address
done

ipset swap temp google
ipset destroy temp
2
ответ дан 4 December 2019 в 12:17

Ваша проблема состоит из двух частей:

  • ваша Брандмауэр работает, блокируя / разрешая подключения к определенным IP-адресам, диапазонам IP-адресов и портам. Если вы настроите свой брандмауэр с именами хостов, а не с IP-адресами, он все равно будет использовать IP-адреса в своей текущей конфигурации с IP-адресами, в которые разрешены имена хостов при загрузке конфигурации.

  • Многие пункты назначения больше не используют один фиксированный IP-адрес (диапазон), но используют такие вещи, как CDN, циклический перебор и GEO DNS, произвольная передача и т. Д., И последующие подключения к одному и тому же DNS-имени пункта назначения будут идти на разные IP-адреса по (почти) непредсказуемой схеме.

Большинство организаций решают эту проблему, просто полностью блокируя прямой доступ в Интернет и требуя использования прокси-сервера. На прокси-сервере вы можете легко обеспечить контроль доступа на основе URL-адресов и разрешить доступ к www.google.co.uk и заблокировать доступ к www.google.de, несмотря на то, что они могут (время от времени) разрешаться на один и тот же IP-адрес и при том, что ip-адрес у них может меняться в случайные моменты.

В качестве альтернативы организации блокируют DNS, разрешают использование DNS-сервера, который они предоставляют, и запускают белый / черный список имен хостов на уровне DNS. Это будет для большинства пользователей эффективным средством контроля доступа, хотя опытным оператором его легко обойти.

1
ответ дан 4 December 2019 в 12:17

Теги

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