Делаем "Маршруты DNS" на шлюзе с Linux. В новых версиях прошивок… — Что мы делаем в IT — TG.ME

Делаем "Маршруты DNS" на шлюзе с Linux.
В новых версиях прошивок Keenetic появилась функция "Маршруты DNS"
можно маршрутизировать в интерфейс не подсети, а url.
Очень удобно зачем-то это использовать в наши времена.
Но как-то так можно сделать и на Linux.
Используем dnsmasq, который умеет класть полученные ip в ipset.
Для этого нужно, чтоб ваши DNS запросы проходили через dnsmasq, как-нибудь справитесь с этим 😉
Настройка dnsmasq:
# DNS
bind-interfaces
cache-size=10000
all-servers
no-negcache
server=77.88.8.8
server=8.8.8.8
all-servers
no-resolv
no-poll
stop-dns-rebind

# IPset
ipset=/site.ru/vpn
ipset=/site.com/vpn

Настройка маршрутизации через ipset:
ipset create vpn hash:ip
ip rule add fwmark 100 table 100
ip route add default dev wg0 table vpn
iptables -t mangle -A PREROUTING -m set --match-set vpn dst -j MARK --set-mark 100

Предполагается, что раньше была маршрутизация через ip route add и форвардинг и nat у вас уже настроены...
Если у вас dnsmasq и vpn на разных серверах, то можно получать ipset с dns сервера (по крону) как-то так:
*/2 * * * * /usr/bin/ssh -i /root/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new 192.168.1.2 "/usr/sbin/ipset save vpn" | /usr/sbin/ipset -exist restore >/dev/null 2>&1

и настроить маршрутизацию на сервере vpn.
#linux #vpn #route #dns #dnsmasq #ipset #iptables #cron
👍3
July 29, 2026 395 11