Archive for iptables

изменение MTU средствами iptables

// Апрель 16th, 2010 // 1 Comment » // advance, iptables, linux, MTU

Суть проблемы: ADSL модем в режиме моста (bridge) или pptp соединение к провайдеру и маршрутизатор на линуксе.
Допустим все поднято, линукс бегает в интернет, но вот беда, пользователи за линуксом не хотят открывать сайты, хотя пинги и трейсы ходят, проблема кроется в том, что по умолчанию для ethernet размер пакета составляет 1500 байт, а для виртуального канала, т.к. происходить капсулирование пакетов, обычно 1472, иногда и того меньше, соответственно пакеты просто не помещаются, для этого нужно изменить размер пакета, т.е. заставить создавать соединение с нужным размером.
Для начала проверим, какое MTU нам подойдет, проверяется обычным пингом с указанием размера пакета, пример:

ping ya.ru -l 1472

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

iptables -I FORWARD -o ppp0 -p tcp -j TCPMSS --tcp-flags syn,fin,ack syn --set-mss 1472

соответсвенно исходящий туннелированный интерфейс ppp0 поменять на свой и 1472 поменять на свое число