Дано: Шлюз на 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
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)
Есть идеи?