Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Проблема с NAT  (Прочитано 3733 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Modernox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Проблема с NAT
« : 25 Ноября 2010, 23:45:52 »
Здравствуйте!
Возникла такая проблема с Ubuntu Server 10.04.1:
Через месяц нормальной работы стал отваливаться dhcp, то есть компы получившие адреса работали нормально, при подключение новых - ip не выдавался. Решалось перезагрузкой сети и dhcp. Иногда были проблемы с раздачей интернета (на сервере работает, на клиентских нет).
В день x интернет раздаваться перестал совсем...
На сервере были установлены dnsmasq и dhcp3, появилась мысль, что они конфликтуют.
Был снесён dhcp3 и настроен dnsmasq так:
interface=eth1

listen-address=192.168.0.1

dhcp-range=192.168.0.10,192.168.0.200,255.255.255.0,4320h

dhcp-option=1,255.255.255.0 # маска
dhcp-option=2,15552000 # время аренды в секундах (6 месяцев)
dhcp-option=3,192.168.0.1 # шлюз по умолчанию
dhcp-option=42,192.168.0.1 # сервер времени
dhcp-option=44,192.168.0.1 # адрес WINS
dhcp-option=46,8 # шировещательный  + прямое обращение

dhcp-leasefile=/var/log/dnsmasq/dnsmasq.leases
dhcp-authoritative
log-dhcp

no-negcache
domain-needed
bogus-priv
domain=school
local=/school/
Такая схема проработала всего 20 минут.
Клиентские ПК адреса получают, dns работает, интернета нет.
Пришла мысль что проблема с nat (хотя эта прекрасно работал), перепроверил конфиг:
/etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 172.16.42.130
netmask 255.255.224.0
gateway 172.16.63.1

auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0

post-up /etc/network/nat
post-up /etc/network/vpn
/etc/network/nat
#!/bin/sh

# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT

# Включаем NAT
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
/etc/network/vpn
#!/bin/sh

pon vpn
И вот тут начинается самое интересное:
На сервере стоит squid (порт 3128), клиентские ПК без проблем соединяются на этот порт и лезут в инет. На одной машине случайно встретил skype, он соединяется на порт отличный от 80 и прекрасно работает. Пинг с клиентских ПК до сервера и сайтов в интернете проходит, dns функционирует. Однако, через nat страницы по-прежнему не открываются.

День потратил на различные вариации конфигов, удалял и опять устанавливал демоны, пробовал как на Linux, так и на Windows машинах, отключал полностью dhcp и dns, настраивал статические ip на клиентских ПК и пробовал получить страницу сразу по ip...
Ничего не вышло...
В итоге временно перебросил поток на squid, чтобы интернет был...

Опыта работы с linux системами мало, поэтому совсем запутался... Прошу помощи!
« Последнее редактирование: 25 Ноября 2010, 23:49:31 от Modernox »

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Проблема с NAT
« Ответ #1 : 25 Ноября 2010, 23:55:08 »
sudo iptables-save

Оффлайн Modernox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #2 : 26 Ноября 2010, 20:45:17 »
# Generated by iptables-save v1.4.4 on Fri Nov 26 19:08:52 2010
*nat
:PREROUTING ACCEPT [14:744]
:POSTROUTING ACCEPT [32:2348]
:OUTPUT ACCEPT [32:2348]
[9:414] -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
[0:0] -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Nov 26 19:08:52 2010
# Generated by iptables-save v1.4.4 on Fri Nov 26 19:08:52 2010
*filter
:INPUT ACCEPT [270:34346]
:FORWARD ACCEPT [57:10086]
:OUTPUT ACCEPT [315:63133]
[4:200] -A INPUT -i lo -j ACCEPT
[0:0] -A FORWARD -i eth1 -o eth0 -j ACCEPT
[75:39500] -A FORWARD -i eth1 -o ppp0 -j ACCEPT
COMMIT
# Completed on Fri Nov 26 19:08:52 2010

Возникает такое ощущение, что блокируется прохождение именно web трафика...
На сервере ещё установлен apache, mysql, nut и 3 squid'а...
И вот ещё что интересно - обычно при отсутствие интернета браузер выдаёт наподобие "страница не найдена или недоступна", а в данной ситуации просто висит (10 минут точно), словно ждёт загрузки.
Иногда, после перезагрузки сервера, на клиентском ПК открывается одна/половина страницы и сразу всё глохнет...
« Последнее редактирование: 26 Ноября 2010, 20:47:26 от Modernox »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #3 : 26 Ноября 2010, 23:02:01 »
Из вышеизложенного видно, что юзается PPPoE, и как следствие имеет быть место разница MTU между интерфейсами eth1 и ppp0. И не было так страшно, но если надо передать большой пакет (например много cookies в http запросе), то он не пролезет, т.к. у ppp0 mtu меньше, чем у eth1. На это отправителю отсылается icmp уведомление, что пакет надо поменьше послать и указывается новый размер. Но особо зафайрволенные клиенты могут резать icmp трафик и как следствие иметь нарушенный процесс pmtu discovery (если он вообще не отключен). На это есть такой воркараунд:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtuно он поможет только для TCP. По хорошему при данной проблеме нужно налаживать клиентов, чтоб на них pmtu discovery проходил без проблем.


Оффлайн Modernox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #4 : 26 Ноября 2010, 23:23:53 »
Из вышеизложенного видно, что юзается PPPoE, и как следствие имеет быть место разница MTU между интерфейсами eth1 и ppp0. И не было так страшно, но если надо передать большой пакет (например много cookies в http запросе), то он не пролезет, т.к. у ppp0 mtu меньше, чем у eth1. На это отправителю отсылается icmp уведомление, что пакет надо поменьше послать и указывается новый размер. Но особо зафайрволенные клиенты могут резать icmp трафик и как следствие иметь нарушенный процесс pmtu discovery (если он вообще не отключен). На это есть такой воркараунд:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtuно он поможет только для TCP. По хорошему при данной проблеме нужно налаживать клиентов, чтоб на них pmtu discovery проходил без проблем.

Спасибо за информацию! Вскоре попробую и отпишусь о результатах. Только соединение не PPPoE, а PPTP.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #5 : 26 Ноября 2010, 23:32:16 »
Тогда отпадает. У PPtP mtu=1500, как и у eth1

Пользователь решил продолжить мысль 26 Ноября 2010, 23:34:08:
Хотя может быть иначе. ifconfig -a чего рапортует?
« Последнее редактирование: 26 Ноября 2010, 23:34:08 от Mam(O)n »

Оффлайн Modernox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #6 : 27 Ноября 2010, 00:13:54 »
ifconfig -a чего рапортует?

Принесу результаты завтра, а может быть это как-то связано с приложениями или службами (например apache) ? Могут они блокировать передачу данных? И ещё - установлен gdm, gnome и как результат office, wine, java. Они не могут влиять?

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #7 : 27 Ноября 2010, 00:16:12 »
Нет, они не могут влиять.

Пользователь решил продолжить мысль 27 Ноября 2010, 00:20:16:
Я еще вот вижу, что у тебя не по стандартному способу интерфейс поднимается, а накручены какие-то скрипты. Может они у тебя стартуют по нескольку раз и рабочий туннель не встаёт как ppp0, а под другим именем? Тогда можно объяснить то, что через сквид всё работает...
« Последнее редактирование: 27 Ноября 2010, 00:20:16 от Mam(O)n »

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #8 : 27 Ноября 2010, 00:32:20 »
Тогда отпадает. У PPtP mtu=1500, как и у eth1

Хотя может быть иначе.

У меня в свое время это выравнивание "вылечило" сайт google.ru, который вдуг перестал открываться (все остальное работало). В конфиге pptp стоит mtu=1460 (скрипту от Билайна так хотелось, да и на многих "заборах" такая рекомендация написана).

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #9 : 27 Ноября 2010, 00:47:39 »
Ну да всё возможно. Я с pptp осбобо не сталкивался, а у тех, которые крутил все имели mtu=1500. А то, что mtu понижать на pptp надо это правильно, но в дефолтном варианте этого я что-то не заметил.

Ну а пока ждём ifconfig, который расставит все точки над й.

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Проблема с NAT
« Ответ #10 : 27 Ноября 2010, 01:10:16 »
http://help.internet.beeline.ru/internet/techinfo/ - забор, с которого имеет смысл начать, в случае с beeline

MTU/MSS можно тут посмотреть:
http://www.speedguide.net/analyzer.php

или
$ sudo tracepath whitehouse.gov || sudo aptitude install iputils-tracepath
с машинки за шлюзом

Оффлайн Modernox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #11 : 27 Ноября 2010, 23:18:57 »
eth0      Link encap:Ethernet  HWaddr 00:22:15:d6:72:9d 
          inet addr:172.16.42.130  Bcast:172.16.63.255  Mask:255.255.224.0
          inet6 addr: fe80::222:15ff:fed6:729d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4714 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2682 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1825642 (1.8 MB)  TX bytes:431242 (431.2 KB)
          Interrupt:19 Base address:0xd000

eth1      Link encap:Ethernet  HWaddr 00:1d:60:5c:9e:92 
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21d:60ff:fe5c:9e92/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:229 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25385 (25.3 KB)  TX bytes:16010 (16.0 KB)
          Interrupt:18

lo        Link encap:Локальная петля (Loopback) 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:239 errors:0 dropped:0 overruns:0 frame:0
          TX packets:239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:105100 (105.1 KB)  TX bytes:105100 (105.1 KB)

ppp0      Link encap:Протокол PPP (Point-to-Point Protocol) 
          inet addr:172.17.42.130  P-t-P:172.17.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1436  Metric:1
          RX packets:1901 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2042 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:1545692 (1.5 MB)  TX bytes:283772 (283.7 KB)

Пытался принудительно задать MTU 1500, ничего не вышло - так же пишет MTU:1436, пробывал поставить 1400 и 1000 - значение изменилось, но работать интернет так и не стал.
Вот ещё что интересное произошло: на домашнем ПК у меня белый ip и доступ к web через интернет открыт, с клиентского компьютера открыл сайт по ip, страницы грузит, по ссылкам бегает, медленно, но работает... Пытался открыть нормальные сайты по ip - не получается...

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #12 : 28 Ноября 2010, 01:21:31 »
Понятно, значит разница всё таки есть. Тогда прописывай то правило. И покажи навсякий sudo iptables-save

Оффлайн Modernox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #13 : 01 Декабря 2010, 23:33:52 »
Mam(O)n, Огромное спасибо! :)
Интернет заработал сразу после добавление той строки в iptables. Я, если честно, даже не ожидал такого...
А можете пояснить как именно эта строчка работает и в чём была проблема?
Самое интересное, что я пересмотрел десяток инструкций в интернете по настройки сети и nat, таких строк не встречал...

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Проблема с NAT
« Ответ #14 : 02 Декабря 2010, 00:23:43 »
В чем проблема я описал в том же посте, где и привёл эту команду. А это правило подменяет значения поля MSS у SYN пакета протокола TCP таким образом, чтобы дальнейшие пакеты в рамках данной TCP сессии имели размер не более размера MTU на интерфейсе назначения (согласно таблице маршрутизации)... Только я еще раз повторюсь, данный костыль сработает только для TCP.

 

Страница сгенерирована за 0.048 секунд. Запросов: 25.