Подход основан на маркировке пакетов. Далее по этим маркерам роутер будет определять какие пакеты слать через VPN клиента, а какие нет
- Клиенты роутера должны использовать адрес роутера как DNS (Дефолтное поведение)
- У вас уже должен быть настроен и подключен VPN клиент
- У вас включен и настроен доступ к роутеру по ssh
- Проверьте, что переменная
TABLE_ID=300
в скрипте/jffs/scripts/vpnroute
не пересекается с номерами из/etc/iproute2/rt_tables
. Измените при необходимостиcat /etc/iproute2/rt_tables 100 wan0 1 wgc1 2 wgc2 3 wgc3 4 wgc4 5 wgc5 6 ovpnc1 7 ovpnc2 8 ovpnc3 9 ovpnc4 10 ovpnc5 200 wan1
-
В файл
/jffs/configs/dnsmasq.conf.add
прописываем домены, которые хотим открывать через VPN. В примере ниже адреса для Youtube и Jetbrains.ipset=/youtube.com/vpnroute ipset=/youtu.be/vpnroute ipset=/ggpht.com/vpnroute ipset=/youtubei.googleapis.com/vpnroute ipset=/ytimg.com/vpnroute ipset=/googlevideo.com/vpnroute ipset=/googleusercontent.com/vpnroute ipset=/gvt1.com/vpnroute ipset=/gvt2.com/vpnroute ipset=/jetbrains.com/vpnroute ipset=/jetbrains.ai/vpnroute ipset=/intellij.net/vpnroute
Здесь
vpnroute
должна совпадать с переменнойIPSET_NAME
из скрипта -
Записываем скрипт в файл
/jffs/scripts/vpnroute
(можно назвать как угодно, главное, чтоб лежал в/jffs/scripts
) -
Делаем файл исполняемым
chmod +x /jffs/scripts/vpnroute
-
Запускаем скрипт
sh /jffs/scripts/vpnroute
-
Проверяем, что всё успешно применилось
Выполняем команды:
ip rule
: Ищите строку вроде99: from all fwmark 0x55 lookup 300
. Она должна быть в списке (выше приоритета 100).ip route show table 300
: Должно показать:``` default dev wgc1 scope link 192.168.0.0/16 dev br0 scope link ```
ipset list vpnroute
: Пустой список или с заголовком (после теста на youtube.com здесь появятся IP).iptables -t mangle -L -v -n
: Ищите цепочкуVPNROUTE
с правиломMARK set 0x55
, и вPREROUTING
ссылку на неё с-i br0
иmatch-set vpnroute
-
Перезапускаем сервис dnsmasq
service restart_dnsmasq
-
С устройства в вашей LAN откройте youtube.com в браузере или приложении
-
Ставим скрипт в автозапуск после применения всех настроек NAT. Дописываем в конец файла
/jffs/scripts/wgclient-start
следующее:/jffs/scripts/vpnroute
-
Делаем скрипт исполняемым
chmod +x /jffs/scripts/wgclient-start
-
Каждый раз, когда хотим добавить новый домен, прописываем его в
/jffs/configs/dnsmasq.conf.add
и выполняем командуservice restart_dnsmasq