Модераторы: marykone
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Причины непрохождения TCP поверх TUN/TAP (MTU=84), Не ходят TCP пакеты (TUN/TAP соединение) 
V
    Опции темы
fse
Дата 19.5.2012, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 28.9.2007
Где: г. Рязань

Репутация: нет
Всего: 1



Товарищи, подскажите. Сразу говорю, не гуру сетей, так что уже сломал голову.
Прикручиваю радиотрансивер к сети через TUN-соединение.
Читаю из туна IP-покеты и "как есть" шлю соседнему устройству.
С успехом идут пинги любого размера данных (тестил до 20 кб).
TCP пакеты проходят в обе стороны только на этапе соединения (SYN пакеты) и разъединения (FIN).
Сами данные не проходят, тестил на ssh, что приводит к зависанию ssh при подключении.
С telnet-ом обстоят дела иначе. Небольшие строки можно отправить.
Начал грешить на MSS, т.к. значение MTU мало (84 байта), выполнял:
Код

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 40

И его вариации - не помогло.
Подскажите какие варианты?
Данные для анализа:
Код

ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:1.1.1.1  P-t-P:1.1.1.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:84  Metric:1
          RX packets:1275 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1284 errors:0 dropped:0 overruns:731 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:106516 (106.5 KB)  TX bytes:106708 (106.7 KB)

Поднимал:
Код

ХОСТ1: ifconfig tun0 1.1.1.1; route add -net 1.1.1.0 netmask 255.255.255.0 dev tun0
ХОСТ2: ifconfig tun0 1.1.1.2; route add -net 1.1.1.0 netmask 255.255.255.0 dev tun0

tcpdump при ssh [email protected]:
Код

22:57:59.616238 IP 1.1.1.1.49831 > 1.1.1.2.ssh: Flags [S], seq 3113751769, win 2560, options [mss 40,sackOK,TS val 4378623 ecr 0,nop,wscale 6], length 0
22:57:59.742488 IP 1.1.1.2.ssh > 1.1.1.1.49831: Flags [S.], seq 2325304406, ack 3113751770, win 2440, options [mss 40,sackOK,TS val 4114340 ecr 4378623,nop,wscale 6], length 0
22:57:59.742545 IP 1.1.1.1.49831 > 1.1.1.2.ssh: Flags [.], ack 1, win 40, options [nop,nop,TS val 4378655 ecr 4114340], length 0

Настораживает окно window... Но mss с другой стороны верный (84-40 ~ 40)...

PM MAIL   Вверх
1000000dollars
Дата 20.5.2012, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Настораживают значения MTU и MSS.

Насколько я помню (хотя могу и ошибаться), для IPv4 MSS должен быть не меньше 536, а MTU, соответственно, не меньше 576.
PM MAIL   Вверх
fse
Дата 20.5.2012, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 28.9.2007
Где: г. Рязань

Репутация: нет
Всего: 1



Цитата(1000000dollars @  20.5.2012,  01:15 Найти цитируемый пост)
Насколько я помню (хотя могу и ошибаться), для IPv4 MSS должен быть не меньше 536, а MTU, соответственно, не меньше 576. 

Хорошо бы если так, тогда ясна была бы причина, но нет. Минимальный MTU составляет 68 байт.
Кстати, от сомнительных значений окна получилось избавиться путём включения Path MTU discovery, но это не помогло.
До кучи вываливаю лог создаваемого моста, где присутствуют записи о приёме пакетов из туннеля и по радио и аналогичной пересылке.
Сейчас изучаю, может кто-то подвох заметит:

Код

━━━━━━━━━━━━━━━━━━━━━━━━ data from TUN received ━━━━━━━━━━━━━━━━━━━━━━━━
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 9146
ip ttl ............. 64
ip included proto .. Transmission Control Protocol.
tcp source port .... 50183
tcp dest port ...... 22
tcp flags .......... SYN 
tcp sequence ....... 156273393, ack 0
tcp window ......... 2560
xbeetun: IP-packet added to tx queue, where now 1 items
━━━━━━━━━━━━━━━━━━━━━━━━ packet sended by xbee: ━━━━━━━━━━━━━━━━━━━━━━━━
xbeetun: receiver mac-address 0013A200406720ED, rf-payload size 60
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 9146
...
━━━━━━━━━━━━━━━━━━━━━━ packet received by radio: ━━━━━━━━━━━━━━━━━━━━━━━
xbeetun: transmitter mac-address 0013A200406720ED, rf-payload size 60
ip source .......... 001.001.001.002
ip dest ............ 001.001.001.001
ip service ......... CLASS 0 (default)
ip ident ........... 0
ip ttl ............. 64
ip included proto .. Transmission Control Protocol.
tcp source port .... 22
tcp dest port ...... 50183
tcp flags .......... SYN ACK 
tcp sequence ....... 3775085333, ack 156273394
tcp window ......... 2440
━━━━━━━━━━━━━━━━━━━━━━━━ data from TUN received ━━━━━━━━━━━━━━━━━━━━━━━━
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 9147
ip ttl ............. 64
ip included proto .. Transmission Control Protocol.
tcp source port .... 50183
tcp dest port ...... 22
tcp flags .......... ACK 
tcp sequence ....... 156273394, ack 3775085334
tcp window ......... 40
xbeetun: IP-packet added to tx queue, where now 1 items
━━━━━━━━━━━━━━━━━━━━━━━━ packet sended by xbee: ━━━━━━━━━━━━━━━━━━━━━━━━
xbeetun: receiver mac-address 0013A200406720ED, rf-payload size 52
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 9147
...
━━━━━━━━━━━━━━━━━━━━━━━━ data from TUN received ━━━━━━━━━━━━━━━━━━━━━━━━
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 9148
ip ttl ............. 64
ip included proto .. Transmission Control Protocol.
tcp source port .... 50183
tcp dest port ...... 22
tcp flags .......... FIN ACK 
tcp sequence ....... 156273394, ack 3775085334
tcp window ......... 40
xbeetun: IP-packet added to tx queue, where now 1 items
━━━━━━━━━━━━━━━━━━━━━━━━ packet sended by xbee: ━━━━━━━━━━━━━━━━━━━━━━━━
xbeetun: receiver mac-address 0013A200406720ED, rf-payload size 52
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 9148
ip ttl ............. 64
ip included proto .. Transmission Control Protocol.
tcp source port .... 50183
tcp dest port ...... 22
tcp flags .......... FIN ACK 
tcp sequence ....... 156273394, ack 3775085334
tcp window ......... 40
━━━━━━━━━━━━━━━━━━━━━━━━ data from TUN received ━━━━━━━━━━━━━━━━━━━━━━━━
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 9149
ip ttl ............. 64
ip included proto .. Transmission Control Protocol.
tcp source port .... 50183
tcp dest port ...... 22
tcp flags .......... FIN ACK 
tcp sequence ....... 156273394, ack 3775085334
tcp window ......... 40
xbeetun: IP-packet added to tx queue, where now 1 items
━━━━━━━━━━━━━━━━━━━━━━━━ packet sended by xbee: ━━━━━━━━━━━━━━━━━━━━━━━━
xbeetun: receiver mac-address 0013A200406720ED, rf-payload size 52
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 9149
...
━━━━━━━━━━━━━━━━━━━━━━ packet received by radio: ━━━━━━━━━━━━━━━━━━━━━━━
xbeetun: transmitter mac-address 0013A200406720ED, rf-payload size 76
ip source .......... 001.001.001.002
ip dest ............ 001.001.001.001
ip service ......... CLASS 0 (default)
ip ident ........... 39556
ip ttl ............. 64
ip included proto .. Transmission Control Protocol.
tcp source port .... 22
tcp dest port ...... 50183
tcp flags .......... PSH ACK 
tcp sequence ....... 3775085334, ack 156273395
tcp window ......... 39
tcp payload (24 bytes):
53 53 48 2D 32 2E 30 2D 4F 70 65 6E 53 53 48 5F SSH-2.0-OpenSSH_
35 2E 38 70 31 20 44 65                         5.8p1 De
━━━━━━━━━━━━━━━━━━━━━━━━ data from TUN received ━━━━━━━━━━━━━━━━━━━━━━━━
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 0
ip ttl ............. 64
ip included proto .. Transmission Control Protocol.
tcp source port .... 50183
tcp dest port ...... 22
tcp flags .......... RST 
tcp sequence ....... 156273395, ack 0
tcp window ......... 0
xbeetun: IP-packet added to tx queue, where now 1 items
━━━━━━━━━━━━━━━━━━━━━━━━ packet sended by xbee: ━━━━━━━━━━━━━━━━━━━━━━━━
xbeetun: receiver mac-address 0013A200406720ED, rf-payload size 40
ip source .......... 001.001.001.001
ip dest ............ 001.001.001.002
ip service ......... CLASS 0 (default)
ip ident ........... 0
...

Тут меня удивил незаконченный payload при неполном IP-пакете в 76 байт, и это вместо целых 84-ёх  smile :
Код

SSH-2.0-OpenSSH_5.8p1 De



PM MAIL   Вверх
fse
  Дата 20.5.2012, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 28.9.2007
Где: г. Рязань

Репутация: нет
Всего: 1



Всё очень хорошо, спасибо, 1000000dollars за мысли!
Косяк был именно в размере окна!!!
Я после туннеля ручками устанавливаю окно в 44 байта и ssh  попёр без проблем!!!  smile 
Но что-то мне подсказывает, что такой подход не есть гуд.
Люди, подскажите ламеру, как правильно устанавливать в системе параметры чтобы в ручную не приходилось окно TCP-фрейма править!!!
Пробовал включать clamp-mss-to-pmtu, ставил --tcp-mss и всё без толку, т.к. на этапе SYN-обмена окна всё равно большие...
PM MAIL   Вверх
1000000dollars
Дата 20.5.2012, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 6.10.2007

Репутация: нет
Всего: 8



Пожалуйста. Как это устанавливается зависит от дистрибутива. Независимый от дистрибутива вариант - писать настройки в ядро напрямую через /proc.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Сетевые технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0714 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.