nat (проблема)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

nat

Сообщение nadge »

В любом руководстве по настройке NAT посредством iptables сказано следующее:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


Но у меня это как-то странно работает (вернее - не работает). Например, браузер (хром, огнелис, wget) заходит на яндекс и гугл, но не заходит на хабр и вконтакт. Но пингуются все четыре сайта и телнетом соединяются, днс вроде тоже пашет. Если на сервере вместо nat запустить http-прокси - все нормально, сайты открываются.

Другими словами. Есть сервак, через который должно идти общение с "реальным миром". На серваке две сетевухи и один виртуальный интерфейс ppp0. eth2 смотрит в локалку (реально - пока просто на клиентскую машину), ppp0 - в инет. На серваке стоит debian etch со всеми обновлениями. Нат поднят вышеприведенной командой, плюс прописыванием форвардинга в sysctl.conf (как в мануалах пишут). Других настроек iptables не имеет.

Есть клиентская тачка с убунтой, от ее сетевухи к серверному eth0 протянут кабель и шлюзом прописан ip сервака. И на ней через нат не открывается часть сайтов. С сервака эти сайты открываются. Если запустить на серваке прокси, то чероез него с клиентской тачки эти сайты тоже открываются. А через нат почему-то нет.


Собственно вопрос: что за фигня? Вроде я трезвый, все перепроверил по 10 раз, всеравно не пашет.
Спасибо сказали:
Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: nat

Сообщение nadge »

ОК, перерыл я инет, везде nat делается цитатой выше. Вероятно, стабильный дебиан оказался не таким стабильным, попробую поставить ленни или сквиз. Хотя этч ставил специально ввиду маломощности сервера...

Пока проблема осталась: пинги идут, ДНСы ресолвятся, но по хттп пашут не все (меньшинство) сайты.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5497
ОС: Gentoo

Re: nat

Сообщение /dev/random »

А если добавить
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

iУведомление от модератора /dev/random
И ещё. Вы выбрали странное место для этого вопроса. Перемещено из "Прочих тематических бесед" в "Администрирование".
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: nat

Сообщение Alex2ndr »

Все верно - вы наткнулись на PMTU Black Hole.
О причине можно почитать здесь - http://www.opennet.ru/base/net/pppoe_mtu.txt.html
К сожалению
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
помогает не всегда. Иногда MSS еще меньше чем MTUисх_интерф - 40. В таких случаях можно использовать
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1300
где значение в --set-mss подбирается эмпирически(у меня с 1300 нормально пашет), путем последовательного уменьшения от 1460.
(я надеюсь когда-нибудь, когда будет время, написать программу, которая определяет этот mss экспериментально - уж очень часто всплывает эта проблема)
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: nat

Сообщение arkhnchul »

mtu уменьшить на локальном итерфейсе не?
Вероятно, стабильный дебиан оказался не таким стабильным, попробую поставить ленни или сквиз. Хотя этч ставил специально ввиду маломощности сервера...

это не дебиана проблема...
Losing is fun!
Спасибо сказали:
Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: nat

Сообщение nadge »

Спасибо большое! Никогда бы не догадался, что проблема в mtu.

Приравнял локальный mtu к mtu ppp0, через который идет инет, - вроде все работает. Вариант
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
(без изменения mtu) тоже работает, остановлюсь видимо на нем.

И ещё. Вы выбрали странное место для этого вопроса. Перемещено из "Прочих тематических бесед" в "Администрирование".

Дд, так будет логичнее. Видимо, меня после возни с фаерволом немного глючит :)

Спасибо сказали:
Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: nat

Сообщение nadge »

Потестировал, вроде все работает...

Кроме одного: с клиентских машин не открывается и не пингуется (!) сайт моего провайдера (корбина). С сервера же он пингуется и нормально открывается. Пинги с клиенских машин на остальные сайты идут нормально.

Мне не особо этот сайт дался, но с образовательной точки зрения интересно...


З.Ы. Конфиг фаервола на сервере такой:

Код: Выделить всё

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o ppp0 -j MASQUERADE

Политики по умолчанию разрешительные на всё.
Спасибо сказали:
little Jon
Сообщения: 212

Re: nat

Сообщение little Jon »

Для образовательных целей на сервере использовать tcpdump -i и смотреть оба интерфейса. В Вашем случае с этого наверно стоило начинать.


Linuxforum@conference.jabber.ru
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: nat

Сообщение Alex2ndr »

nadge писал(а):
26.02.2010 16:56
Спасибо большое! Никогда бы не догадался, что проблема в mtu.

Приравнял локальный mtu к mtu ppp0, через который идет инет, - вроде все работает. Вариант
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
(без изменения mtu) тоже работает, остановлюсь видимо на нем.

Проблема не в mtu(точнее не в вашем mtu) - я же дал статью - почитайте. Насчет --clamp-mss-to-pmtu - ну собственно оно и делает изменение mtu на MTUppp0 - 40.

nadge писал(а):
26.02.2010 19:49
Кроме одного: с клиентских машин не открывается и не пингуется (!) сайт моего провайдера (корбина). С сервера же он пингуется и нормально открывается. Пинги с клиенских машин на остальные сайты идут нормально.

Вероятная проблема - у вас NAT только для ppp0. Соответственно все пакеты от клиентов локалки выходят через ethN (не знаю какой у вас смотрит в сеть корбины) со своими собственными адресами. А сервак корбины о вашей сети 192.168.4.0/24 ничего не знает - вот и не приходят ответы. Попробуйте еще один нат развернуть - для ethN.
Спасибо сказали:
Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: nat

Сообщение nadge »

я же дал статью - почитайте

Так я читал... Наверно не очень внимательно, сейчас еще посмотрю.

ну собственно оно и делает изменение mtu на MTUppp0 - 40.

Имелось ввиду без ручного указания.

Вероятная проблема - у вас NAT только для ppp0. Соответственно все пакеты от клиентов локалки выходят через ethN (не знаю какой у вас смотрит в сеть корбины) со своими собственными адресами. А сервак корбины о вашей сети 192.168.4.0/24 ничего не знает - вот и не приходят ответы. Попробуйте еще один нат развернуть - для ethN.

Да, кажется проблема в этом. Я попробовал убрать указание целевого интерфейса (ppp0) из правил iptables и сервер корбины стал пинговаться. Так что да, надо будет прописать отдельные правила для корбиновской локалки.
Спасибо сказали: