Конфигурация одна и та же. На телефоне подключается за пару секунд, на роутере — рукопожатие вроде идёт, а устройства сети в интернет не выходят.
Дело не в конфигурации. Дело в том, что мобильное приложение делает за вас несколько шагов, о которых вы не знали, а роутер не делает ничего сверх сказанного.
Что делает клиент, чего не делает роутер
| Шаг | В приложении | На роутере |
|---|---|---|
| Создать интерфейс | автоматически | вручную |
Прописать маршруты из AllowedIPs |
автоматически | обычно вручную |
| Настроить DNS | автоматически | вручную |
| Разрешить пересылку из локальной сети | не нужно | обязательно |
| Включить маскарадинг | не нужно | обязательно |
| Подобрать MTU | автоматически | вручную |
Две строки, помеченные жирным, — источник большинства обращений. На телефоне их не существует в принципе: там трафик порождает само устройство, а не пересылает чужой.
Причина 1. Пересылка запрещена файрволом
Роутер по умолчанию не пересылает трафик между интерфейсами без явного разрешения. Туннель поднят, рукопожатие проходит, но пакеты из локальной сети до него не доходят.
Признак: с самого роутера пинг во внешний мир проходит, а с устройств сети — нет.
Лечение: в OpenWrt интерфейс нужно поместить в зону файрвола и разрешить пересылку из lan. В MikroTik — добавить правило в цепочку forward. В Keenetic это делается само при включении «использовать для выхода в интернет».
Причина 2. Нет маскарадинга
Пакеты уходят в туннель с адресами локальной сети — 192.168.x.x. Сервер такой адрес не знает и ответить на него не может: маршрута до вашей домашней сети у него нет.
Нужна подмена адреса источника на адрес туннельного интерфейса — та самая операция, которую роутер выполняет для обычного интернет-подключения, но для нового интерфейса её надо задать отдельно.
Признак: счётчик отправленных байт растёт, принятых — почти нет.
Лечение: правило masquerade для исходящих через интерфейс туннеля. В OpenWrt это галочка в свойствах зоны, в MikroTik — правило в srcnat.
Причина 3. MTU
На телефоне клиент подбирает размер пакета сам. Роутер ставит то, что написано, а если не написано — значение по умолчанию, часто неподходящее.
Осложняется это тем, что у роутера может быть PPPoE-подключение к провайдеру, которое само по себе уменьшает доступный размер на 8 байт.
Признак: характерный и ни на что не похожий — мессенджеры работают, лёгкие страницы открываются, тяжёлые виснут на середине.
Лечение: начать с 1280 и при желании поднимать. Подробно про подбор — в отдельной статье.
Причина 4. Процессор не справляется
Роутер шифрует трафик своим процессором, и он на порядок слабее телефонного. Бюджетные модели упираются в потолок задолго до скорости вашего тарифа.
Признак: всё работает, но медленно, при этом загрузка процессора роутера близка к сотне процентов.
Лечение: направить в туннель не всю сеть, а только нужные устройства — раздельное туннелирование снимает нагрузку. Либо поднять туннель на самих устройствах: их процессоры быстрее.
Причина 5. Один ключ на двух устройствах
Прозаичная, но встречается часто. Конфигурацию, уже работающую на телефоне, копируют в роутер как есть.
Так нельзя: пиры опознаются по ключу, и два устройства с одним ключом выбивают друг друга. Работать будет то, которое подключилось последним, а второе начнёт периодически терять связь.
Лечение: для роутера выпустить отдельную конфигурацию в личном кабинете.
Порядок проверки
- С самого роутера пингуется внешний адрес? Нет — проблема в туннеле, идите в общий разбор.
- С роутера пингуется, с устройств сети нет? Это пересылка или маскарадинг — причины 1 и 2.
- Пингуется отовсюду, но часть сайтов виснет? MTU.
- Всё работает, но медленно? Процессор.
Первый пункт делит проблему пополам и экономит больше всего времени.
Коротко
Мобильный клиент — это набор автоматических действий поверх туннеля. Роутер даёт голый механизм. Пять вещей, которые придётся сделать руками: маршруты, DNS, пересылка между интерфейсами, маскарадинг и MTU. Проверять начинайте с пинга с самого роутера — он сразу показывает, в туннеле проблема или в маршрутизации домашней сети.