- 0. Другие виды фильтрации работают?
- 1. Она включена и настроена?
- 2. Домен на котором тестируете вообще должен блокироваться?
- 3. DNS-трафик (в целом) попадает в зеркало?
- 4. Проверьте фильтрацию при обращении на публичные DNS-сервера
- 4.1 Результат резолва на 8.8.8.8 вернул оригинальный IP ресурса
- 4.2 Локализуем то, что проблема с NAT
- 5. Проверьте фильтрацию при обращении на DNS-сервера провайдера
Для более точной локализации бага будет удобен какой-нибудь редко используемый в сети ресурс, хостящийся на 1 статическом IP адресе.
0. Другие виды фильтрации работают?
Если до этого не работало ничего, лучше начать процесс интеграции с самого начала, сперва настроив хотя бы HTTP-фильтрацию.
1. Она включена и настроена?
В цепочке
iptables -nvL dns
должно быть правила редиректа на IP заглушки.
2. Домен на котором тестируете вообще должен блокироваться?
Проверить можно командой:
grep badsite.com /usr/local/Reductor/lists/https.resolv
Примечание: наличие blabla.badsite.com в файле не означает блокировку всего badsite.com.
3. DNS-трафик (в целом) попадает в зеркало?
Посмотреть можно командой, но только для конкретного интерфейса, например eth1.100
/usr/local/Reductor/bin/mirror_info.sh eth1.100
или
tcpdump -nnvi eth1.100 -c 100 udp dst port 53
4. Проверьте фильтрацию при обращении на публичные DNS-сервера
На тестовом абоненте выполните:
nslookup badsite.com 8.8.8.8
Или
dig badiste.com A @8.8.8.8
4.1 Результат резолва на 8.8.8.8 вернул оригинальный IP ресурса
Предположим абонент имеет IP 10.30.40.50 и без NAT попадает в зеркало трафика.
На редукторе запустите:
tcpdump -nnvi eth1.100 udp port 53 and host 10.30.40.50 and host 8.8.8.8
и повторите запрос. Если трафик не попал в tcpdump, значит дело в настройке зеркала трафика конкретно для этого абонента. Возможно дело в NAT.
4.2 Локализуем то, что проблема с NAT
Возьмём какой-нибудь малопосещаемый сайт, а ещё лучше выдумаем домен сами.
На редукторе запускаем:
tcpdump -nnvi eth1.100 udp port 53 and host 8.8.8.8 | grep badsite12345.com
На клиенте:
nslookup badsite12345.com 8.8.8.8
В итоге если трафик всё же попадает в зеркало, то увидим с каким адресом на самом деле к нам попадает абонент.
5. Проверьте фильтрацию при обращении на DNS-сервера провайдера
Если не работает, а все предыдущие пункты в порядке, значит дело в том, что трафик абонента до используемого им DNS-сервера не попадает в зеркало трафика. Возможно в зеркало попадает трафик от самого DNS-сервера к которому обращается абонент, но его отфильтровать проблематично из-за использования DNSSec. Варианты решения проблемы:
- Передвинуть зеркало трафика так, чтобы оно находилось между абонентом и DNS-сервером
- Передвинуть DNS-сервер так, чтобы он находился после зеркала трафика
- Интегрировать DNS-сервер с Carbon Reductor с помощью https://github.com/carbonsoft/named_fakezone_generator. Сейчас поддерживаются bind/named и unbound.