Дано: роутер с OpenWRT, домашний интернет (один канал). В роутер воткнут 3G-модем.
Хочется: иметь SSH-доступ к роутеру на случай "падения" основного канала в чисто диагностических целях (понять что случилось, предметно пинать техподдержку).
Решение.
Берём какую-нибудь VPSку или другой OpenWRT-роутер на другом провайдере с "честным" белым IP. Вкорячиваем на нём OpenVPN-сервер. Примерный конфиг (ключи-сертификаты опущены).
На целевом (домашнем) роутере поднимаем клиента для него. Примерный конфиг. Расширение ему давать не ".conf", а какое-нибудь другое, чтобы демон не стартовал бы автоматически при запуске системы. Конкретно в моём случае OpenVPN собран с libssl (не с mbedtls) ради поддержки эллиптики. С ней шустрее работает установление соединения.
Отдельно оговариваю, что интересующий 3G-модем работает в режиме PPP. Для всяких там NCM / QMI / Direct IP и прочих расклад будет несколько другой.
Примерный вариант скрипта на событие поднятия PPP-линка. Файл делаем исполняемым, кладём в "/etc/ppp/ip-up.d/". Не забыть также в "/etc/iproute2/rt_tables" прописать табличку с именем "gsm" для наглядности. Ну и название интерфейса вместо "3g-GSM" подставить своё.
Примерный вариант скрипта на событие выключения PPP-линка. Файл делаем исполняемым, кладём в "/etc/ppp/ip-down.d/".
Собственно, всё. Как только PPP установится, проиводится некая небольшая магия с iproute2 и запускается OpenVPN. В случае разрыва всё гасится в обратном порядке.
Как раз для этого мне и нужна была DanyCom-овская SIM-карта. Халявного гигабайта в месяц под такие цели вполне достаточно.