Работа модема через GPRS / 3G в OpenSUSE 11.4

Обнаружил интересную багу в работе модема через GPRS или 3G. В качестве звонилки я использую wvdial с вот такими настройками:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","mtelinternet"
Modem = /dev/ttyACM0
Phone = *99***1#
Idle Seconds = 30000
Modem Type = USB Modem
Stupid Mode = 1
Compuserve = 0
Baud = 460800
Auto DNS = on
New PPPD = Yes
Dial Command = ATDT
Ask Password = 0
ISDN = 0
Password = internet
Username = internet

Соединение происходит, адреса DNS серверов успешно получаю при соединении, а вот сам интернет работает через раз. Причем угадать, будет ли он работать или нет, никакой возможности не имеется. Симптомы следующие, после установки соединения wvdial пытается отресолвить какое-то тестовое доменное имя, и таким образом определяет, работает ли DNS в установленном соединении:

Warning, can not find address for www.suse.de
Warning, address lookup does not work
Nameserver (DNS) failure, the connection May not work.

Если такие предупреждения видны, то возможны 2 ситуации.

Во-первых, wvdial не смог прописать адреса DNS сервера в /etc/resolv.conf. Лечится прописыванием адресов провайдера вручную — что и было сделано; но проблема не была устранена полностью.

Во-вторых, возможны проблемы с размерами окна tcp в туннеле ppp. В этом случае надо поиграться с настройками размера окна tcp:

echo “0″ >/proc/sys/net/ipv4/tcp_window_scaling

Лично мне это очень помогло, после чего я решил установить такие настройки в системе по умолчанию — дописал в /etc/sysctl.conf вот такую строчку:

net.ipv4.tcp_window_scaling = 0

и перечитал параметры:

# sysctl -p

После всех манипуляций интернет стал работать намного более стабильно. В качестве модема я использовал свой телефон Nokia E5