В общем, было уже давно мной замечено странное поведение в работе с интернетом с компов что сидят за маскарадингом в моей маленькой домашней сети. В чем это проявляется? А вот в чем: не через прокси практически невозможно серфить по WWW, открываются только единичные сайты, некоторые протоколы, конкретно столкнулся с git, не работают - просто висит соединение.
Схема подключения такая:
[компы сети]=====[свитч]------[роутер (inet via pppoe)]-------[ADSL модем]--~~~~~--[internet]
Анализ сетевых настроек ничего не дал, игры с MTU/MRU тоже, отключение ipv6 и windows scaling тоже, анализ работы tcpdump тоже… Поиск решения по интернету проводился долго и мучительно, но в итоге набрел на обсуждение: http://www.usenet-forums.com/linux-networking/71513-iptables-adsl-some-protocols-not-working.html и на документацию: http://www.linux.org/docs/ldp/howto/Adv-Routing-HOWTO/lartc.cookbook.mtu-mss.html
Результат - решение проблемы: добавить правило для iptables:
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
конкретно в моём случае они получились такими:
-A FORWARD -i eth1 -o ppp999 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i ppp999 -o eth1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
PS кстати, отключить ipv6 можно так: создать файлик /etc/modprobe.d/ipv6
со следующим содержимым:
alias net-pf-10 off