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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Очень странный NAT  (Прочитано 1285 раз)

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

Оффлайн yakim1999

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
    • Запчасти для Suzuki
Очень странный NAT
« : 25 Июня 2009, 10:26:55 »
Имеется: Ubuntu 9.04 + 2 сетевухи на борту... (1-инет 2-локалка)... (все адреса - статика)
Нужно: прокинуть инет в локалку + squid (прозрачный) + squidGuard
Что сделано: настроен iptables, squid, squidGuard
Что в итоге: всё работает на связке iptables + squid + squidGuard. Как только отрубаю squid, 50% компов в локалке не открывает ни одного сайта, хотя любой ping в инет с этих ПК идёт без проблем... DNS провайдера на клиентах прописаны. iptables настроен верно, так как на 50% машин инет всё же есть... Парюсь уже 2-ую неделю...
Что хочу: Хочу помощи от знающих людей... HELP!!! Спасибо!


Оффлайн sht0rm

  • Старожил
  • *
  • Сообщений: 3397
    • Просмотр профиля
Re: Очень странный NAT
« Ответ #1 : 25 Июня 2009, 11:15:14 »
Красавец! Дельно все описал.
0 конфигов, 0 ошибок, 0конфигов глючащих машин и т.д.
Странно что уже 2 недели не можешь решить.

Оффлайн yakim1999

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
    • Запчасти для Suzuki
Re: Очень странный NAT
« Ответ #2 : 25 Июня 2009, 16:27:17 »
Выкладываю конфиг iptables... Логи глючащих машин выложить немогу, так как машины на Windows XP... Как я уже говорил на тех машинах где нет инета ping в инет есть, а страницы не отображаются в браузере... А когда squid запущен, инет есть везде, но это потому что я порты заворачинаю...

#!/bin/sh
# chkconfig: 2345 09 91
# description: My start script

INET_IP="10.105.27.4"
INET_IFACE="eth0"
INET_BROADCAST="10.105.27.255"


LAN_IP="192.168.1.6"
LAN_IP_RANGE="192.168.1.0/24"
LAN_IFACE="eth1"

LO_IFACE="lo"
LO_IP="127.0.0.1"
UNPRIPORTS="1024:65355"

IPTABLES="/sbin/iptables"

SQUID="3128"

SQV_HTTP="80"

OPENPORTS="20,21,25,23,43,70,79,80,110,210,443,3306,9100"
SSH="22"
smtpport="8025"
porthttp="80"
CLOSEPORTS="630,640,783,3310,10000"

/sbin/depmod -a


/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
/sbin/modprobe ipt_MASQUERADE


$IPTABLES -F
$IPTABLES -X


$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP


$IPTABLES -A INPUT -i $LO_IFACE -j ACCEPT
$IPTABLES -A FORWARD -i $LO_IFACE -j ACCEPT
$IPTABLES -A OUTPUT  -o $LO_IFACE -j ACCEPT
    

$IPTABLES -N bad_tcp_packets


$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets


$IPTABLES -A INPUT   -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -m state --state INVALID -j DROP


$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP


$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP


$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT


$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT

$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 2 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 2 -j ACCEPT
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -j DROP
$IPTABLES -A INPUT -p icmp -j ACCEPT
$IPTABLES -A FORWARD -p icmp -j ACCEPT
    
$IPTABLES -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 6000:6063 -j DROP --syn

$IPTABLES -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 113 -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 113 -j ACCEPT ! --syn

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets


$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT INPUT packet died: "

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT

$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "


$IPTABLES -t nat -A PREROUTING -i $LAN_IFACE -p tcp --dport $SQV_HTTP -j REDIRECT --to-ports $SQUID

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

echo "1" > /proc/sys/net/ipv4/ip_forward
« Последнее редактирование: 25 Июня 2009, 16:52:04 от yakim1999 »

Оффлайн Sam Stone

  • Старожил
  • *
  • Сообщений: 1131
    • Просмотр профиля
Re: Очень странный NAT
« Ответ #3 : 25 Июня 2009, 17:14:32 »
Банально конечно, но что если удалить заворачивание на сквид, как изменится ситуация?
Опять же банальность - там, где пропадает инет, прокся случаем не прописана в настройках браузера?
Jellyfish 6.5.0-45-generic
2690v4 64Gb

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Очень странный NAT
« Ответ #4 : 25 Июня 2009, 18:38:38 »
А если попробовать откорректировать значение MTU??

Оффлайн yakim1999

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
    • Запчасти для Suzuki
Re: Очень странный NAT
« Ответ #5 : 25 Июня 2009, 19:10:22 »
Банально конечно, но что если удалить заворачивание на сквид, как изменится ситуация?
Опять же банальность - там, где пропадает инет, прокся случаем не прописана в настройках браузера?
В том-то и дело что с прозрачным прокси все машины видят инет... Когда убираю "заворот" на прокси из iptables изменений никаких...
Прокси непрописан вообще нигде, так как прокси прозрачный...

Пользователь решил продолжить мысль 25 Июня 2009, 11:12:44:
А если попробовать откорректировать значение MTU??
Вот тут нужно подумать... Во-первых на каких интерфейсах его корректировать, и для чего??? По умолчанию MTU=1500 на всех ПК и серваке... К тому же ещё раз повторюсь что 50% машин в нете, а другая 50% пингует всё что угодно из инета, но браузеры ничего не открывает...

Пользователь решил продолжить мысль 26 Июня 2009, 06:14:38:
ммм... что-то молчат все... Неужели ни у кого небыло подобной ситуации???  :'(

Пользователь решил продолжить мысль 26 Июня 2009, 10:56:59:
Красавец! Дельно все описал.
0 конфигов, 0 ошибок, 0конфигов глючащих машин и т.д.
Странно что уже 2 недели не можешь решить.
Ну... конфиг выложил... а идей по поводу решения данной проблемы не так и много...  :-[
« Последнее редактирование: 26 Июня 2009, 10:56:59 от yakim1999 »

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Очень странный NAT
« Ответ #6 : 26 Июня 2009, 14:40:37 »
В моей практике случаи "Не открываются некоторые сайты" дважды решались
1) уменьшением MTU на шлюзе (PPTP)
2) корректировкой MTU на клиентах (Wimax)

iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o wimax0 -j TCPMSS --clamp-mss-to-pmtu

Это правило просто отключает бит DF - запрещающий флаг  фрагментированных пакетов

Оффлайн yakim1999

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
    • Запчасти для Suzuki
Re: Очень странный NAT
« Ответ #7 : 26 Июня 2009, 18:27:29 »
В моей практике случаи "Не открываются некоторые сайты" дважды решались
1) уменьшением MTU на шлюзе (PPTP)
2) корректировкой MTU на клиентах (Wimax)

iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o wimax0 -j TCPMSS --clamp-mss-to-pmtu

Это правило просто отключает бит DF - запрещающий флаг  фрагментированных пакетов


Респект за дельный совет... С Wimax у меня была подобрая проблемма, но решилась она немного подругому... А вот со шлюзом и локалкой попробую поиграться с MTU...

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Очень странный NAT
« Ответ #8 : 26 Июня 2009, 18:33:15 »
можно попробовать
что то типа такого
чистый MASQUERADE
#!/bin/bash

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

# Защита от Syn flood атаки
echo "1" > /proc/sys/net/ipv4/tcp_syncookies


iptables -F
iptables -t nat -F

#Установим политики по умолчанию для трафика, не соответствующего ни одному из правил
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

export LAN=eth1
export WAN=eth0

#Теперь закроем наши сервисы так, чтобы они могли работать только для LAN
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT

#(Необязательно) Разрешаем доступ к нашему ssh-серверу из интернета
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

#Отбросим все TCP/UDP-пакеты, обращающиеся к привилегированным портам
iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

#В конце добавляем правила для NAT
iptables -I FORWARD -i ${LAN} -d 192.168.5.0/255.255.255.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.5.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.5.0/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE


если добавить

iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.5.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.5.1:3128

получается transparent proxy

Оффлайн yakim1999

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
    • Запчасти для Suzuki
Re: Очень странный NAT
« Ответ #9 : 29 Июня 2009, 08:13:55 »
можно попробовать
что то типа такого
чистый MASQUERADE
получается transparent proxy
И за такую реализации тоже спасибо, но прозрачный прокси у меня через squid реализован, так как через squidGuard я режу нежелательные ресурсы... В среду обязательно поколупаюсь с MTU и отпишу что и как...

Оффлайн yakim1999

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
    • Запчасти для Suzuki
Re: Очень странный NAT
« Ответ #10 : 02 Июля 2009, 11:36:00 »
Итак, выяснилось что MTU тут совершенно непричём... Не хватало всего лишь 4 правила для очистки цепочек в самом начале конфига IPTABLES! Проблема решена - Всем спасибо за участие!

 

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