Jump to content

Recommended Posts

Posted

Суть проблемы:

1. Некоторые сервера в инете (yandex, например) отсылают все пакеты с установленным флагом DF, что запрещает их фрагментацию.

2. Туннели VPN идут с MTU<1500.

3. Отсюда проблема - пакеты не проходят, сайты не открываются.

 

Пути решения:

Cisco умеет снимать DF у проходящего трафика.

 

Вопрос:

Как это сделать на Linux?

Posted

есть патч на ядро+модуль к iptables, ищется гуглем

но на новые ядра не накладывается (старше 2.6.13 по моему)

Работает сносно, проверял.

 

Если не найдешь - я покопаюсь у себя и выложу.

Posted

это я находил, спасибо.

но там и iptables нужен не первой свежести...

 

неужели у всех фрагментация в VPN работатет без проблем?

Posted

dan

Он простой, я думал попробовать переделать его под новые ядра, но ИМХО должен быть и другой спопсоб.

 

Кстати, проблема у меня было с GRE тунелем а не с VPN

Posted

кому интересно - http://mordor.strace.net/iptables/

проблема-то не на моей стороне а на серверной. напол ставить флаг DF в Интернете?

теоретически (да и практически) эти грабли проявляются при любом тунеллировании.

вообще, я долго рыл. под линух - только этот патч или прокси ставить.

 

PS: откатился iptables 1.2.9. пропатчил. все работает нормально.

Posted
есть патч на ядро+модуль к iptables, ищется гуглем

но на новые ядра не накладывается (старше 2.6.13 по моему)

 

вернее начиная с 2.6.13.6 (кажется). уже оказывается не надо nfcache-у говорить, что пакет изменен. изменил модуль. если кому надо могут забирать с http://mordor.strace.net/iptables/

Posted

А если немного с другой стороны зайти?

 

iptables, TCPMSS, --set-mss

 

И патчить не нужно, правда только tcp, но, по опыту, этого хватает.

Posted
А если немного с другой стороны зайти?

 

iptables, TCPMSS, --set-mss

 

И патчить не нужно, правда только tcp, но, по опыту, этого хватает.

 

тогда можно сделать и ifconfig ethx mtu 1476, по опыту этого тоже хватает для борьбы с тунелями.

А изменение mss действительно проблематично из-за того, что это tcp only.

Posted
Гость

Спасибо!Полезный модуль.

Буду апдейтится!  

Куда высылать пиво?

 

пожалуста. долго не апдейтил, бо не думал, что в кернеле так оперативно api сменят :)

Posted
А если немного с другой стороны зайти?

 

iptables, TCPMSS, --set-mss

 

И патчить не нужно, правда только tcp, но, по опыту, этого хватает.

 

именно так лучше и делать, а снятие флага плохой путь.

Ко всему прочему максимальная длина UDP сами знаете сколько, icmp в большинстве случаев, тоже не большие, а пинги большими пакетами, - не велика беда, потеря.

  • 6 years later...
Posted

Со свежими ядрами Linux и tc, можно снять флаг DF с пакета, который должен быть инкапсулирован в IPIP и тогда DF не перенесется в заголовок IPIP пакета.

tc q add dev eth1 ingress

tc f add dev eth1 \
parent ffff: pref 10 protocol ip \
handle ::1 u32 \
match ip df \
action pedit munge offset 6 u8 set 0x00 retain 0xbf \
pipe action csum ip

eth1 - интерфейс, через который пакеты с флагом DF попадают в роутер

 

В rfc2003 "IP Encapsulation within IP" написано:

...
if the "Don't Fragment" bit is set in the inner IP header, it MUST be set in the outer IP header;
if the "Don't Fragment" bit is not set in the inner IP header, it MAY be set in the outer IP header
...

И не было бы никаких проблем, если бы не негодяи, которые блокируют ICMP сообщения "Destination Unreachable" c "Fragmentation required, and DF flag set" которые шлет Linux, когда не может запихнуть пакет в интерфейс c меньшим MTU.

 

Cisco и FreeBSD используют грязный хак, не вставляя DF флаг в IPIP пакет :)

Posted (edited)

Была проблема при установлении ipsec поверх vpn (pptp).

Как решение поставили на тоннель MTU 1512.

То есть получилось так, что в тоннель пакет лезет без фрагментации, а сам gre пакет подвергается фрагментации.

Edited by g3fox
Posted
Cisco и FreeBSD используют грязный хак, не вставляя DF флаг в IPIP пакет :)

1. Во фре не один способ IPIP.

2. DF давно снимается тем же ПФ, при желании.

Posted

s/археологи/некрофилы/

Помнится, последнним этот патчик видел под 2.6.20.

Когда понадобилось сделать под 2.6.36 - нагуглил необходимые изменения за полчаса (опять API поменяли).

В таргете же iptables вообще надо было поменять ipt_* на xt_* и он прекрасно собирался.

  • 6 months later...
Posted

s/некрофилы/энтузиасты/

Собственно, патч для снятия IP:DF я тоже помню, только теперь strace.net лежит, более нигде не смог найти патчик. Если у кого остался - выложите в сеть, пожалуйста, попробую к xtables прикрутить, вдруг получится. Также, волнует вопрос один - после прохождения пакетом таблицы iptables:mangle контрольная сумма IP пересчитывается? Не то чтобы я против изучения tc - всего лишь хотелось малой кровью через iptables справиться.

Posted

Контрольная сумма "пересчитывается". Для пересчёта вычитается старое значение и прибавляется новое, чтобы не считать всё целиком.

Posted (edited)

Реквестирую патч. :)

 

UPD: как было замечено в одном источнике, флаг DF может быть снят в заголовке пакета установкой значения 1 параметра ядра net.ipv4.ip_no_pmtu_disc (/proc/sys/net/ipv4/ip_no_pmtu_disc, кому как удобнее). Тем не менее, патч хочу получить для самообразования.

Edited by KrD13

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.