четверг, 26 декабря 2013 г.

Домашняя сеть: решение проблемы с "неоткрыванием сайтов"

Дома имею небольшую сеть, в которой мобильные устройства получают WiFi-доступ в интернет через стационарный компьютер, подключенный к интернету. Подключение через VPN (L2TP, PPTP) поверх Ethernet, входящего проводом (витой парой) в квартиру.
Типичная ситуация.

Хотя стационарный компьютер-шлюз настроить не ахти какая задача (можно даже через стандартный NetworkManager), нормально это не работало: в то время, как на самом шлюзе всё прекрасно работает, с подключенных WiFi-устройств (например, Android-планшета и телефона) сайты не открываются, а точнее соединение устанавливается, но от странички не приходит ни одного байта!
Поначалу я подозревал плохую WiFi-карту на шлюзе, плохие драйвера, режим Ad-Hoc и т.п. Затем где-то наткнулся на предложение уменьшить MTU на устройстве, с которого плохо работает... Попробовал, получилось! Примерно так:
ip link set wlan0 mtu 1432
(в андроиде это запускалось из приложения GScript).
К счастью, слепое использование "магической" команды не продлилось вечно, и нашлось толковое объяснение, а также рецепт, как "объехать" проблему на стороне шлюза:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

К сожалению, это работает, как видно, только для TCP. Но зато работает!