LINUX.ORG.RU
ФорумAdmin

Проблема с NAT (ppp0<-->eth0)


0

0

Есть два компа в одной сети (192.168.0.35 и 192.168.0.38) К 35му подключен интернет через pptp-client, т.е. интефейс ppp0. Нужно настроить NAT чтобы пустить 38го в интеренет.

Создал правило:

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.38 -j MASQUERADE

Вроде бы после этого заработало, т.е. пингуются сайты инета... Но оказалось, что только пингуются, а в браузере не открываются.

Если при пинге указать размер где-нибудь 8000 байт, то уже пинг не проходит. При 6000 байт проходит где-то половина пакетов...

Подскажите как пофиксить? ГОРИТ!


Поставь вместо MASQUERADE: SNAT --to-source <адрес внешнего интерфейса>, обычно это так делается, ну и посмотри нет ли каких запретов на INPUT и FORWARD

anonymous
()

Скорее всего проблема в следующем. Поскольку MTU различаются у eth0 на 192.168.0.38 (1500) и ppp0 на 192.168.0.35 (1460), должен работать механизм PMTU, использующий icmp. Но некоторые админы запрещают icmp.

Вариант решения:
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400

http://www.lartc.org/howto/lartc.cookbook.mtu-mss.html

В принципе можно и руками поставить на eth0 192.168.0.38 MTU 1460.

jonatan
()
Ответ на: комментарий от jonatan

Ничего не помогло :( Я посмотрел MTU у ppp0, оно равно 1396. И пытался сделать его 1500 как и у eth0. Я вписывал в /etc/ppp/options.pptp строки mtu 1500 mru 1500 ...но не получается, все равно MTU 1396.

Не подскажите как это сделать?

Boiler
() автор топика
Ответ на: комментарий от Boiler

Щас уровнял mtu ppp0 сервера и eth0 клиента, сделал 1396. Все равно пакеты размером больше чем 1396 не проходят, значит дело было в разности mtu.

Как включить дефрагментацию пакетов?

Boiler
() автор топика
Ответ на: комментарий от Boiler

Отключение PMTU не поможет, т.к. можно настроить только свой комп. Ответы сервера так и будут идти с флагом "Don't Fragment".
Нужно либо переписывать MSS, либо менять MTU на внутреннем компе. Как ты проверяешь MTU? Посмотри сниффером - какой MSS отсылает клиент?

jonatan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.