dan Posted December 6, 2005 Posted December 6, 2005 Суть проблемы: 1. Некоторые сервера в инете (yandex, например) отсылают все пакеты с установленным флагом DF, что запрещает их фрагментацию. 2. Туннели VPN идут с MTU<1500. 3. Отсюда проблема - пакеты не проходят, сайты не открываются. Пути решения: Cisco умеет снимать DF у проходящего трафика. Вопрос: Как это сделать на Linux? Вставить ник Quote
sirmax Posted December 7, 2005 Posted December 7, 2005 есть патч на ядро+модуль к iptables, ищется гуглем но на новые ядра не накладывается (старше 2.6.13 по моему) Работает сносно, проверял. Если не найдешь - я покопаюсь у себя и выложу. Вставить ник Quote
dan Posted December 7, 2005 Author Posted December 7, 2005 это я находил, спасибо. но там и iptables нужен не первой свежести... неужели у всех фрагментация в VPN работатет без проблем? Вставить ник Quote
sirmax Posted December 7, 2005 Posted December 7, 2005 dan Он простой, я думал попробовать переделать его под новые ядра, но ИМХО должен быть и другой спопсоб. Кстати, проблема у меня было с GRE тунелем а не с VPN Вставить ник Quote
dan Posted December 7, 2005 Author Posted December 7, 2005 кому интересно - http://mordor.strace.net/iptables/ проблема-то не на моей стороне а на серверной. напол ставить флаг DF в Интернете? теоретически (да и практически) эти грабли проявляются при любом тунеллировании. вообще, я долго рыл. под линух - только этот патч или прокси ставить. PS: откатился iptables 1.2.9. пропатчил. все работает нормально. Вставить ник Quote
Guest Posted December 8, 2005 Posted December 8, 2005 есть патч на ядро+модуль к iptables, ищется гуглемно на новые ядра не накладывается (старше 2.6.13 по моему) вернее начиная с 2.6.13.6 (кажется). уже оказывается не надо nfcache-у говорить, что пакет изменен. изменил модуль. если кому надо могут забирать с http://mordor.strace.net/iptables/ Вставить ник Quote
sirmax Posted December 10, 2005 Posted December 10, 2005 Гость Спасибо!Полезный модуль. Буду апдейтится! Куда высылать пиво? Вставить ник Quote
balamutang Posted December 10, 2005 Posted December 10, 2005 а на FreeBSD как снять? Вставить ник Quote
Say Posted December 10, 2005 Posted December 10, 2005 А если немного с другой стороны зайти? iptables, TCPMSS, --set-mss И патчить не нужно, правда только tcp, но, по опыту, этого хватает. Вставить ник Quote
avl Posted December 12, 2005 Posted December 12, 2005 А если немного с другой стороны зайти? iptables, TCPMSS, --set-mss И патчить не нужно, правда только tcp, но, по опыту, этого хватает. тогда можно сделать и ifconfig ethx mtu 1476, по опыту этого тоже хватает для борьбы с тунелями. А изменение mss действительно проблематично из-за того, что это tcp only. Вставить ник Quote
avl Posted December 12, 2005 Posted December 12, 2005 ГостьСпасибо!Полезный модуль. Буду апдейтится! Куда высылать пиво? пожалуста. долго не апдейтил, бо не думал, что в кернеле так оперативно api сменят :) Вставить ник Quote
desperado Posted December 12, 2005 Posted December 12, 2005 А если немного с другой стороны зайти? iptables, TCPMSS, --set-mss И патчить не нужно, правда только tcp, но, по опыту, этого хватает. именно так лучше и делать, а снятие флага плохой путь. Ко всему прочему максимальная длина UDP сами знаете сколько, icmp в большинстве случаев, тоже не большие, а пинги большими пакетами, - не велика беда, потеря. Вставить ник Quote
catalist Posted December 13, 2005 Posted December 13, 2005 народ а как снять флаг дф на цыске 2620? Вставить ник Quote
Painter Posted March 15, 2012 Posted March 15, 2012 Со свежими ядрами 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 пакет :) Вставить ник Quote
g3fox Posted March 15, 2012 Posted March 15, 2012 (edited) Была проблема при установлении ipsec поверх vpn (pptp). Как решение поставили на тоннель MTU 1512. То есть получилось так, что в тоннель пакет лезет без фрагментации, а сам gre пакет подвергается фрагментации. Edited March 15, 2012 by g3fox Вставить ник Quote
Ivan_83 Posted March 15, 2012 Posted March 15, 2012 Cisco и FreeBSD используют грязный хак, не вставляя DF флаг в IPIP пакет :) 1. Во фре не один способ IPIP. 2. DF давно снимается тем же ПФ, при желании. Вставить ник Quote
Giga-Byte Posted March 15, 2012 Posted March 15, 2012 археологи, вы на дату смотрите. Вставить ник Quote
[anp/hsw] Posted March 15, 2012 Posted March 15, 2012 s/археологи/некрофилы/ Помнится, последнним этот патчик видел под 2.6.20. Когда понадобилось сделать под 2.6.36 - нагуглил необходимые изменения за полчаса (опять API поменяли). В таргете же iptables вообще надо было поменять ipt_* на xt_* и он прекрасно собирался. Вставить ник Quote
KrD13 Posted October 7, 2012 Posted October 7, 2012 s/некрофилы/энтузиасты/ Собственно, патч для снятия IP:DF я тоже помню, только теперь strace.net лежит, более нигде не смог найти патчик. Если у кого остался - выложите в сеть, пожалуйста, попробую к xtables прикрутить, вдруг получится. Также, волнует вопрос один - после прохождения пакетом таблицы iptables:mangle контрольная сумма IP пересчитывается? Не то чтобы я против изучения tc - всего лишь хотелось малой кровью через iptables справиться. Вставить ник Quote
Ivan_83 Posted October 8, 2012 Posted October 8, 2012 Контрольная сумма "пересчитывается". Для пересчёта вычитается старое значение и прибавляется новое, чтобы не считать всё целиком. Вставить ник Quote
KrD13 Posted October 8, 2012 Posted October 8, 2012 (edited) Реквестирую патч. :) UPD: как было замечено в одном источнике, флаг DF может быть снят в заголовке пакета установкой значения 1 параметра ядра net.ipv4.ip_no_pmtu_disc (/proc/sys/net/ipv4/ip_no_pmtu_disc, кому как удобнее). Тем не менее, патч хочу получить для самообразования. Edited October 11, 2012 by KrD13 Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.