-
Notifications
You must be signed in to change notification settings - Fork 4
Details
-
LUA-скрипт формирует для dnsmasq список DNS-имён, которые:
-
должны разрешаться в обход провайдерских DNS воизбежание спуфинга,
-
будут наполнять разрешёнными из DNS IP-адресами ipset-набор rublock.
-
-
В файервол добавляется правило, помечающее пакеты определённым fwmark'ом.
-
При установке VPN-соединения создаются отдельная таблица роутинга для помеченных пакетов.
При работе получается следующее. Если требуемый ресурс (www.example.com) отсутствует в списке блокируемых, то dnsmasq разрешает его имя в IP используя провайдерские DNS-серверы — ближайшие и наиболее быстрые. Так же по наиболее быстрому пути пойдёт обмен с запрошенным ресурсом. Если же требуемый ресурс есть в списке, тогда:
- dnsmasq разрешит его в IP-адрес гугловским DNS-сервером (указать другой можно в
/opt/bin/blupdate.lua
), - dnsmasq занесёт разрешённый IP в ipset-набор rublock,
- правило файервола будет помечать любой пакет от/к заблокированному ресурсу меткой,
- на основе отдельной таблице роутинга помеченные пакеты будут направляться в VPN-соединение.
В связи с тем, что при старте роутера USB-носитель монтируется позже запуска dnsmasq, в системном логе возможно появление нескольких сообщений об ошибках старта dnsmasq в периоде до ~10 секунд. Связано это с тем, что для dnsmasq файл /opt/etc/rublock.dnsmasq
в это время не доступен.
- Убедитесь, что dnsmasq запустился и считал сформированный на USB-носителе конфиг. В системном логе будет большое количество строк вида:
Mar 10 09:24:08 dnsmasq[617]: using nameserver 8.8.8.8#53 for domain xxx.com
Mar 10 09:24:08 dnsmasq[617]: using nameserver 8.8.8.8#53 for domain yyy.com
Mar 10 09:24:08 dnsmasq[617]: using nameserver 8.8.8.8#53 for domain zzz.com
- Убедитесь, что ipset-набор создан и наполняется:
ipset --list rublock
В выводе должно быть некоторое количество IP-адресов.
- Убедитесь, что отработало правило файервола, помечающее пакеты:
# iptables-save | grep rublock
-A PREROUTING -m set --match-set rublock dst,src -j MARK --set-xmark 0x1/0xffffffff
- Посмотрите, что существует таблица роутинга для помеченных пакетов:
# ip rule list
0: from all lookup local
1000: from all fwmark 0x1 lookup 1
32766: from all lookup main
32767: from all lookup default
- Посмотрите куда направляются пакеты согласно этой таблице, в выводе должен быть IP-адрес VPN-сервера:
# ip route list table 1
default via 10.10.0.1 dev tun0
Таким образом можно выяснить в каком звене цепи возникла проблема.
Удачи в начинаниях!