Как два байта переслать

Автор dr.Faust, 17 мая 2010, 13:29

0 Пользователи и 1 гость просматривают эту тему.

dr.Faust

Дано:
Шлюз на Ubuntu 10.04 с pppoe подключением и wifi адаптером D-Link DWA-140
Ноутбук с чипом atheros.

Надо:
чтобы на ноуте был интернет по wifi.

Что делаю:
На шлюзе поднимаю iptables с 2 простыми правилами:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE (SNAT тоже пробовал...)
iptables -A FORWARD -t mangle -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Задаю параметры сети (именно с такими параметрами работает сеть в Вин7 на шлюзе, но пробовал и другие подсети, в том числе 0):

шлюз:
IP: 192.168.8.1
Маска: 255.255.255.0

ноутбук:
IP: 192.168.8.2
Маска: 255.255.255.0
Шлюз: 192.168.8.1
DNS: 192.168.8.1 (dnsmasq есть и работает, другие dns пробовал тоже, что впрочем не важно, почему - понятно будет дальше)

iptables на ноутбуке девственно чист.

Форвардинг на шлюзе включен.
ipv6 выключен

С ноутбука пингуются:
192.168.8.1 и мой внешний IP
И всё. Все внешнии айпишники молчат как рыбы. Даже P-t-P прова.

При этом судя по трассировке пакеты уходят в правильном направлении, а судя по статистике, ещё и возвращаются на головную машину-шлюз.

Ставлю WireShark.
Смотрю:
Пакеты идут вроде бы правильно и даже доходят до 192.168.8.2, но такое ощущение, что не попадают в юзерспэйс, при этом в ЭТОЙ же сети, но когда шлюз win7 - всё нормально.

Смотрю пакет ICMP (пинг яндекса на всех интерфейсах) - при входе на ppp0 он 100 байт, данные 58 байт, на wlan0 шлюза он 98  байт, данные 58 байт и идентичны пришедшим на ppp0. Чексуммы верны.
На ноуте на wlan0 пакет уже 96 байт, данные 56 байт - два последних байта потеряны, в остальном идентичны. Чексумма небьётся и пакет выбрасывается, недоходя до юзерспейс.
C TCP та же какртина — пакеты долетают укороченные на 2 байта.  WireShark их обзывает Malformed packet.

В итоге инета нет.
Напомню, что пакеты генеримые на шлюзе (например пинг 192.168.8.1) проходят нормально.

Загруженные модули драйвера:
# lsmod | grep rt28
rt2870sta             461811  0
rt2800usb              31531  0
rt2x00usb               9703  1 rt2800usb
rt2x00lib              27509  2 rt2800usb,rt2x00usb
crc_ccitt               1339  1 rt2800usb

Пробовал оставлять только rt2870sta - после горячей выгрузки модуля rt2800usb не пашет соединение вообще, хотя лампочка мигает,  после перезагрузки работает с тем же эффектом.
Пробовал оставлять только rt2800usb - после горячей выгрузки модуля rt2870sta или  после перезагрузки работает с тем же эффектом.

frag[mentation_threshold] стоит в off, но пробовал 746,750,1500.
MTU ppp0 - 1492
MTU wlan0 - 1500, но пробовал 1492, 1502, 1532, 1572

# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:"alex-home-network"  
         Mode:Ad-Hoc  Frequency:2.412 GHz  Cell: 42:1A:40:DB:86:DF  
         Tx-Power=1 dBm  
         Retry  long limit:7   RTS thr:off   Fragment thr:off
         Encryption key:off
         Power Management:on
         
ppp0      no wireless extensions.


# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:18:f3:fb:34:42  
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:1289238 errors:0 dropped:0 overruns:0 frame:0
         TX packets:1814045 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:220326001 (220.3 MB)  TX bytes:2090110135 (2.0 GB)
         Interrupt:25 Base address:0x4000

lo        Link encap:Локальная петля (Loopback)  
         inet addr:127.0.0.1  Mask:255.0.0.0
         UP LOOPBACK RUNNING  MTU:16436  Metric:1
         RX packets:4714 errors:0 dropped:0 overruns:0 frame:0
         TX packets:4714 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:702100 (702.1 KB)  TX bytes:702100 (702.1 KB)

ppp0      Link encap:Протокол PPP (Point-to-Point Protocol)  
         inet addr:77.66.146.126  P-t-P:80.80.111.68  Mask:255.255.255.255
         UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
         RX packets:904719 errors:0 dropped:0 overruns:0 frame:0
         TX packets:1244988 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:3
         RX bytes:162007120 (162.0 MB)  TX bytes:1367376813 (1.3 GB)

wlan0     Link encap:Ethernet  HWaddr 00:1e:58:ad:c1:08  
         inet addr:192.168.8.1  Bcast:192.168.8.255  Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:21856 errors:0 dropped:0 overruns:0 frame:0
         TX packets:33813 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:1731766 (1.7 MB)  TX bytes:3543916 (3.5 MB)


Есть идеи?
Свобода информации - свобода личности!