LINUX.ORG.RU
ФорумAdmin

Проблема с NAT


0

0

Имеется шлюз, одной сетевухой смотрящий в сеть провайдера, через которую посредством pptp- или l2tp-соединения осуществляется выход в интернет, другой сетевухой смотрящий во внутренюю сетку. Раздача выход во внешнюю сеть осуществляется посредством NAT (-j MASQUERADE).

Собственно проблема:
С самого шлюза и интернет и внутренняя сеть провайдера замечательно работают на очень хороших скоростях (локалка - на 100 мбит/с, интернет - на максимальной тарифной скорости - 6 мбит/с), все ресурсы и протоколы нормально работают.
А вот на машинах, находящихся во внутренней сети наблюдается очень интересная проблема: все сайты замечательно резолвятся и пингуются, но открывается от силы каждый 10-й... Например ya.ru или google.ru/google.com нормально открывается, а при попытке загрузить yandex.ru выдает request timeout.
При этом внутренние ресурсы провайдера открываются _вроде-бы_ нормально.
Для организации pptp-туннеля используется пакет pptpclient-1.7.1-2, а для l2tp-туннеля - rp-l2tp-0.4-2.

Что это такое может быть и как с этим бороться?

Вот правила, которыми организовывается NAT (лишнее поскипано):

#!/bin/bash

$IPTABLES -F
$IPTABLES -F -t nat
$IPTABLES -X
$IPTABLES -X -t nat

echo 1 > /proc/sys/net/ipv4/ip_forward

$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.0.0/24 -o $PROVIDER_IFACE -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -d ! 192.168.0.0/24 -o $INTERNET_IFACE -j MASQUERADE

P.S. Дистрибутив на шлюзе и компах внутренней сети: Arch Linux.

Возможно, проблема в MTU (MSS). Попробуйте добавить в iptables правило:

iptables -I FORWARD -m tcp -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1201:6000 -j TCPMSS --set-mss 1200

Ну и попробуйте вместо MASQUERADE задать SNAT.

mky ★★★★★
()
Ответ на: комментарий от sa22

>> Попингуй! постепенно увеличивая размер пакета...

Делал уже вплоть до "ping -s 65507" - все замечательно пингуется :((

home_user ★★★
() автор топика

В сторону MTU смотреть надо... поставь где-то 1420

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

Сделал немного по-другому:

$IPTABLES -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o $INTERNET_IFACE -j TCPMSS --clamp-mss-to-pmtu

После этого все заработало нормально. Спасибо за помощь! :)

home_user ★★★
() автор топика

> После экспериментов с NAT я несколько усложнил сценарий, поэтому в нём много лишнего, половину можно выкинуть (а вместо маскарада лучше SNAT):

(фрагмент стандартного сценария, если хочешь посмотреть всё, оставь e-mail или спроси по моему:dvch@inbox.ru) #----------peresylki trafika iz INET v LAN bez izmeneniy iptables -t nat -A POSTROUTING -o $LAN_IFACE -j ACCEPT #----------------------vmesto maskarada: iptables -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

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