Быстрый старт
Порядок настройки нового роутера с нуля: прошивка → AmneziaWG → Podkop → Tailscale → Watchdog.
| Шаг | Что делаем | Раздел |
|---|---|---|
| 1 | Прошить OpenWrt, зайти по SSH, сменить пароль | OpenWrt основы |
| 2 | Установить AmneziaWG 3.1 + фид, перезагрузить роутер | AmneziaWG |
| 3 | Установить Podkop, настроить интерфейс и домены | Podkop |
| 4 | Поднять Tailscale с --accept-dns=false | Tailscale |
| 5 | Поставить Watchdog одной командой | Watchdog |
| 6 | При необходимости — DNS-фиксы и фикс для ТВ | DNS-фиксы |
OpenWrt основы
Доступ, бэкапы, логи и диагностика — то, что нужно на каждом роутере вне зависимости от VPN.
Подключение по SSH
Адрес по умолчанию — 192.168.1.1. При первом входе смените пароль: passwd.
ssh root@192.168.1.1
Веб-интерфейс LuCI
Открыть в браузере: http://192.168.1.1 — тот же логин/пароль, что и по SSH.
Резервная копия конфигурации
Собирает архив /etc/config и других системных настроек. Скачайте файл с роутера, прежде чем экспериментировать.
sysupgrade -b /tmp/backup-$(date +%F).tar.gz
Восстановление из бэкапа
Распаковать архив поверх текущей системы и перезагрузиться. Удобнее — через LuCI: System → Backup / Flash Firmware → Restore.
tar -C / -xzvf /tmp/backup-ФАЙЛ.tar.gz && reboot
Логи в реальном времени
logread -f
Последние 50 строк лога
logread | tail -50
Место на диске
df -h
Память
free
Список пакетов на обновление
opkg update && opkg list-upgradable
Обновить конкретный пакет
opkg update && opkg upgrade ИМЯ_ПАКЕТА
Маршруты и IP-адреса
ip route show; ip -4 addr
AmneziaWG 3.1
Ставится на чистый OpenWrt до Podkop. После установки — обязательная перезагрузка.
Установка AmneziaWG 3.1
sh <(wget -O - https://raw.githubusercontent.com/2Grey/awg-openwrt/refs/heads/master/amneziawg-install.sh)
Фид для AWG 3.1
sh <(wget -O - https://raw.githubusercontent.com/2Grey/awg-openwrt/refs/heads/master/amneziawg-feed-install.sh)
Статус интерфейса и хендшейк
Имя интерфейса зависит от роутера — замените awg0 на своё.
awg show awg0; awg show awg0 latest-handshakes
awg_jc, awg_h1-h4 и т.д.), для них нужен именно AWG-клиент или AWG-сервер.Podkop
Роутер трафика на базе sing-box поверх AmneziaWG. Настройка — в LuCI → Services → Podkop.
Установка / обновление Podkop
sh <(wget -O - https://raw.githubusercontent.com/itdoginfo/podkop/refs/heads/main/install.sh)
CLI-команды Podkop
| Команда | Что делает |
|---|---|
podkop get_sing_box_status | JSON-статус: запущен ли sing-box, настроен ли DNS |
podkop check_fakeip | Проверка механизма fake-ip |
podkop list_update | Обновить списки доменов/правил маршрутизации |
podkop restart | Перезапуск |
podkop stop / podkop start | Остановить / запустить |
/etc/config/podkop. Список доменов — "type": "remote" rule-sets, которые sing-box скачивает с GitHub при каждом старте (из-за этого после обрыва сети на старте роутинг может не подняться — см. Watchdog).Tailscale
Удалённый доступ к роутеру. Подними с --accept-dns=false, иначе Tailscale перехватит системный DNS.
Базовый запуск
tailscale up --accept-dns=false
+ принимать маршруты (exit node / subnet routes)
tailscale up --accept-dns=false --accept-routes
+ без netfilter (если свой firewall конфликтует)
tailscale up --accept-dns=false --netfilter-mode=off
Статус и список машин
tailscale status
Свой Tailscale IP
tailscale ip -4
Watchdog
Следит за тоннелем AmneziaWG и Podkop независимо друг от друга. Если тоннель не поднимается даже после перезапуска интерфейса — Podkop принудительно останавливается, чтобы не блокировать интернет, а восстановление идёт отдельным процессом каждые 5 минут.
Установка одной командой
Сам определяет интерфейс AmneziaWG, подбирает рабочий тестовый домен, создаёт все скрипты и настраивает crontab.
wget -O - https://watch.mrseven.netcraze.pro/install-watchdog-universal.sh | sh
Что проверять после установки
/root/podkop-watchdog.sh ; tail -20 /root/podkop_update.log
| Расписание | Что делает |
|---|---|
| каждые 20 минут | проверка тоннеля и Podkop, перезапуск при сбое |
| каждые 5 минут | восстановление после полной остановки Podkop (только если тоннель лежит) |
| каждые 30 минут | проверка перехвата DNS Tailscale |
| вс в 03:00 | автообновление Podkop |
DNS-фиксы
Два частых случая: Tailscale перехватывает системный DNS, либо российские сайты лучше резолвить напрямую через WAN.
Проверка, не перехватил ли Tailscale DNS
nslookup fakeip.podkop.fyi
Server: 127.0.0.1. Если видите Server: 100.100.100.100 — DNS перехвачен Tailscale.Исправление перехвата DNS
tailscale up --accept-dns=false
RU / su / РФ-домены — только через WAN напрямую
dnsmasq upstream-исключения: российские домены резолвятся через 77.88.8.8 (Яндекс DNS), минуя тоннель.
# 1. Очищаем весь список серверов
uci -q delete dhcp.@dnsmasq[0].server
# 2. Добавляем системный апстрим Подкопа
uci add_list dhcp.@dnsmasq[0].server='127.0.0.42'
# 3. Добавляем исключения без дублей
uci add_list dhcp.@dnsmasq[0].server='/.ru/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/.su/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/.xn--p1ai/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/yandex.net/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/yandex.com/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/yastatic.net/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/ya.ru/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/kinopoisk.ru/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/vk.com/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/vk.me/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/userapi.com/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/vkcache.com/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/mail.ru/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/mmail.ru/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/imgsmail.ru/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/gosuslugi.ru/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/uchi.ru/77.88.8.8'
uci add_list dhcp.@dnsmasq[0].server='/uchiru.net/77.88.8.8'
# 4. Сохраняем и перезапускаем dnsmasq
uci commit dhcp
/etc/init.d/dnsmasq restart
Фикс телевизоров
Для смарт-ТВ и устройств с зашитым DoH/DoT, которые игнорируют DNS роутера и обходят Podkop.
Перехват DNS + блокировка DoT/DoH + disable_quic
cp /etc/config/firewall /etc/config/firewall.bak.$(date +%s) && \
uci add firewall redirect && \
uci set firewall.@redirect[-1].name='Intercept DNS LAN' && \
uci set firewall.@redirect[-1].src='lan' && \
uci set firewall.@redirect[-1].proto='tcp udp' && \
uci set firewall.@redirect[-1].src_dport='53' && \
uci set firewall.@redirect[-1].dest_port='53' && \
uci set firewall.@redirect[-1].target='DNAT' && \
uci add firewall rule && \
uci set firewall.@rule[-1].name='Block-DoT-LAN' && \
uci set firewall.@rule[-1].src='lan' && \
uci set firewall.@rule[-1].dest_port='853' && \
uci set firewall.@rule[-1].proto='tcp udp' && \
uci set firewall.@rule[-1].target='DROP' && \
for ip in 8.8.8.8 8.8.4.4 1.1.1.1 1.0.0.1 9.9.9.9; do \
uci add firewall rule; \
uci set firewall.@rule[-1].name="Block-DoH-$ip"; \
uci set firewall.@rule[-1].src='lan'; \
uci set firewall.@rule[-1].dest_ip="$ip"; \
uci set firewall.@rule[-1].dest_port='443'; \
uci set firewall.@rule[-1].proto='tcp'; \
uci set firewall.@rule[-1].target='DROP'; \
done && \
uci commit firewall && \
service firewall restart && \
uci set podkop.settings.disable_quic='1' && \
uci commit podkop && \
/etc/init.d/podkop restart && \
echo SETUP_DONE
UCI шпаргалка
UCI — единая система конфигурации OpenWrt. Эти команды пригождаются вне зависимости от VPN-стека.
| Команда | Что делает |
|---|---|
uci show network | показать всю секцию конфига целиком |
uci get network.lan.ipaddr | прочитать одно значение |
uci set network.lan.ipaddr='192.168.1.1' | задать значение (в памяти, не применено) |
uci commit network | сохранить изменения на диск |
/etc/init.d/network restart | применить изменения сети |
uci export > /root/full-backup.uci | текстовый бэкап всего конфига |
uci revert network | отменить несохранённые изменения секции |
Полезные ссылки
Официальная документация и репозитории проектов, которые тут используются.