как изменить mss при ошибке unreachable - need to frag
Добавлено: 2009-11-25 12:45:56
Из за сложного устройства сети, туннель(mtu 1420) через pppoe(на mpd5 mtu 1460) соединение, стали появляться такие ошибки.
У кого были или есть тот поймет. Свои может позже выложу.
При поиске причины обнаружилось что MSS должен быть равен MTU -40 (иногда даже -60)
Решение для линукса есть почти в каждом втором форуме.
А вот как для freebsd изменить MSS?
ничего не изменило, пакеты приходили с тем же MSS 1460.
Сейчас прописал в mpd5
результат пока проверить не могу.
Хотелось бы знать как можно вручную изменить MSS.
А теперь решение этой проблемы.
Решить как в линуксе в одну строчку не получилось, но всё же цель достигнута пакеты втиснуты в туннель
Для изменения mss используем packet filter, а в частности packet normalizator.
Для того что бы просто запустить pf, можно выполнить
А потом желательно пере собрать ядро со следующей строчкой
После этого нормализуем трафик в туннеле следующим правилом
Добавляем pf в запуск системы
запускаем его
и всё работает!
Специально написал всё так подробно, потому что приличного решения для ошибки типа unreachable - need to frag для freebsd найти не смог.
Огромное спасибо GRooVE за помощь!
Код: Выделить всё
16:24:33.992091 IP 137.226.18.3.80 > 137.226.12.150.33012: . 2897:5793(2896) ack 114 win 91 <nop,nop,timestamp 63951179 5405908>
16:24:33.992205 IP 137.226.18.1 > 137.226.18.3: ICMP 137.226.12.150 unreachable - need to frag (mtu 1460), length 556При поиске причины обнаружилось что MSS должен быть равен MTU -40 (иногда даже -60)
Решение для линукса есть почти в каждом втором форуме.
Код: Выделить всё
iptables -A FORWARD -p tcp --syn -s $WINXP_BOX -j TCPMSS --set-mss 1380Код: Выделить всё
sysctl net.inet.tcp.mssdflt=1340Сейчас прописал в mpd5
Код: Выделить всё
set iface enable tcpmssfixХотелось бы знать как можно вручную изменить MSS.
А теперь решение этой проблемы.
Решить как в линуксе в одну строчку не получилось, но всё же цель достигнута пакеты втиснуты в туннель
Для изменения mss используем packet filter, а в частности packet normalizator.
Для того что бы просто запустить pf, можно выполнить
Код: Выделить всё
kldload pfКод: Выделить всё
device pfКод: Выделить всё
echo 'scrub on gif0 max-mss 1380' >> /etc/pf.confКод: Выделить всё
echo 'pf_enable="YES"'>> /etc/rc.confКод: Выделить всё
pfctl -eСпециально написал всё так подробно, потому что приличного решения для ошибки типа unreachable - need to frag для freebsd найти не смог.
Огромное спасибо GRooVE за помощь!