DNS + GeoIP настройка
Исходные данные
Делегирован поддомен prom.education-in-russia.com для geo-dns-m.education-in-russia.com и geo-dns-s.education-in-russia.com
Данные зоны:
Public IP | Internal IP | DNS name | Roles | Ports | Notes |
---|---|---|---|---|---|
193.35.96.145 | 10.10.111.10 | geo-dns-m.education-in-russia.com | DNS master | TCP, UDP 53 | |
193.35.96.146 | 10.10.111.11 | geo-dns-s.education-in-russia.com | DNS slave | TCP, UDP 53 | |
193.35.96.143 | 10.10.11.2 | balancers-m.main.prom.lan | balancer master | TCP 80, 443 | Сюда дальше перенаправлять (Москва) |
193.35.96.144 | 10.10.11.3 | balancers-s.main.prom.lan | balancer slave | TCP 80, 443 | |
Установка
Набор для сборки:
sudo apt-get install -y gcc4.9 automake_1.14 autoconf_2.60 libtool_2.4
sudo apt-get install -y libuv libucl-devel uncrustify libcap-devel
sudo apt-get install perl-Regexp-Parser perl-doc
Ставим libmaxminddb из исходников
Линкуем библиотеку
ln -s /usr/lib/libmaxminddb.so.0.0.7 /{lib,lib64}/libmaxminddb.so
ln -s /usr/lib/libmaxminddb.so.0.0.7 /{lib,lib64}/libmaxminddb.so.0
Проверяем, что работает утилита mmdblookup
Компилируем bind-9.16.8 - с поддержкой GeoIP
Установка переменных:
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig
#export PKG_CONFIG_PATH=/lib/pkgconfig
#или глобально:
echo -e "PKG_CONFIG_PATH=/usr/lib64/pkgconfig" >> /etc/environment
Команда конфигурирования:
#ERR./configure --prefix='' --exec-prefix=/usr --with-python=python3 --with-openssl=/usr/lib -with maxminddb=/usr/local/share/geoip
#ERR./configure --prefix='' --exec-prefix=/usr --with-python=python3 --with-openssl=/usr/lib -with-maxminddb=/usr/lib64
#ERR./configure --prefix='' --exec-prefix=/usr --with-python=python3 --with-openssl=/usr/lib -with-maxminddb=auto
## надо для maxminddb указать каталог, где лежит maxminddb.h
#ERR./configure --prefix='' --exec-prefix=/usr --with-python=python3 --with-openssl=/usr -with-maxminddb=/usr/local/include/
./configure --prefix='' --exec-prefix=/usr --with-python=python3 --with-openssl=/usr/lib -with-maxminddb=yes
# 210505: для версии Linux geo-dns-s2.control.prom.lan 5.4.107-std-def-alt0.c9f #1 SMP Fri Mar 26 16:19:01 UTC 2021 x86_64 GNU/Linux
./configure --prefix='' --exec-prefix=/usr --with-python=python3 --with-openssl=/usr/lib -with-maxminddb=/opt/libmaxminddb-master
Сборка:
Ручной запуск bind:
Файл переменных окружения bind /etc/sysconfig/bind
# ISC named startup options
# Use -4 for ipv4 only behaviour. See named(8) for details.
# Starting with bind 9.10, chrooted mode is under control(1).
CHROOT="-t /var/lib/bind"
EXTRAOPTIONS="-g -c /etc/bind/named.conf -u named -n 2"
Юнит сервиса /lib/systemd/system/bind.service
[Unit]
Description=Berkeley Internet Name Domain (DNS)
Wants=nss-lookup.target
Before=nss-lookup.target
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/bind
#Environment=KRB5_KTNAME=/etc/named.keytab
#PIDFile=/var/run/named.pid
ExecStartPre=/etc/init.d/bind rndc_keygen
ExecStartPre=/usr/sbin/named-checkconf $CHROOT -z /etc/bind/named.conf
ExecStart=/usr/sbin/named $EXTRAOPTIONS $CHROOT
ExecReload=/bin/sh -c '/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID'
ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID'
#PrivateTmp=true
TimeoutSec=15
[Install]
WantedBy=multi-user.target
Запрос информации по IP-адресу
mmdblookup --file /usr/share/GeoIP/GeoIP2-City.mmdb --ip 85.143.203.34 {city,continent,country,postal,location,registered_country,subdivisions}
Если не запускается, может понадобиться слинковать библиотеки libmaxminddb.so в каталоги /usr/lib, /lib и т.п.
Тестирование
dig +short -t A @193.35.96.145 aizaro.education-in-russia.com
dig +short -t A @geo-dns-s.education-in-russia.com auth.education-in-russia.com
nslookup aizaro.education-in-russia.com 193.35.96.145
nslookup gl.education-in-russia.com geo-dns-s.education-in-russia.com
dig -p 6236 +short -t A @193.35.96.146 aizaro.education-in-russia.com
Источники
- https://kb.isc.org/docs/aa-01149
- https://bind9.readthedocs.io/en/v9_16_8/index.html оригинал документации
- https://geoip.site/ ACL версия GeoIP
- https://voja.org/2017/05/05/bind-9-10-with-geoip-on-ubuntu-17-04-zesty-zapus/ пример настройки