Добрый день.Есть кусок сетки работающий по схеме:
|интернет|--|LAN1(172.16.0.0/16)|--172.16.0.106|router1|1.1.10.1--
--|MetroEthernet|--1.1.10.2|router2|172.25.1.100--|LAN2(172.25.0.0/16)|
router1 и router2 представляют собой машинки на FreeBSD 6.2 с поднятым туннелем gif и работающим racoon.
Собственно сетки LAN1 и LAN2 друг-друга видят прекрасно, но http-ресурсы тырнета для сети LAN2, увы, недоступны.
Недоступны они по той причине, что пакеты вида:
10:54:15.134128 IP (tos 0x0, ttl 62, id 22006, offset 0, flags [DF], proto: TCP (6), length: 1500) fk-in-f99.google.com.http > 172.25.4.11.3139: . 1:1461(1460) ack 539 win 65535
приходящие на bge0 router1 на gif0 уже не видны.
На gif0 стоит mtu 1280
А значит пакет размера 1500 и с флагом DF в gif0 (если я правильно все понимаю) не пролезет.
Я пробовал с помощью pf делать так:
scrub in all
scrub in on bge0 all fragment reassemble min-ttl 15 max-mss 1400
scrub in on bge0 all no-df
scrub on bge0 all reassemble tcp
где bge0 - сетевая карта router1 смотрящая в локалку 172.16.0.0/16
Однако это не помогло. Пакеты по-прежнему не пролезают. Пробовал
отключать net.inet.tcp.path_mtu_discovery. Та же ситуация.
Пробовал играться с net.inet.ipsec.dfbit.
Нужен свежий взгляд на проблему.
P.S. Есть еще вариант ipfw + tcpmssd, но не хочется еще какие-то
сервисы городить.