Jump to content
Калькуляторы

Должны ли CPE nat'ить фрагментированные пакеты?

Есть cpe - zyxel keenetic lite, через которую не натятся фрагментированные пакеты(запускаю iperf -c iperf-server -u изнутри, из wan-порта трафик не уходит).

Собственно вопрос в том, существуют ли реальные приложения(кроме iperf'а и netcat -u), которые могут сгенерировать такой(фрагментированный) трафик? Если да, то можно их названия?

 

И ещё вопрос, должны ли CPE'шки подменять IP адрес в команде PORT протокола ftp(активный режим), чтобы абонентам не надо было принудительно устанавливать галочку "пассивный режим"?

Edited by s.lobanov

Share this post


Link to post
Share on other sites

Должны.

Фрагментированный пакет от обычного отличается только несколькими полями в IP заголовке.

Единственный вариант, который могу придумать - у вас мту на ван интерфейсе меньше.

В таком случае оно должно собрать весь пакет в памяти (дефрагментировать) а потом заного его фрагментировать с новым, более маленьким мту.

Дефрагментация - затратная операция по памяти, как минимум, не говоря про усилия для написания кода.

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

(подкрутить мту на сетевухе абонента)

 

Ещё вариант что там где то галочка есть, какая нибудь супер фирменная технология защиты от дос атак.

 

 

Нет такого требования/стандарта.

Собственно ALG в коробках видел только в DFL фаерах, в чём по проще не помню чтобы встречалось, может кто подскажет другие коробки с ALG для фтп :)

Share this post


Link to post
Share on other sites
Должны.

Фрагментированный пакет от обычного отличается только несколькими полями в IP заголовке.

Единственный вариант, который могу придумать - у вас мту на ван интерфейсе меньше.

В таком случае оно должно собрать весь пакет в памяти (дефрагментировать) а потом заного его фрагментировать с новым, более маленьким мту.

Дефрагментация - затратная операция по памяти, как минимум, не говоря про усилия для написания кода.

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

(подкрутить мту на сетевухе абонента)

Слал фрагментированные пакеты размером 1000 байт, он их всё равно тупо дропает. iperf -u всегда генерит такой трафик, независимо от mtu. Вопрос в том, существуют ли реальные приложения, которые способны породить фрагментированный трафик.

 

Ещё вариант что там где то галочка есть, какая нибудь супер фирменная технология защиты от дос атак.
Тоже так подумал, но нет таких галочек

 

Нет такого требования/стандарта.

Собственно ALG в коробках видел только в DFL фаерах, в чём по проще не помню чтобы встречалось, может кто подскажет другие коробки с ALG для фтп :)

Спросил про ftp в активном режиме, потому что adsl-модем huawei mt880 это умеет делать (подменять содержимое команды PORT и прокидывать related tcp-соединение в inside)

 

Может кто подскажет как добраться до busybox'а? уж очень хочется посмотреть правила iptables

Share this post


Link to post
Share on other sites
Может кто подскажет как добраться до busybox'а? уж очень хочется посмотреть правила iptables
Его может там не быть, не во всех моделях Linux inside. У некоторых, например, VxWorks.

 

Share this post


Link to post
Share on other sites

marikoda

Он в логах сам пишет, что там busybox, ещё пишет, что подгружает rp-pppoe.so и т.д. и т.п.

Share this post


Link to post
Share on other sites

Судя по всему, Вы делаете NAPT. В этом случае, для того, чтобы сделать трансляцию, маршрутизатор должен собрать пакет. А эта, как было отмечено, операция затратная. Поэтому в большинстве случаев на такие пакеты забивают :)

Мне на ум приходит только одно приложение, которое может порождать фрагментированные пакеты: NFS. Но что-то мне подсказывает, что это не единственная проблема NFS при работе через NAT :)

Share this post


Link to post
Share on other sites

nnm

Да не нужно собирать пакет целиком, если не делать перефрагментацию.

Share this post


Link to post
Share on other sites
nnm

Да не нужно собирать пакет целиком, если не делать перефрагментацию.

Если я Вас правильно понял, Вы эту префрагментацию как раз делаете:
Слал фрагментированные пакеты размером 1000 байт, он их всё равно тупо дропает. iperf -u всегда генерит такой трафик, независимо от mtu.

Share this post


Link to post
Share on other sites
Вопрос в том, существуют ли реальные приложения, которые способны породить фрагментированный трафик
Нет.

Посмотрите у себя на роутерах с натом статистику, у меня на домашнем роутере с торрентами/на рабочих-офисных обычно по нулям, пока я сам пинги размером больше мту не запускаю.

 

Офисный роутер, аптайм 78 суток:

ip:

99967061 total packets received

3624 bad header checksums

0 with size smaller than minimum

0 with data size < data length

0 with ip length > max ip packet size

0 with header length < data size

0 with data length < header length

0 with bad options

0 with incorrect version number

0 fragments received

0 fragments dropped (dup or out of space)

0 fragments dropped after timeout

0 packets reassembled ok

44873589 packets for this host

0 packets for unknown/unsupported protocol

50302795 packets forwarded (23477368 packets fast forwarded)

78716 packets not forwardable

0 packets received for unknown multicast group

0 redirects sent

58750403 packets sent from this host

0 packets sent with fabricated ip header

536047 output packets dropped due to no bufs, etc.

9 output packets discarded due to no route

47753 output datagrams fragmented

95506 fragments created

3 datagrams that can't be fragmented

0 tunneling packets that can't find gif

0 datagrams with bad address in header

На других ещё меньше или по нулям.

Этот сам пакеты фрагментировал для какого то приложения из за разницы мту на внутреннем и внешнем интерфейсах, возможно там тередо (юдп) включён на компах в локалке, в остальных местах тередо нет/выключен.

Для тсп оно не нужно потому и по нулям почти везде.

Те по моей статистике пользования - пренебречь фрагментированными пакетами можно :)

Но нужно ещё проверить будет ли коробка сама фрагментировать пакеты если мту ван меньше мту лан, но и это не сильно востребовано.

 

Тоже так подумал, но нет таких галочек
Обновить прошивку?

 

 

 

Мне на ум приходит только одно приложение, которое может порождать фрагментированные пакеты: NFS. Но что-то мне подсказывает, что это не единственная проблема NFS при работе через NAT :)
Думаю что тем у кого нфс, в значении отличном от нид фор спид, такие коробки не особо нужны либо они как нибудь сами разберутся.

Share this post


Link to post
Share on other sites
Вопрос в том, существуют ли реальные приложения, которые способны породить фрагментированный трафик
Нет.

Посмотрите у себя на роутерах с натом статистику, у меня на домашнем роутере с торрентами/на рабочих-офисных обычно по нулям, пока я сам пинги размером больше мту не запускаю.

 

Спасибо за статистику, но интересно посмотреть её на стороне оператора, а не у абонента. Сами нат не практикуем, поэтому посмотреть негде.

 

nnm

Да не нужно собирать пакет целиком, если не делать перефрагментацию.

Если я Вас правильно понял, Вы эту префрагментацию как раз делаете:
Слал фрагментированные пакеты размером 1000 байт, он их всё равно тупо дропает. iperf -u всегда генерит такой трафик, независимо от mtu.

 

Не делаю я перефрагментацию. iperf просто "спускает" udp-данные большой длины, фрагментацией занимается сетевая подсистема ОС.

Share this post


Link to post
Share on other sites
Не делаю я перефрагментацию. iperf просто "спускает" udp-данные большой длины, фрагментацией занимается сетевая подсистема ОС.

C точки зрения маршрутизатора, который делает NAT, нет разницы кто фрагментировал пакеты. Они прилетели к нему фрагментированными и все, чтобы отнатить нужно их собрать. А кто порубил пакет - приложение, ОС или предыдущий транзитный маршрутизатор уже не важно.

Edited by nnm

Share this post


Link to post
Share on other sites
Спасибо за статистику, но интересно посмотреть её на стороне оператора, а не у абонента. Сами нат не практикуем, поэтому посмотреть негде.
Посмотрите у себя, нат к фрагментации отношения не имеет.

В том смысле, что напрямую он этого не делает.

 

Первый выделенный жирным блок счётчиков во фряхе висит на ip_reass - которую вызывает ip_input / ip_fw, в PF походу есть свой отдельный сборщик учитывая наличие в нём опции и отсутствие вызова ip_reass.

Если мне память не изменяет, то для роутинга/форвадинга она (фряха) пакеты будет пересобирать только если они для неё либо если это прописано в правилах фаервола.

Те для случая с транзитными фрагментированными пакетами и отсутствием фаервола у меня нет 100% уверенности что она пересобирает а потом заново фрагментирует и шлёт дальше.

 

Второй блок - это пакеты которые фрагментировал сам хост в ip_fragment

Это могло быть если:

- пакет форвадится между интерфейсами фастфорвадингом (не фрагментирован, не для этого хоста, мту на выходном интерфейсе меньше)

- пакет в ip_output (там он мог оказать если хост сам сгенерировал траффик, из ip_forward (из ip_input) или (?) из очереди, после дефрагментации в ip_input - тут для меня тёмное место).

- PF дёрнул ip_fragment а потом что то сделал с пакетом

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this